Gopher協議的安全利用

利用Gopher協議可以攻擊內網的Redis、Mysql、FastCGI、FTP等,也可以發送GET、POST請求,這可以拓寬SSRF的攻擊面。通過構建特定的網絡請求,可以在內網環境中執行一些特定的操作,例如獲取API Key或進行數據庫探測等。

構建攻擊環境

在進行Gopher協議的安全測試時,通常需要搭建一個測試環境。一般使用兩臺虛擬機,一臺運行CentOS,另一臺運行Ubuntu。CentOS用于發起端口監聽,而Ubuntu用于發起請求。

在CentOS上配置監聽

首先,需要確保CentOS上安裝了nc,如果沒有可以通過以下命令安裝:

apt-get install -y nc

接著,查看CentOS的IP地址,并確保Ubuntu可以ping通。然后啟動監聽,監聽特定端口,例如9527端口:

nc -lp 9527

在Ubuntu上發起請求

在Ubuntu上,通過curl命令發起Gopher請求:

curl gopher://:9527/_abcd

在CentOS端,會收到abcd的響應,因為Gopher協議會吞掉第一個字符,所以需要在請求前添加一個下劃線:

防火墻配置注意事項

如果請求不成功,可能是由于防火墻策略的問題。可以通過以下命令查看并關閉REJECT規則:

iptables -L INPUT --line-numbers
iptables -D INPUT 11

其中11為REJECT的ID。

GET請求與Gopher協議

使用Gopher協議進行GET請求需要特定的環境配置。一般情況下,CentOS發起端口監聽,Ubuntu發起請求,前提是兩者可以互相ping通,并關閉防火墻中的ICMP協議。

Docker環境配置

在CentOS上,開啟Docker并啟動LAMP環境(設置根目錄為app):

docker run -d --name=lamp -p 80:80 -p 3306:3306 -v /app:/app docker.io/mattrayner/lamp

進入app目錄,創建一個PHP文件:

touch get.php

在get.php中輸入以下代碼:

發起GET請求

CentOS啟動監聽后,在Ubuntu上書寫一個GET的HTTP包,并進行URL編碼。需要注意的是將回車換行替換為%0d%0a

GET /ssrf/get.php?name=hsj HTTP/1.1
Host:172.16.129.74

編碼后:

GET%20%2Fssrf%2Fget.php%3Fname%3Dhsj%20HTTP%2F1.1%0d%0aHost%3A172.16.129.74%0d%0a

權限問題解決

在執行請求時,可能會遇到權限不足的問題。此時,可以通過以下步驟解決:

  1. 關閉LAMP:
docker stop lamp

  1. 刪除容器:
docker rm lamp

  1. 重新掛載到root/www目錄:
docker run -d -p 80:80 -v /root/www:/app --name ssrf docker.io/mattrayner/lamp

  1. 在www目錄下創建get.php文件,并寫入代碼。

POST請求與Gopher協議

與GET請求類似,POST請求也需要在特定的環境下進行配置。創建post.php文件并插入以下代碼:

構造POST數據包

構造POST請求的數據包如下:

POST /post.php HTTP/1.1
host:172.16.129.74
Content-Type:application/x-www-form-urlencoded
Content-Length:8

name=HXB

URL編碼后:

POST%20%2Fpost.php%20HTTP%2F1.1%0d%0ahost%3A172.16.129.74%0d%0aContent-Type%3Aapplication%2Fx-www-form-urlencoded%0d%0aContent-Length%3A8%0d%0a%0d%0aname%3DHXB%0d%0a

通過curl命令發起請求:

curl gopher://172.16.129.74:80/_POST%20%2Fpost.php%20HTTP%2F1.1%0d%0ahost%3A172.16.129.74%0d%0aContent-Type%3Aapplication%2Fx-www-form-urlencoded%0d%0aContent-Length%3A8%0d%0a%0d%0aname%3DHXB%0d%0a

Gopher協議的現代應用與挑戰

盡管Gopher協議在現代互聯網中的使用已經減少,但其簡單的設計和特定的應用場景仍然為其保留了一席之地。在某些情況下,Gopher協議可以作為一種較為隱蔽的通信方式,在不被注意的情況下完成數據傳輸和信息獲取。

然而,隨著網絡安全的不斷加強,Gopher協議的使用也面臨著新的挑戰。例如,現代網絡防火墻和入侵檢測系統可能會對Gopher協議的流量進行嚴格的監控和過濾。因此,在實際應用中,需要對其進行更為細致的配置和測試,確保其能夠在特定環境下有效運行。

總結

Gopher協議作為一種早期的互聯網協議,盡管在現代應用中使用較少,但其仍具有一定的技術價值。通過合理的配置和使用,Gopher協議可以在特定的網絡環境中發揮獨特的作用,尤其是在信息獲取和數據傳輸方面。本文通過實際案例和代碼演示,展示了如何利用Gopher協議進行GET和POST請求,同時探討了其在現代網絡中的應用與挑戰。

FAQ

  1. 問:Gopher協議在現代互聯網中的主要用途是什么?

  2. 問:如何在Gopher協議中實現GET請求?

  3. 問:Gopher協議與HTTP協議有何區別?

  4. 問:在Gopher協議中遇到權限問題如何解決?

  5. 問:Gopher協議的安全利用有哪些注意事項?

上一篇:

DALL·E 3 API 文生圖的全面解析

下一篇:

Qwen2.5 API 申請與使用指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費