python漏洞扫描器编写_漏洞扫描器开发与设计的一点感悟
活著的意義……是在你快死的瞬間劃過你腦海的那些事啊……
關于廣度優先原則
即再批量漏掃的時候,如果對網址又相同的網址請求,可以采用基于網址優先循環,即
http://www.langzi.fun/admin.php
http://www.123456.cn/admin.php
http://www.1111.com/admin.php
http://www.la.cc/admin.php
即基于網址循環,這樣不僅可以減少目標服務器壓力,不至于把目標掃死,還能隱藏一些身份。
關于超鏈接獲取
這是很深的感悟,即你的漏洞大部分都存在網址參數中,比如xss,sql注入,命令執行,任意文件包含,目錄遍歷等等,那么獲取提升漏掃效率就要從下面兩點開始:
1. 獲取更加多更加深層的網址
2. 提高掃描驗證的效率
關于sql注入掃描,我采用的是直接拉sqlmap過來驗證,效率還是可以保證的,還有一些關于服務器層的,我都是直接調用nmap的腳本批量實現,雖然我自己也寫了好幾十種服務器,web層的未授權訪問漏洞驗證工具,但是個人終究還是比不上專業工具。
關于url的深度,除了從頁面提取有效連接之外,還有更加深層的,我的想法是通過selenium+mitmproxy實現,我一開始是想使用requests實現,畢竟節省內存資源。后來在準備安全巡航項目時,想到還能通過puppeteer進行網頁爬行獲取連接。后來看到nmask的文章,利用chrome_remote_interface實現程序化、自動化Web安全測試學到了新姿勢。
并且selenium本身就是專業的測試工具,自然能挖掘到更多深層的url,我本來想通過分析selenium的日志來獲取網頁的深層url請求和鏈接,但是這樣比較慢,吃內存大,于是采用mitmproxy中間人代理,獲取所有的深層url,然后通過算法獲取到有效的深層url。
漏洞庫整理
條件允許的話,可以把一些同種類型的漏洞檢測方式寫在每個單獨的文件夾,方便調用。Github
關于自動化生成報表
使用python操作word自然可以,但是感覺生成的結果不太美觀,可以做一些優化,生成圖表或者添加頁眉,格式化等等。
當然如果不需要再編輯可以再轉換成pdf文件。獲取截圖使用pillow,但是這個庫轉換成exe后,截圖后保存只能保存為png格式的圖片,勿忘。
更新安全巡航0.97版本時候,初衷是為了簡單上手,掛機掃洞的原則,所以一切都配置好,生成的報表文件都是固定寫好,后續再更新的話,讓用戶自己寫模板自然是不可能也不現實,可以自己定義好幾套模板,提供一個選擇模板的接口即可。
關于數據存儲
一開始我都是使用記事本存儲數據,一來是方便,二來是數據量不大,但是漏掃總共會涉及到超大數據量。
所以建議使用數據庫,個人推薦mysql或者redis。數據庫一開始一定要做好構架設計,這個非常非常重要,幾乎占你漏掃全部的30%核心,一定要有可讀性,方便拓展。
如果數據量大了,并發很大,并且你非常有錢擁有很多服務器可以做分布式(偷偷流下了羨慕的眼淚),可以使用mysql+redis做數據存儲。
拓展漏洞功能
一些小白剛開始學會寫漏掃的時候,看到別人有什么好東西就像加進去,然后發現數據庫結構不行,代碼也要重構,然后東改西改,最后自己都看不懂代碼的真面目了。
一定要做好漏掃的結構設計,分好類,比如服務器端的,web層的,中間件層的存儲不同的數據庫結構,怎么樣才能方便拓展,這些都要提前想好,但是像我這種人只能靠經驗慢慢到磨礪了。
系統性構架
不同掃描對象,使用檢測方式不一樣,這里指的是批量掃描,即對于一些特定目錄掃描,可以基于廣度優先原則。
減少對方服務器壓力并且能防止ban ip,但是這也就意味著,你這個模塊需要接受的參數為100個url,但是掃描注入的時候,接受的參數可能是只能是一個url,這里就會出現調度沖突,解決方法有很多,比如分文件處理,每個漏掃模塊必須完全獨立,然后在數據庫中做好結構設計,這一塊實在是太大太深奧,我也是自己摸索著學習。
軟件工程設計
個人野生菌,習慣獨自打仗,所以很多軟件都是自己做產品,然后構架代碼結構,嘗試開發,最后不斷測試,更新修復代碼,這里最重要的就是軟件的結構和變量的命名,建議是對功能做獨立分塊,高內聚低耦合。
變量命名方式
個人建議是駝峰式命名,名字不宜太長,簡短但是又能直觀的展示變量或者函數名的作用。
模式借用
即你在某個程序中,實現了一個很騷的方法,比如我之前的yolandan掃描器的核心就是掛機無限掃描,雖然時間過去很久,現在回頭看代碼發現寫的很垃圾,不過里面核心還是值得推薦,由此出現無限url采集,無限cms識別采集等等,并且將來加載到安全巡航實現全自動掛機刷洞生成報表
不在勞累情況下編碼
很多時候為了實現一個功能,折騰到凌晨三四點,越寫越亂看著就頭大,這種情況下需要好好休息,讓頭腦冷靜下來后,仔細思考就會發現很多問題迎刃而解。
調用第三方漏掃
他山之石,可以攻玉。比如SQL注入,模板的注入,如果自己不是很熟或者沒有精力去維護一個種類的漏洞資源庫的話,不妨直接使用第三方,直接調用nmap,sqlmap,awvs進行漏掃,然后對結果做一個接口維護清洗數據后保存到數據庫。
使用第三方功能必然會讓軟件工程失去主動性和自由性,所以要考慮漏洞種類,數量,掃描策略等。
不要急于動手
當有了一個比較好的靈感,開始構架的時候,不要過度著急,構架完畢也不要馬上動手。
因為很多時候,你不可能一次性完成完美的構架設計,肯定在某些地方有缺陷,當時又想不到。但是過上小半天或者一晚上又有要補充的地方。
靈感與知識來源
多上烏云漏洞庫看看,每次看到別人提交的漏洞,需要思考如何才能使用工具實現自動批量化。
其次是漏洞復現,在復現的過程總了解漏洞產生的原因和如何驗證。
心態良好
這個因人而異,當看到別人寫出了大規模全方便易拓展的漏掃,心里又是羨慕又是焦慮,這種心態不行滴~要好好告誡自己:做人不要太攀比,踏踏實實做自己~
只要不死,慢慢學,要相信你終究會成為別人眼里的技術大牛的,最后的加油送給正在努力路上的你。
總結
以上是生活随笔為你收集整理的python漏洞扫描器编写_漏洞扫描器开发与设计的一点感悟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vbs脚本的基本使用
- 下一篇: python 漏洞扫描器_自动扫描全网漏