日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发文档怎么编写_PoC 编写指南

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发文档怎么编写_PoC 编写指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是 PoC

PoC(全稱: Proof of Concept), 中文譯作概念驗證。在安全界,你可以理解成為漏洞驗證程序。和一些應用程序相比,PoC 是一段不完整的程序,僅僅是為了證明提出者的觀點的一段代碼。因為是一些代碼片段,所以到現在都沒看到有一本書來講怎么編寫 PoC 的,因為這些東西對于會寫代碼的人來說,他們會很驚訝分分鐘就會了的事為什么還要出本書。

什么是 Exp

Exp(全稱: Exploit),中文叫漏洞利用程序,就是一段可以發揮漏洞價值的程序。想象一下這樣的場景,目標存在一個 SQL 注入漏洞,然后被你知道了,然后你編寫了一個程序,通過這個 SQL 注入漏洞,拿到了目標的權限,那么這個程序就是所謂的 Exp 了,當然,如果你沒有使用這個漏洞,它就這么放著,那么這個漏洞,對你來說可以認為是沒有價值的。

關于 PoC/Exp 的兩個誤區

1. 寫 PoC 要會 Python?
PoC 的存在,只有一個目的:證明漏洞存在。而關于 PoC 的形式,或者說代碼實現方式,你喜歡用什么方式,就用什么方式。我們推薦 Python, 只是說安全界用 Python 的人居多,你寫的東西能被更多人看懂,還有 Python 這門語言的靈活,類庫強大等特性,給編寫的人提供了很大便利。

2. PoC 就是 Exp?
其實嚴格來講,PoC 和 Exp 是兩個東西。PoC 就是用來證明漏洞存在的,而 Exp 是用來利用這個漏洞的,在很多情況下,我們知道了漏洞存在,卻不知道具體怎么利用,編寫一個 PoC 非常簡單,而編寫一個 Exp 是相當有挑戰性的。

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

什么是漏洞靶場

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

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

PoC 編寫流程

