web安全---SSRF漏洞

簡介

SSRF:服務器請求偽造,是一種攻擊者構造形成由服務端發起請求 的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)

個人理解:服務器接收了你構造的代碼,然后去執行,執行后將結果返回給你

SSRF原理

大都是因為服務端提供從其他服務器獲取數據功能,并且沒有對目標地址做過濾和限制造成的、比如從指定URL獲取網頁加載圖片下載等等。
php下面函數的使用不當可能會導致SSRF

curl()
file_get_contents()
fsockopen()
例子

觀察URL,發現服務端提供了URL查詢
在這里插入圖片描述
嘗試訪問百度及本機3306端口
在這里插入圖片描述
在這里插入圖片描述
訪問成功獲取信息,確定存在ssrf漏洞
下面我們來查看一下源碼到底為什么會導致這個漏洞

<?php
if (isset($_GET["url"])) {
if (!empty($_GET["url"])) {$url = $_GET['url'];
}
$ch = curl_init();//初始化curl會話
curl_setopt($ch, CURLOPT_URL, $url);//指定請求的url
curl_setopt($ch, CURLOPT_HEADER, 0);// 啟用時會將頭文件的信息作為數據流輸出。參數為1表示輸出信息頭,為0表示不輸出
curl_exec($ch);
curl_close($ch);
}

可以看到采用了curl函數請求URL資源回顯在前端,并且沒做任何過濾或限制。從而導致了用戶可能可以通過這個漏洞進行一些內網服務探測等等。非常危險!

file_get_contents造成的SSRF
$url = $_GET['url'];
echo file_get_contents($url);
利用php://input偽協議
file_get_content如果訪問一個不存在的地址,會爆出絕對路徑
ssrf危害
1.  掃內網
2.  向內部任意主機的任意端口發送精心構造的Payload
3.  DOS攻擊(請求大文件,始終保持連接Keep-Alive Always)
4.  攻擊內網的web應用,主要是使用GET參數就可以實現的攻擊(比如struts2,sqli等)
5.  利用file協議讀取本地文件等(file_get_content函數,利用偽協議讀取)
ssrf驗證方式和常見的地方

1.因為SSRF漏洞是構造服務器發送請求的安全漏洞,所以我們就可以通過抓包分析發送的請求是否是由服務器的發送的來判斷是否存在SSRF漏洞
2.在頁面源碼中查找訪問的資源地址 ,如果該資源地址類型為 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞

排除法1

你可以直接右鍵圖片,在新窗口打開圖片,如果是瀏覽器上URL地址欄是http://www.baidu.com/img/bd_logo1.png,說明不存在SSRF漏洞。

排除法2

你可以使用burpsuite等抓包工具來判斷是否不是SSRF,首先SSRF是由服務端發起的請求,因此在加載圖片的時候,是由服務端發起的,所以在我們本地瀏覽器的請求中就不應該存在圖片的請求.(host www.baidu.com就不是)

ssrf修復方式
可以采取白名單,限制內網Ip。
對返回內容進行識別
禁用一些不必要的協議
統一錯誤信息,避免用戶可以根據錯誤信息來判斷遠端服務器的端口狀態

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

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

相關文章

集合——對象數組(引用數據類型數組)

案例&#xff1a;我有5個學生&#xff0c;請把這個5個學生的信息存儲到引用數據類型數組中&#xff0c;并遍歷數組&#xff0c;獲取得到每一個學生的信息。 思路分析&#xff1a;首先&#xff0c;想要創建學生對象&#xff0c;就得有學生這個類&#xff0c;所以&#xff0c;首…

提升應用視覺Android效果的10個UI技巧

在Android應用開發中&#xff0c;風格和設計或許不是最關鍵的要素&#xff0c;但它們在決定Android應用成功與否上確實扮演重要的角色。以下是10個Android應用的UI設計技巧&#xff0c;還有個附加技巧&#xff0c;能夠提供你的Android應用的視覺吸引力。 技巧1&#xff1a;使用…

kotlin中判斷字符串_Kotlin程序查找字符串中字符的頻率

kotlin中判斷字符串Given a string and a character, we have to find the frequency of the character in the string. 給定一個字符串和一個字符&#xff0c;我們必須找到字符串中字符的頻率。 Example: 例&#xff1a; Input:string "IncludeHelp"character to…

OD使用

0x01 功能界面 序號1是匯編代碼對應的地址窗口序號2是匯編對應的十六進制機器碼窗口序號3是反匯編窗口序號4是反匯編代碼對應的注釋信息窗口序號5是寄存器信息窗口序號6是當前執行到的反匯編代碼的信息窗口序號7是數據所在的地址序號8是數據的十六進制編碼信息&#xff0c;序號…

windows mobile 開發總結--菜單

在開發時經常要創建菜單&#xff0c;并且動態顯示和隱藏菜單或者是某個子菜單。以下就是實現的方法&#xff1a; 1。創建并顯示菜單,先在資源里添加菜單&#xff0c;然后如下代碼 SHMENUBARINFO mbi; ZeroMemory(&mbi, sizeof(SHMENUBARINFO)); mbi.cbSizesizeof(SHMENUBAR…

Java——集合的概述

* A&#xff1a;集合的由來* 數組是容器&#xff0c;集合也是容器* 數組的弊端&#xff1a;數組的長度是固定的&#xff0c;當添加的元素超過了數組的長度時&#xff0c;需要對數組重新定義&#xff0c;太麻煩* Java內部給我們提供了集合類&#xff0c;可以存儲任意對象&#x…

