Web攻防—SSRF服務端請求偽造Gopher偽協議無回顯利用

前言

重學Top10的第二篇,希望各位大佬不要見笑。

SSRF原理

SSRF又叫服務端請求偽造,是一種由服務端發起的惡意請求,SSRF發生在應用程序允許攻擊者誘使服務器向任意域或資源發送未經授權的請求時。服務器充當代理,執行攻擊者構造的惡意請求,可能導致內部系統暴露或敏感數據泄露。

舉個例子,比如這里的百度圖片可以通過輸入的圖片的鏈接去獲取相對應圖片,那么假如我把圖片鏈接換成http:\\127.0.0.1:80那么服務器就是去請求它本地的80端口,簡單來說有一些網站功能可以去訪問指定ULR的資源,而這些URL一旦變成內網地址或者本地地址,從而可以進行本地或者內網服務探測,這就是SSRF漏洞。

?這里是我本地寫的一個遠程圖片加載器,可以通過圖片地址加載圖片。

然后把圖片地址換為http:127.0.0.1:80可以看到是能成功探取到80端口的服務的,因為我80端口沒有部署東西,所以顯示403了。

常見偽協議

http://? Web常見訪問,如http://127.0.0.1、http://127.0.0.1:8080等

file:///? 從文件系統中獲取文件內容,如,file:///etc/passwd、file:///D:/1.txt

dict://? 字典服務器協議,訪問字典資源,如,dict:///ip:6379/info

sftp:// SSH文件傳輸協議或安全文件傳輸協議

ldap:// 輕量級目錄訪問協議

tftp:// 簡單文件傳輸協議

gopher:// (常用)分布式文檔傳遞服務,可使用gopherus生成payload 有部分服務是http協議不支持通訊的,那么可以用gopher來進行通訊(如mysql,redis服務等)應用:漏洞利用 或 信息收集 通訊相關服務的時候 工具:Gopherus

SSRF繞過

-限制為必須有http://www.xxx.com 域名
采用http基本身份認證的方式繞過,即@
http://www.xxx.com@www.xxyy.com

-限制請求IP不為內網地址
當不允許ip為內網地址時:
(1)采取短網址繞過? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)采取域名解析
(3)采取進制轉換
(4)采取3XX重定向

白盒審計

我們來看一下CTF中這種白盒審計中,怎么利用以及繞過呢。

第一題沒啥過濾,直接讀取即可。

第二題可以看到過濾了127.0.0和localhost。

直接把127.0.0.1轉換為16進制的IP地址即可。

接下來這個過濾了1,0,localhost,那么再轉16進制肯定是不行了。

我們可以生產一個短鏈接來代替http://127.0.0.1/flag.php。

但是不知道為啥我這里啥也沒有,如果被過濾掉了會輸出hacker的,估計是解析失敗了。

還有一種方法是往域名里面添加個A記錄,指向127.0.0.1,那么服務器在解析域名的時候其實就是訪問了127.0.0.1。(由于自己沒有域名,所以圖片網上找的)

這一關限制host長度小于等于5,直接用127.1代替127.0.0.1即可。

這一關限制IP長度為3,直接用http://0/flag.php即可。

