寫在前面
一次測驗中遇到一個有趣的站點,寫出來與君分享,
摸點階段
打開站點,php+mysql的常見組合,FreeBSD作為其后端服務器,網站功能簡單,只有幾個登錄口存在動態傳參,著實簡陋,萬能密碼嘗試無果后直接祭出dirsearch,

得到一個info.php(phpinfo)外加一個phpmyadmin,
打開phpmyadmin發現是401認證登錄,并且版本非常低,為2.6.1,這個版本存在一個繞過登錄漏洞:用戶名:localhost'@'@',密碼空,測驗了下確實可以登錄,但是權限太低什么都干不了,雞肋,
簡單手工嘗試弱口令,直接以用戶名root密碼空登錄成功,(一開始以為是漏洞,后來發現密碼真的是空,手動汗顏=.=)

到這里基本上算獲得了半個webshell了,運氣著實不錯,phpmyadmin+root權限的話可以直接寫shell或者日志getshell,但是還差個絕對路徑,回到站點首頁瘋狂嘗試后沒能得到絕對路徑,(當局者迷,前面有個phpinfo這里忘記利用了)
于是換個思路,從資料庫中找到網站管理員賬號密碼,登進后臺,找個上傳的地方直接傳馬,沒有任何過濾,因為直接傳的是哥斯拉加密的shell,所以不確定有沒有waf,然后就shell了,程序沒有一絲波瀾,過于簡單就不貼圖了,(不要問我后臺在哪,首頁“管理區”幾個大字)
代碼審計
簡單搜了一下網上有幾套一樣的模板,于是決定簡單審一下這套代碼,
快速審計的話無非就是全域搜幾個關鍵字,比如
upload、fwrite、eval、system、select、insert、file_put_content等等,然后代碼里面分析一下有沒有被過濾,如果沒有再嘗試構造陳述句或者資料包來驗證,
把原始碼打包下回來,本地解壓,用編輯器打開檔案夾,然后全域搜關鍵字,發現以下幾個漏洞:
1.任意檔案讀取導致的getshell
先上代碼:

表面上看上去這里有個任意檔案上傳,但是目錄不可控,上傳的檔案都到tmp目錄下了,沒啥大用,仔細一看,代碼里發現使用了readfile函式,這個函式基本等于命令列的cat和ls,讀一個/etc/passwd,構造發包測驗如下圖:

成功讀出來了,那么思路也就有了,直接讀取mysql的組態檔,然后登錄phpmyadmin,戰斗就結束了,
2.sql注入
簡單看了一下,這套原始碼的注入非常多,但是基本都是登錄后的功能,用處不大,唯一一處登錄前的注入如下:

$ID沒經過過濾直接傳進sql陳述句執行,但是測驗的時候發現有waf,此洞G,
寫在最后
后利用任意檔案讀取在其他站點也復現成功,代碼比較有年代感,漏洞應該比較多,時間關系沒有深挖,留給下一個有緣人吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/540136.html
標籤:其他
下一篇:selenium三大等待