這里我們不討論未公開的漏洞,對于一個已經公開的漏洞,PoC 的編寫流程是這樣的:

  • 根據漏洞詳情,尋找受影響版本程序。
    如果是一些 CMS, 可以去 對應的官網下載歷史版本程序,有些漏洞作者不會提具體版本號,那你就要根據漏洞作者提交的時間來判斷了。當然除了官方網站之外,還可以去 github 上尋找源碼,這些個官網都喜歡把歷史版本的程序刪除掉,善用 github 上的 tag, branch, release 功能,上面有你要的所有版本。
  • 搭建對應漏洞靶場
    這里其實沒什么好說的,下載了人家的源碼之后,在你的虛擬機里面配置好環境就行了,還能順便學一下運維的一些皮毛知識。
  • 手動復現漏洞
    根據漏洞詳情,手動將整個流程走一遍,熟悉下復現條件,比如使用 GET 還是 POST 請求,需不需要登陸,返回的頁面會是什么樣子的,我提交不同的參數,會不會出現其它結果,如果漏洞不存在的話,會出現什么樣的結果......
    磨刀不誤砍柴功,熟悉了這些之后,后面編碼實現簡直就是分分鐘的事,因為一開始我們就說過了,PoC 就是一小段代碼。
  • 寫代碼
    手動復現了一次漏洞之后,分析漏洞證明步驟,根據自己的實際測試情況一步一步寫代碼,用我的話來說,寫代碼,其實就是用程序模擬人工操作的每一個步驟,如果你上一步認真做了,這一步只是經驗問題,本教程將在后面豐富你在這方面的閱歷。
  • 測試 PoC
    其它測試和編碼基本都是在同時進行的,為什么要單獨提出來講呢,我們在寫 PoC 的時候,除了在存在漏洞的靶機上測試我們的代碼,還要在不存在漏洞的站點測試,一般為說,一個優秀的 PoC 在后期測試的時候要求對 10000 個目標測試,誤報不能超過 10 個。
  • PoC 與 PoC 框架

    PoC 框架就是一個批量管理,調度 PoC 的程序。因為是框架,要批量調度,那就要求 PoC 在編寫的時候要遵守一些規范,這些規范常見的有:

  • 入口規范
    考慮到批量使用 PoC 的調度情況,統一入口框架調用該 PoC 的時候會非常之方便。這個就需要根據具體的框架的調度要求來看了,都有文檔的,看一下就會了。
  • API 規范
    API 是該框架對一些基礎類庫的封裝,比如說框架提供了一些網絡請求工具。這些封裝有什么好處呢?我還是舉例子來說明,比如某次掃描,調用了 1000 個 PoC 去掃描目標主機了,假設這個掃描任務中有一部分是需要登錄的,而有一些的作者在編寫的時候忘記在 PoC 中接收用戶自定義的 Cookie 了,那么此時就會因為接收不到 Cookie 而導致請求不成功。那么在使用了框架的情況下,即使在忘記了添加這些字段的情況下,框架也會自動將 Cookie 添加進請求中,為 PoC 開發者提供了極大的便利。
  • 國內 PoC 框架簡介

    官方的可以去各自的平臺看,這里只簡要說一下。

    • Beebeeto
      Evi1m0 創辦,民間社區。PoC 開發語言為 Python。白帽子互相學習并使用它人的 PoC。2016 年被 Sebug 收購。
      Beebeeto 開發文檔地址
    • Sebug-Pocsuite
      早年學安全的人都聽過 Sebug 的名號,以前的民間漏洞庫,后來被知道創宇收購。Pocsuite 是 Sebug 平臺上通用的遠程漏洞驗證框架,使用 Python 編寫 PoC。寫 PoC 可以直接兌換實物與現金獎勵,兌換比例 1KB = ¥5(這是 RMB 不是日元)。Sebug 收購 Beebeeto 后,更名為 Seebug。
      Pocsuite 開發文檔地址
    • Bugscan
      西安四葉草安全驅動的國內首個基于社區的分布式漏洞掃描平臺。PoC 在這里也被稱作插件。使用 Python 編寫 PoC, 要求只能使用 Python2.7 的標準庫。寫插件有 rank 獎勵,可兌換實物獎勵,兌換比例 1 Rank = ¥10,商城有個比亞迪秦,看著很誘人啊。
      Bugscan 開發文檔地址
    • Tangscan
      Wooyun 社區驅動的針對企業的掃描器,使用 Python 編寫 PoC。寫 PoC 命中后有湯圓,可參與分紅。
      Tangscan 開發文檔地址
    • 其它

    網絡基礎

    為什么要學網絡

    安全界不缺乏有一些人連計算機網絡是什么都不清楚,但是拿站,滲透一搞一個準。然而像我這種整天把基礎知識掛在嘴邊的人,拿站的時候照樣慫。基礎知識在我看來,是種常識,是種工具,不能說不會基礎知識的人就一定不能怎么樣,我只能說,我建議,我推薦,我支持先從基礎學起來,這樣在后面的學習當中就會如魚得水。

    需要學什么

    對于寫 PoC 來說,我們需要的并不是你去把 OSI 7 層模型的每一層都精通,你要精通了所有層的東西,你就不會坐在這里了。

    好了,大概說一下我們需要了解哪些,相關的專業知識你可以去百度和Goole。

    • 請求響應配對
    • 域名系統
    • IP 地址
    • TCP 是做什么的
    • HTTP 協議(請重點關注這個,后面很多地方都會用到)

    編碼基礎

    編碼基礎這里不要求你精通, 畢竟一開始就深化了一下 PoC 的概念,他就是一個不完整的程序,所以你只要會一些常用的就 OK, 不要說你不會這種話,不會可以花一點時間來學,放心,根本不需要你達到一個什么樣的深度。

    那我就大概寫一下需要學什么東西了:

    • HTML
      這里不單是看 HTML 語言,更多的要去理解什么是瀏覽器。你看到的漂亮的不像實力派的網頁,在傳輸的時候是什么樣子的,瀏覽器在接收到響應之后大概做了點什么事。
    • Javascript
      想學 XSS, CSRF 不會這兩個可不行。
    • Python
      我們后面寫 PoC 會用到,所以這個要必會。這里只需要你會一點點 Python 的語法和一些常用的功能庫就夠了。
    • SQL
    • 正則表達式
      自動化過程中經常需要自動匹配,不需要精通,但是要多多少少會一些。怎么測試你會了呢?我給你任意一個 wooyun 的漏洞頁面,然后你能用腳本把里面的漏洞標題,作者,漏洞提交時間等等信息能夠輕松用正則表達式提取出來,吶,這樣就 OK 了。

    關于 Python 的一些庫

    • urllib
    • urllib2
    • requests
    • httplib
    • cookielib
      發送 HTTP 請求的,當然還有一些其他的。
    • urlparse
      處理 url 的
    • re
      正則表達式
    • random
      看名字就知道是生成隨機數的
    • hashlib
      md5 算法幫你集成在這里了
    • base64
      base64 編碼全家福都在這里
    • socket
      如果你知道 TCP 和 HTTP 的關系的話,你就能理解 socket 和 urllib 的關系了。

    文/Medici.Yan

    GitHub: https://github.com/Medicean

    總結

    以上是生活随笔為你收集整理的开发文档怎么编写_PoC 编写指南的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。