排序算法中平均時間復雜度_操作系統中的作業排序(算法,時間復雜度和示例)...

排序算法中平均時間復雜度作業排序 (Job sequencing) Job sequencing is the set of jobs, associated with the job i where deadline di > 0 and profit pi > 0. For any job i the profit is earned if and only if the job is completed by its deadline. To complet…

python---文件處理

0x01 打開一個文件 python中內置了文件對象&#xff0c;通過open()函數就可以制定模式打開指定文件&#xff0c;并創建文件對象。該函數的格式如下&#xff1a; open(file[,moder[,buffering-1]])file&#xff1a;指定要打開或創建的文件名稱&#xff0c;如果該文件不存在當前…

簡易而又靈活的Javascript拖拽框架(四)

一、開篇 似乎拖拽已經被寫爛了&#xff0c;沒得寫的了&#xff0c;可是我這次又來了&#xff5e; 上一次寫的是跨列拖放&#xff0c;這次我要帶給大家的是跨頁拖放。 可以到這里來看看效果&#xff1a;示例效果 說明&#xff1a;1、如果將方框拖動到頁簽上立刻釋放掉的話&…

Java——集合的基本功能測試

* 1,boolean add<E,e> 添加* 確保此 collection 包含指定的元素&#xff08;可選操作&#xff09;。* 參數&#xff1a;e - 確定此 collection 中是否存在的元素。E - 代表Object類&#xff0c;說明該add可以添加任何對象&#xff0c;任意對象都是Object的子類對象&…

《那些年啊,那些事——一個程序員的奮斗史》——78

招人風波之后&#xff0c;就很少見武總往18樓跑了&#xff0c;大部分時間都是坐在22樓的隔間。而武總對段伏櫪的抱怨&#xff0c;也僅僅只有那次&#xff0c;后來就再也沒有提過。對于段伏櫪而言&#xff0c;還要不要招新人&#xff0c;后續如何去招新人&#xff0c;已經不是自…

python---異常處理結構

python中提供了很多不同形式的異常處理結構&#xff0c;其基本思路都是先嘗試執行代碼&#xff0c;再處理可能發生的錯誤。 try…except… 在python異常處理結構中&#xff0c;try…except…使用最為頻繁&#xff0c;其中try子句中的代碼塊為可能引發異常的語句&#xff0c;e…

用css網站布局之十步實錄 (轉載)

第一步&#xff1a;規劃網站http://www.52css.com/article.asp?id175 第二步&#xff1a;創建html模板及文件目錄等http://www.52css.com/article.asp?id176 第三步&#xff1a;將網站分為五個div 網頁基本布局http://www.52css.com/article.asp?id177 第四步&#xff1a;網…

Java——集合轉數組并對其進行遍歷

* A&#xff1a;集合的遍歷* 其實就是以此獲取集合中的每一個元素* B&#xff1a;案例* 把集合轉成數組&#xff0c;可以實現集合的遍歷* public Object[] toArray() 按適當順序&#xff08;從第一個到最后一個元素&#xff09;返回包含此列表中所有元素的數組。…

魚油賬號記錄程序(續) - 零基礎入門學習Delphi39

魚油賬號記錄程序&#xff08;續&#xff09; 讓編程改變世界 Change the world by program 課件同上一講&#xff0c;這一講主要演示編程操作和修改程序&#xff01; [buy] 獲得所有教學視頻、課件、源代碼等資源打包 [/buy] [Downlink hrefhttp://kuai.xunlei.com/d/LDKX…

python---Socket編程

Sockte是計算機之間進行網絡通信的一套程序接口&#xff0c;相當于在發送端和接收端之間建立一個通信管道。在實際應用中&#xff0c;一些遠程管理軟件和網絡安全軟件大多數依賴于Socket來實現特定功能&#xff0c;由于TCP方式在網絡編程中應用非常頻繁&#xff0c;此處將對TCP…

格式轉換-----PDF格式研究筆記(一)

格式轉換-----PDF格式研究筆記&#xff08;一&#xff09; 現在我的幾個計劃都需要我能夠對PDF格式進行解碼&#xff0c;所以找了一下資料&#xff0c;找到了一個PDF1.3的手冊&#xff0c;特放出下載&#xff0c;如果誰有更高版本的&#xff0c;請給我一份&#xff0c;謝謝。 …

(X)HTML嵌套規則

本文整理于互聯網~ 簡單認識了塊元素和內嵌元素以后&#xff0c;下面就可以羅列 XHTML 標簽的嵌套規則了&#xff1a; 1. 塊元素可以包含內聯元素或某些塊元素&#xff0c;但內聯元素卻不能包含塊元素&#xff0c;它只能包含其它的內聯元素&#xff1a;<div><h1>&…

Java——集合帶All的功能演示

package com.wsq.collection;import java.util.ArrayList; import java.util.Collection; public class Demo4_CollectionAll {public static void main(String[] args) {demo1(); //c1.addAll(c2);將c2整個集合給添加到c1中,即&#xff0c;c2集合中的每…

ASP.NET Web API 處理架構

這篇文章主要是介紹ASP.NET Web API的處理架構&#xff1a;當一個HTTP請求到達直到產生一個請求的過程。ASP.NET Web API 的處理架構圖如下&#xff0c;主要有三層組成&#xff1a;宿主&#xff08;hosting&#xff09;&#xff0c;消息處理管道&#xff08;message handler pi…