如何利用FFUF和Sqlmap發現多處SQL注入漏洞
聲明:文章中涉及的程序(方法)可能帶有攻擊性,僅供安全研究與教學之用,讀者將其信息做其他用途,由用戶承擔全部法律及連帶責任,文章作者不承擔任何法律及連帶責任。 |
背景介紹:
今天的故事來自一位叫Mahmoud Youssef的白帽子,他的職業是一名網絡安全研究員,同時也是一名漏洞賞金獵人。為了安全起見,目標網站統一使用redacted.org進行了替代。
枚舉階段:
首先使用waybackurls工具對目標網站的Web頁面進行歸檔,通過這些頁面發現了不少節點,而這些頁面中也夾雜了許多PHP文件,也許這其中就會有sql注入,那么我們來對這些頁面進行一下過濾:
waybackurls https://redacted.org/ | uro | grep “.php” > php-files.txt
OK,成功篩選出PHP文件,他們看起來大概是下面這樣:

這些PHP文件名看起來很有趣,也許它們可以幫我找到一些參數,接下來讓我們創建一個參數字典,以便后面使用:
獲取參數:
首先,我們需要使用grep篩選出"get"字符串并刪除"get"之前的內容,并使其唯一以避免重復:
$ cat php-files.txt| grep -i get | sed 's/.*.get//' | sort -u

很好!另外我們應該刪除.php后綴來創建這個參數字典,所以只需要使用命令"cut -f1 -d"即可:

OK,基本差不多完成了,但是我們注意到所有的參數基本都由2個單詞組成,我們并不知道它們中哪一個是參數,所以還要對它們進行一下拆分:
sed 's/[A-Z]\+/&/g'

很好!但此時白帽小哥認為大多數參數應該都是小寫的,所以還要將大寫的參數轉換為小寫才行,同時要保留大寫和小寫參數兩個字典:

現在有了這兩個參數列表,讓我們使用FFUF進行Fuzz吧,先使用下面的命令對小寫參數進行Fuzz:
ffuf -w lowercase-parameters.txt -u "https://redacted.org/searchProgressCommitment.php?FUZZ=5"
遺憾的是,一無所獲。

在這之后白帽小哥很沮喪,但沒多久他有了另一個想法,把請求方式改成POST會怎樣呢?想到這兒,白帽小哥火速登錄到它的VPS,說干就干!
ffuf -w lowercase-parameters.txt -X POST -d "FUZZ=5" -u "https://redacted.org/searchProgressCommitment.php"
Bingo!白帽小哥成功在commitment 和 id 兩個參數中得到了想要的結果。

好的,接下來用Burp攔截請求,添加參數,并將其保存為txt文件,使用
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

第1處SQL注入漏洞


第2處SQL注入漏洞(ws_delComment.php,注入參數id)

第3處SQL注入漏洞(getTargets.php,注入參數goal)

第4處SQL注入漏洞(mailing_lists.php,注入參數list)
利用這種辦法,白帽小哥一共收獲了4處SQL注入漏洞。