這題和上面就不太一樣了,先是解析我們的IP并且輸出,接著做如下判斷

  • ILTER_VALIDATE_IP??:驗證是否為合法IP格式
  • ??FILTER_FLAG_NO_PRIV_RANGE??:排除私有IP范圍(如10.0.0.0/8192.168.0.0/16
  • ??FILTER_FLAG_NO_RES_RANGE??:排除保留IP范圍(如127.0.0.0/8169.254.0.0/16

也就是說無論你怎么變,只要解析出來的IP是127.0.0.1都不行,那么綁定域名和進制轉換這種肯定不行了,因為你解析出來的IP都是127.0.0.1。那么此時我們可以用到重定向這個方法,把下面這個代碼放到公網服務器上面,然后去請求它,當這個腳本被請求了就會自動跳到127.0.0.1,從而實現繞過。

<?php
header("Location:http://127.0.0.1/flag.php"); 
其作用是:當執行該腳本時,會直接跳轉到對應的網址,即Location: 后面的網址。

同時我們也可以通過生成一個短鏈接來繞過,原理是一樣的。

這題可以看到url中必須要含有ctf,show這兩個東西才行。

直接用/ctf.@127.0.0.1/flag.php#show進行繞過,#符號后面的內容不解析,這里我猜測@前面的也不解析。

這一關題目提示了是mysql服務。

可以看到請求的參數中有url類型的,我們利用Gopher協議打一波。

可以利用gopherus這項目,生產一個利用連,這里我選擇寫入一句話代碼。

這里記得把下面的內容進行URL編碼一下,不然傳過去解碼就沒了。

執行之后成功上傳。

這題就是打redis和mysql其實差不多的。

運行腳本,類型我們選擇PHPShell,網站路徑的話一般都是默認即可,寫上一句話木馬就會生成一個利用鏈條,和上面一樣gopher://127.0.0.1:6379/_后面的進行URL編碼。

python gopherus.py --exploit redis

黑盒審計

黑盒審計的話找可能存在SSRF漏洞的功能點。

-業務功能點
1.社交分享功能:獲取超鏈接的標題等內容進行顯示
2.轉碼服務:通過URL地址把原地址的網頁內容調優使其適合手機屏幕瀏覽
3.在線翻譯:給網址翻譯對應網頁的內容
4.圖片加載/下載:例如富文本編輯器中的點擊下載圖片到本地;通過URL地址加載或下載圖片
5.圖片/文章收藏功能:主要其會取URL地址中title以及文本的內容作為顯示以求一個好的用具體驗
6.云服務廠商:它會遠程執行一些命令來判斷網站是否存活等,所以如果可以捕獲相應的信息,就可以進行ssrf測試
7.網站采集,網站抓取的地方:一些網站會針對你輸入的url進行一些信息采集工作
8.數據庫內置功能:數據庫的比如mongodb的copyDatabase函數
9.郵件系統:比如接收郵件服務器地址
10.編碼處理, 屬性信息處理,文件處理:比如ffpmg,ImageMagick,docx,pdf,xml處理器等
11.未公開的api實現以及其他擴展調用URL的功能:可以利用google 語法加上這些關鍵字去尋找SSRF漏洞

像一些PDF轉換或者PDF在線編輯的地方也會存在,添加個空白的PDF,然后寫上JS代碼。

點擊保存應用,在dnslog這里可以看到記錄。

SSRF無回顯

還有一個就是無回顯問題,這個其實也簡單,我們獲取一個dnslog地址通過SSRF去請求這個地址看其有無記錄不就可以了,還有一個方法就是公網服務器監聽一個端口,然后通過SSRF去請求這個端口,看看有無被請求到即可判斷是否存在SSRF。

總結

最后,以上僅為個人的拙見,如何有不對的地方,歡迎各位師傅指正與補充,有興趣的師傅可以一起交流學習。

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

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

相關文章

Hibernate:讓對象與數據庫無縫對話的全自動ORM框架

一、為什么需要全自動ORM&#xff1f; 在手動編寫SQL的時代&#xff0c;開發者需要在Java代碼和數據庫表之間來回切換&#xff1a; // Java對象 public class User {private Long id;private String name;// getters and setters }// SQL語句 SELECT * FROM user WHERE id ?…

C語言超詳細指針知識(一)

通過前面一段時間C語言的學習&#xff0c;我們了解了數組&#xff0c;函數&#xff0c;操作符等的相關知識&#xff0c;今天我們將要開始進行指針的學習&#xff0c;這是C語言中較難掌握的一個部分&#xff0c;一定要認真學習&#xff01;&#xff01;&#xff01; 1.內存與地址…

程序化廣告行業(70/89):ABTester系統助力落地頁優化實踐

程序化廣告行業&#xff08;70/89&#xff09;&#xff1a;ABTester系統助力落地頁優化實踐 在程序化廣告領域摸爬滾打多年&#xff0c;深知持續學習和知識共享的重要性。寫這篇博客&#xff0c;就是希望能和大家一起深入探索程序化廣告行業&#xff0c;共同學習、共同進步。今…

項目管理(高軟56)

系列文章目錄 項目管理 文章目錄 系列文章目錄前言一、進度管理二、配置管理三、質量四、風險管理五、真題總結 前言 本節主要講項目管理知識&#xff0c;這些知識聽的有點意思啊。對于技術人想創業&#xff0c;單干的都很有必要聽聽。 一、進度管理 二、配置管理 三、質量 四…

常見的后綴名

.exe .exe&#xff08;“executable”&#xff08;可執行的&#xff09;&#xff09;是 Windows 操作系統中最常見的可執行文件擴展名。此類文件包含了計算機能夠直接運行的機器碼指令。當用戶雙擊 .exe 文件時&#xff0c;操作系統會讀取其中的指令并執行相應的程序或任務。…

XILINX DDR3專題---(1)IP核時鐘框架介紹

1.什么是Reference Clock&#xff0c;這個時鐘一定是200MHz嗎&#xff1f; 2.為什么APP_DATA是128bit&#xff0c;怎么算出來的&#xff1f; 3.APP &#xff1a;MEM的比值一定是1:4嗎&#xff1f; 4.NO BUFFER是什么意思&#xff1f; 5.什么情況下Reference Clock的時鐘源可…

Doris 安裝部署、實際應用及優化實踐:對比 ClickHouse 的深度解析

在實時分析、報表系統以及高并發 OLAP 查詢等場景中&#xff0c;列式存儲數據庫因其卓越的查詢性能逐漸成為主流。Doris 和 ClickHouse 是近年來最受歡迎的兩款開源 OLAP 引擎&#xff0c;本文將系統介紹 Doris 的安裝部署、應用場景及優化實踐&#xff0c;并與 ClickHouse 做一…

OracleLinuxR5U5系統重啟后啟動數據庫oracle23ai

1、切換到oracle用戶 [rootOracleLinux-R9-U5 ~]# su oracle2、查看oracle是否配置了ORACLE_SID [oracleOracleLinux-R9-U5 root]$ cd ~ [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile3、輸出內容如下&#xff1a; [oracleOracleLinux-R9-U5 ~]$ cat .bash_profile # .ba…

【正點原子】STM32MP257 同構多核架構下的 ADC 電壓采集與處理應用開發實戰

在嵌入式系統中&#xff0c;ADC模擬電壓的讀取是常見的需求。如何高效、并發、且可控地完成數據采集與處理&#xff1f;本篇文章通過雙線程分別綁定在 Linux 系統的不同 CPU 核心上&#xff0c;采集 /sys/bus/iio 接口的 ADC 原始值與縮放系數 scale&#xff0c;并在另一個核上…

電商用戶購物行為分析:基于K-Means聚類與分類驗證的完整流程

隨著電商行業的快速發展,用戶行為分析成為企業優化營銷策略、提升用戶體驗的重要手段。通過分析用戶的購物行為數據,企業可以挖掘出用戶群體的消費特征和行為模式,從而制定更加精準的營銷策略。本文將詳細介紹一個基于Python實現的電商用戶購物行為分析系統,涵蓋數據預處理…

AMGCL庫的Backends及使用示例

AMGCL庫的Backends及使用示例 AMGCL是一個用于解決大型稀疏線性方程組的C庫&#xff0c;它提供了多種后端(backends)實現&#xff0c;允許用戶根據不同的硬件和性能需求選擇合適的計算后端。 AMGCL支持的主要Backends 內置Backends: builtin - 默認的純C實現block - 支持塊狀…

Express中間件(Middleware)詳解:從零開始掌握(3)

實用中間件模式25例 1. 基礎增強模式 請求屬性擴展 function extendRequest() {return (req, res, next) > {req.getClientLanguage () > {return req.headers[accept-language]?.split(,)[0] || en;};next();}; } 響應時間頭 function responseTime() {return (r…

05--MQTT物聯網協議

一、MQTT的概念 MQTT 協議快速入門 2025&#xff1a;基礎知識和實用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級、基于發布-訂閱模式的消息傳輸協議&#xff0c;適用于資源受限的設備和低帶寬、高延遲或不穩定的網絡環境。它…

數據結構與算法——鏈表OJ題詳解(2)

文章目錄 一、前言二、OJ續享2.1相交鏈表2.2環形鏈表12.2環形鏈表2 三、總結 一、前言 哦了兄弟們&#xff0c;咱們上次在詳解鏈表OJ題的時候&#xff0c;有一部分OJ題呢up并沒有整理完&#xff0c;這一個星期呢&#xff0c;up也是在不斷的學習并且沉淀著&#xff0c;也是終于…

SQL Server AlwaysOn (SQL 查詢數據詳解及監控用途)

修正后的完整查詢 SELECT ar.replica_server_name AS [副本名稱],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [數據庫名稱],dbr.database_state_desc AS [數據庫狀態],dbr.synchronization_state_desc AS [同步狀態],dbr.synchronization_health_d…

力扣熱題100刷題day63|49.字母異位詞分組

目錄 一、哈希表相關理論 二、思路 核心思路 三、相關題目 四、總結 一、哈希表相關理論 代碼隨想錄刷題day15|&#xff08;哈希表篇&#xff09;242.有效的字母異位詞、383.贖金信-CSDN博客 二、思路 首先&#xff0c;創建一個map集合&#xff0c;遍歷字符串數組&…

愛普生可編程晶振SG8201CJ和SG8200CJ在胃鏡機器人發揮重要作用

在醫療機器人技術高速發展的今天&#xff0c;胃鏡機器人作為胃腸道疾病診斷與治療的創新設備&#xff0c;正逐漸改變傳統診療模式。其復雜精密的系統需要精準的時間同步與穩定的信號輸出&#xff0c;胃鏡機器人是一種先進的醫療設備&#xff0c;用于無創性地檢查胃部疾病。與傳…

Ubuntu22環境下,Docker部署阿里FunASR的gpu版本

番外: 隨著deepseek的爆火,人工智能相關的開發變得異常火爆,相關的大模型開發很常見的agent智能體需要ASR語音識別的功能,阿里開源的FunASR幾乎是把一個商業的項目放給我們使用了。那么我們項目中的生產環境怎么部署gpu版本的語音識別服務呢?經過跟deepseek的一上午的極限…

圖解Java設計模式

1、設計模式面試題 2、設計模式的重要性 3、7大設計原則介紹 3.1、單一職責原則

transformers的 pipeline是什么:將模型加載、數據預處理、推理等步驟進行了封裝

transformers的 pipeline是什么:將模型加載、數據預處理、推理等步驟進行了封裝 pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=50 )pipeline :這是 transformers 庫中一個非常實用的工具函數。它可以基于預訓練模型快速構…