關於poc指令碼的一些問題

2022-06-29 04:54:14 字數 2216 閱讀 9206

poc(全稱: proof of concept), 中文譯作概念驗證。在安全界,你可以理解成為漏洞驗證程式(本教程中,如無特別說明,預設代表漏洞驗證程式),當然你要強行說我說的不對,我肯定支援你,反正我沒打算反駁你。和一些應用程式相比,poc 是一段不完整的程式,僅僅是為了證明提出者的觀點的一段**。因為是一些**片段,所以到現在都沒看到有一本書來講怎麼編寫 poc 的,因為這些東西對於會寫**的人來說,他們會很驚訝分分鐘就會了的事為什麼還要出本書。

exp(全稱: exploit),中文叫漏洞利用程式。名字上說的已經很清楚了,簡單講,就是一段可以發揮漏洞價值的程式,這話感覺和沒說一樣。想象一下這樣的場景,目標存在乙個 sql 注入漏洞,然後被你知道了,然後你編寫了乙個程式,通過這個 sql 注入漏洞,拿到了目標的許可權,那麼這個程式就是所謂的 exp 了,當然,如果你沒有使用這個漏洞,它就這麼放著,那麼這個漏洞,對你來說可以認為是沒有價值的。

寫 poc 要會 python.

這句話,毒害了很多人。poc 的存在,只有乙個目的:證明漏洞存在。而關於 poc 的形式,或者說**實現方式,你想用什麼方式,就用什麼方式。我們推薦 python, 只是說安全界用 python 的人居多,你寫的東西能被更多人看懂,還有 python 這門語言的靈活,類庫強大等特性,給編寫的人提供了很大便利。

你可以這麼理解啊,你要找工作了,你爸媽都推薦你去考公務員,你能說要工作就只能考公務員這種話嗎?

poc 就是 exp.

這話也不知道是誰第乙個說的。其實嚴格來講,poc 和 exp 是兩個東西,你要強行說兩個是乙個,那你當我沒說好了。在我看來,poc 就是用來證明漏洞存在的,而 exp 是用來利用這個漏洞的,在很多情況下,我們知道了漏洞存在,卻不知道具體怎麼利用,編寫乙個 poc 非常簡單,而編寫乙個 exp 是相當有挑戰性的。

poc 和 exp 的區別就有點像你發現了家門口的超市的鎖有問題,你給人家證明鎖有問題和通過鎖有問題這個現象偷到超市的錢 這是兩碼事。

漏洞靶場(vulnerability firing range), 就是跑著有漏洞的程式的測試機器。一般用虛擬機器來實現,當然現在也有用 docker 來實現的,反正就是給你乙個已經復現了漏洞的環境讓你測試漏洞的東西。

我們在學習 poc 編寫的時候,推薦自己搭建靶場來測試,不推薦直接使用網際網路上跑著業務的機器,因為現實環境安全配置情況往往要比靶場複雜的多,不利於新手學習,這些都不是重點,重點是萬一你不小心把人家機器搞壞了,你說這鍋誰來背?你背的起嗎?

這裡我們不討論未公開的漏洞,對於乙個已經公開的漏洞,poc 的編寫流程是這樣的:

根據漏洞詳情,尋找受影響版本程式。

搭建對應漏洞靶場

手動復現漏洞

根據漏洞詳情,手動將整個流程走一遍,熟悉下復現條件,比如使用 get 還是 post 請求,需不需要登陸,返回的頁面會是什麼樣子的,我提交不同的引數,會不會出現其它結果,如果漏洞不存在的話,會出現什麼樣的結果......

磨刀不誤砍柴功,熟悉了這些之後,後面編碼實現簡直就是分分鐘的事,因為一開始我們就說過了,poc 就是一小段**。

寫**手動復現了一次漏洞之後,分析漏洞證明步驟,根據自己的實際測試情況一步一步寫**,用我的話來說,寫**,其實就是用程式模擬人工操作的每乙個步驟,如果你上一步認真做了,這一步只是經驗問題,本教程將在後面豐富你在這方面的閱歷。

測試 poc

其它測試和編碼基本都是在同時進行的,為什麼要單獨提出來講呢,我們在寫 poc 的時候,除了在存在漏洞的靶機上測試我們的**,還要在不存在漏洞的站點測試,一般為說,乙個優秀的 poc 在後期測試的時候要求對 10000 個目標測試,誤報不能超過 10 個。

poc 框架就是乙個批量管理,排程 poc 的程式。因為是框架,要批量排程,那就要求 poc 在編寫的時候要遵守一些規範,這些規範常見的有:

入口規範

考慮到批量使用 poc 的排程情況,統一入口框架呼叫該 poc 的時候會非常之方便。這個就需要根據具體的框架的排程要求來看了,都有文件的,看一下就會了。

api 規範

api 是該框架對一些基礎類庫的封裝,比如說框架提供了一些網路請求工具。這些封裝有什麼好處呢?我還是舉例子來說明,比如某次掃瞄,呼叫了 1000 個 poc 去掃瞄目標主機了,假設這個掃瞄任務中有一部分是需要登入的,而有一些的作者在編寫的時候忘記在 poc 中接收使用者自定義的 cookie 了,那麼此時就會因為接收不到 cookie 而導致請求不成功。那麼在使用了框架的情況下,即使在忘記了新增這些欄位的情況下,框架也會自動將 cookie 新增進請求中,為 poc 開發者提供了極大的便利。

關於面試的一些問題

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...

關於Labview的一些問題

第一章 虛擬儀器及 labview入門 1 虛擬儀器概述 虛擬儀器 virtual instrumention 是基於計算機的儀器。計算機和儀器的密切結合是目前儀器發展的乙個重要方向。粗略地說這種結合有兩種方式,一種是將計算機裝入儀器,其典型的例子就是所謂智慧型化的儀器。隨著計算機功能的日益強大以及...

關於DropDownList的一些問題

dropdownlist選擇後提示不能在dropdownlist選擇多項 原因在於drop.selected true 用的是item的引用,無法覆蓋上次操作 有2種方法 一種是直接drop.selectvalue value 選定指定資料 另一種是在操作前 呼叫clearselection 方法清...