gopher協議在SSRF漏洞中的作用

2022-06-19 10:06:09 字數 2601 閱讀 9815

1、什麼是gopher協議?

2、如何使用gopher協議**shell?

3、在ssrf中如何使用gopher協議**shell?

一、什麼是gopher協議?

定義:gopher是internet上乙個非常有名的資訊查詢系統,它將internet上的檔案組織成某種索引,很方便地將使用者從internet的一處帶到另一處。在www出現之前,gopher是internet上最主要的資訊檢索工具,gopher站點也是最主要的站點,使用tcp70埠。但在www出現後,gopher失去了昔日的輝煌。現在它基本過時,人們很少再使用它;

gopher協議支援發出get、post請求:可以先截獲get請求包和post請求包,在構成符合gopher協議的請求。gopher協議是ssrf利用中最強大的協議

限制:gopher協議在各個程式語言中的使用限制

gopher協議格式:

url:gopher://:/_後接tcp資料流

gopher的預設埠是70如果發起post請求,回車換行需要使用%0d%0a,如果多個引數,引數之間的&也需要進行url編碼

gopher傳送請求http get請求:

使用gopher協議傳送乙個請求,環境為:nc起乙個監聽,curl傳送gopher請求

nc啟動監聽,監聽2333埠:nc -lp 2333

使用curl傳送http請求,命令為

margine:~ margin$ curl gopher:

此時nc收到的訊息為:

margine:~ margin$ nc -lp 2333

bcd可以發現url中的a沒有被nc接受到,如果命令變為

margine:~ margin$ curl gopher:

此時nc收到的訊息為:

margine:~ margin$ nc -lp 2333

abcd

所以需要在使用gopher協議時在url後加入乙個字元(該字元可隨意寫)

那麼如何傳送http的請求呢?例如get請求。此時我們聯想到,直接傳送乙個原始的http包不就可以嗎?在gopher協議中傳送http的資料,需要以下三步:

1、構造http資料報

2、url編碼、替換回車換行為%0d%0a

3、傳送gopher協議

我準備了乙個php的**,如下:

<?php

echo "hello ".$_get["name"]."\n"

?>

乙個get型的http包,如下:

url編碼後為:

curl gopher:

在轉換為url編碼時候有這麼幾個坑

1、問號(?)需要轉碼為url編碼,也就是%3f

2、回車換行要變為%0d%0a,但如果直接用工具轉,可能只會有%0a

3、在http包的最後要加%0d%0a,代表訊息結束(具體可研究http包結束)

gopher傳送請求http post請求:

傳送post請求前,先看下post資料報的格式

那我們將上面的post資料報進行url編碼並改為gopher協議

curl gopher:

post.php的**為

<?php

echo "hello ".$_post["name"]."\n"

?>

使用curl發起gopher的post請求後,結果為:

二、如何使用gopher協議**shell?

三、在ssrf中如何使用gopher協議**shell?

1. 我們先準備了乙個帶有ssrf漏洞的頁面,**如下:

<?php

$url = $_get['url'];

$curlobj = curl_init($url);

echo curl_exec($curlobj);

?>

這裡需要注意的是,你的php版本必須大於等於5.3,並且在php.ini檔案中開啟了extension=php_curl.dll

2. 我在機器上開啟了乙個監聽nc -lp 6666

然後在瀏覽器中訪問:

可以看到nc接收到了訊息,沒有問題。

c:\documents and settings\administrator\桌面》nc -lp 6666

abc其實還是利用的struts2-045漏洞

來自

gopher協議利用

gopher是internet上乙個非常有名的資訊查詢系統,它將internet上的檔案組織成某種索引,很方便地將使用者從internet的一處帶到另一處。在www出現之前,gopher是internet上最主要的資訊檢索工具,gopher站點也是最主要的站點,使用tcp70埠。但在www出現後,g...

ssrf漏洞內網滲透 ssrf漏洞分析

ssrf漏洞分析 關於ssrf 首先簡單的說一下我理解的ssrf,大概就是伺服器會響應使用者的url請求,但是沒有做好過濾和限制,導致可以攻擊內網。ssrf常見漏洞 首先有三個常見的容易造成ssrf漏洞的函式需要注意 fsockopen file get contents curl exec 下面是...

SSRF漏洞概念

ssrf server side request forgery 伺服器端請求偽造 服務端提供了從其他伺服器應用獲取資料的功能,且沒有對目標位址做過濾與限制 也就是說,對於為伺服器提供服務的其他應用沒有對訪問進行限制 如果我構造好我的訪問包,那我就有可能利用目標服務對他的其他伺服器應用進行呼叫 一般...