0x01 使用seay源代碼審計系統進行審計
掃描到了很多個可疑漏洞,不過工具都有一定的誤報,下面我們就逐個進行驗證
0x02 /ad_js.php SQL注入漏洞
查看源碼,我們發現程序通過GET方法接收ad_id的值,然后通過trim函數去除首尾的空白字符,並沒有做其他操作,直接代入了SQL語句。
追蹤函數getone(),代碼在mysql.class.php中,直接執行了sql語句。
因此,我們直接可以通過聯合查詢來進行注入:
0x03 /user.php 文件包含漏洞
查看源碼,我們發現當$act=='pay'時,將執行include 'include/payment/'.$_POST['pay']."/index.php";
並且$_POST['pay']的值沒有經過處理。
這樣我們就可以構造payload,使其包含惡意文件,比如在phpstudy根目錄下新建一個index.php文件
通過目錄穿越,即可包含該文件:
當然,也可以利用文件路徑長度截斷(php版本小於等於5.2) ,如用字符.或者/.或者./來截斷,造成文件包含漏洞,這樣可以包含任意文件。
系統文件路徑長度限制:
Windows 259個字節
Linux 4096個字節
0x04 /user.php SQL注入漏洞
這個注入和上邊的ad_js.php sql注入原理和操作都相差不大,就不對其分析了。
0x05 /user.php XSS漏洞
發現email是直接post進數據庫的,未對其做任何過濾從而引起的xss,但由於其他的,例如用戶名有長度驗證所以不能xss.