亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這是我去年2021年寫的文章,如今這款開源安全測試工具已經更新了很多新功能,但漏洞掃描這塊基本上還可以參考我這篇文章:

漏洞掃描工具,核心就是掃描器,而掃描器的設計思想是:靈活,易擴展,易修改,靈活的意思就是可單獨執行專項漏洞的掃描,也可以批量執行集成的所有漏洞探測模塊;易擴展的意思就是,新的漏洞檢測模塊可清晰簡單地集成進掃描器;易修改,對各個漏洞掃描模塊可根據特殊情況修改探測邏輯。以下我們以網上一款開源的掃描工具來講解,當然部署過程和使用中可能會處處是坑,只要一一解決就是:

掃描器的源碼

開源工具源碼地址:

https://gitee.com/samllpig/SafeTool-51testing

工具的詳細安裝教程:

http://quan.51testing.com/pcQuan/lecture/117

軟件架構圖

安裝部署

  • 安裝 Python/ target=_blank class=infotextkey>Python 3.6 以上環境(如果怕麻煩,就安裝3.6,因為安裝3.8等高版本還需要調整一點代碼兼容性問題,但問題不多)
  • 安裝 redis
  • 安裝 wxPython==4.0.7
pip install wxPython==4.0.7

#如果安裝失敗,多執行幾編,主要是因為網絡超時導致安裝失敗
#也可以直接去下載相關模塊包,如下載

wxPython-4.0.7-cp36-cp36m-win_amd64.whl,到官網下載,一定要下載和python版本匹配的包
#通過安裝包來安裝指定模塊

pip install wxPython-4.0.7-cp36-cp36m-win_amd64.whl

#安裝過程如果提示缺什么包,就繼續去下載什么包

也可以安裝更高版本的,比如wxPython==4.1.1

  • 安裝openssl

一般安裝會有問題,可以直接到官網下載 Win32/Win64 OpenSSL Installer for windows - Shining Light Productions

在本地安裝后,還需要將庫文件拷貝到python目錄下,這樣才能識別,如:

1、將openssl安裝目錄下的:C:Program FilesOpenSSL-Win64lib 拷貝到 D:Pythonlibs

2、將openssl安裝目錄下的:C:Program FilesOpenSSL-Win64include 拷貝到 d:Pythoninclude

  • 檢查requirements.txt

這個文件源代碼根目錄下,配置了需要安裝的模塊及版本,我們需要確認自己的python版本是否以其匹配,比如Python3.8就要求改lxml為 lxml==4.6.3

  • pip安裝模塊包
pip install -r requirements.txt

# 如果安裝失敗,多執行幾編,主要是因為網絡超時導致安裝失敗,也可以到官網找模塊包下載后來安裝
# 如果安裝提示版本問題,就需要替換版本,一般Python3.8會遇到
  • 按以下順序啟動服務

啟動redis數據庫
啟動服務端 myproxy.bat
啟動客戶端 python consoleMain.py

異常修改

安裝部署完后,我們可能還會遇到一些問題,這和代碼當初的開發環境不一致有關。

1、關于Python3.8和3.6的兼容

Python3.8已經移出了time.clock()方法,但這份源碼里還是用到了,所以如果遇到相關報錯,需要自己手動修改,比如獲取系統時間,可以改為使用time.perf_counter()

2、路徑帶空格的問題

這份代碼這方面沒考慮周全,如果部署的路徑帶空格,就會報路徑錯誤,比如“D:Program Files”路徑,我們要么就不要部署在帶空格的路徑下,要么直接改他的代碼,比如:

setUp = "python " + path
#可以將path路徑用引號全圈起來
setUp = "python '" + path + "'"

3、啟動時報wt.exe找不到錯誤

我也不知道wt.exe的由來,這個錯識有時候不影響啟動,因為啟動文件consoleMain.py做了相關判斷處理,但為了徹底不調用wt.exe,我們也可把consoleMain.py當中的相關代碼直接改了:

# wtSetUp = "wt.exe python " + path
# 把以上調用改為直接調PowerShell.exe
wtSetUp = "start cmd /k PowerShell.exe python '" + path + "'"

這么改后,還有個好處,就是遇到代碼異常,不會立即關閉cmd窗口,這樣就能看到以下具體的報錯,對于調試和分析代碼錯誤是有幫助的。

4、中文報utf-8編碼錯誤

比如在web掃描時執行exec audit,報錯:

 

通過報錯,我們可以看到utf-8編碼錯誤,而且報錯的是request.py的resp.read().decode方法,我們把編碼改為如下(具體改成什么編碼,自己可以試試):

self.content = resp.read().decode('gbk')

編碼改成功后,再通過 python consoleMain.py 入口調用就沒有這個錯誤了。

5、報list index out of range錯誤

這個低級錯誤,一般是使用不當引起,但也看出了代碼的健壯性不足,比如執行exec attacks.xss報錯如下:

 

我們可以看到報錯的params.py文件具體那一行,就是self.url.split("?"),問題出在這個問號,因為我開始設置掃描路徑是:set url http://172.16.1.63,這是錯誤的,應該如下設置:

set url http://172.16.1.63/?u=admin

一眼就看出來了,得加個?問號,表示帶參數,這個問題可以直接改他的代碼,加個判斷,如果不帶參數,就提示重新設置,而不是報錯。另外這塊也說明還需要進一步擴展開發,正常應該由掃描工具主動去掃描和捕獲可以進行xss跨站腳本攻擊的鏈接和地方,而不是手動設置url來模擬攻擊。

6、執行myproxy.bat找不到mitmdump

明明我們都裝了mitmdump,為什么還可能找不到,這是因為pip安裝時,是局部還是全局安裝,正常mitmdump是安裝在python目錄下的Scripts中,如D:ToolsPythonScripts,假如你沒找到,那就需要在代碼路徑下搜索,是否裝在代碼目錄下了,比如在:SafeTool-51testingvenvScripts

這是因為我們用PyCharm Community Edition開發工具來安裝部署可能遇到的問題,我們要么挪一下mitmdump,要么直接改myproxy.bat,改一下調用路徑:

"D:Program FilesProjectSafeTool-51testingvenvScriptsmitmdump" -q -s myproxy.py -p 8000

7、生成報告的問題

開源的代碼里關于這塊也是有問題的,具體下面也會提到簡單的修改方式 。

簡單使用

先打開我們的掃描器看下界面:

 

掃描器界面:

 

好了,上面就是我們的掃描器,全部使用命令操作,簡單易記,大家跟著敲就可以了。

  • help命令使用

help: 列出集成的插件命令和描述。

 

我們開始掃描之前要做些基本的設置,輸入help set命令,查看我們需要設置那些參數,帶*號的是必選項.

 

  • info 命令

info :顯示詳細的漏洞檢測模塊

info 命令的使用格式是: info [插件名稱],插件名稱就是上圖中輸入help命令得到的。

輸入info attacks:

 

輸入info audit命令:

 

可以看到audit插件下的檢測模塊太少了,后期我們需要加入Tomcat、Nginx、weblogic等等的掃描模塊 。

輸入info brute命令:

 

輸入 info disclosure:

 

  • set命令:

在進行掃描之前需要進行基本的設置工作,通過help set命令查看可以設置的選項,在通過set命令設置,在help set顯示的選項中帶*號的是必選項,其他的根據需要進行設置。

set 命令格式: set [選項] [參數]

舉例: set url

http://192.168.16.132/wordPress/ target=_blank class=infotextkey>WordPress/?s=11

 

  • check 命令:

輸入check argv 顯示set中設置的參數值

 

其中agent參數,即版本信息默認會隨機獲取。

  • exec 命令

執行檢測命令,命令格式:exec 插件名稱[.模塊名稱]

如果只輸入插件名稱[attacks,audit,brute,disclosure],則會執行當前插件下所有漏洞檢測模塊,如果輸入 插件名稱.模塊名稱,例如:attacks.xss,則僅會執行當前插件下指定的模塊名稱。

輸入 exec audit : 執行檢測中間件插件下的所有模塊

 

輸入 exec attacks.xss :使用注入插件中的檢測xss漏洞模塊:

 

輸入 exec attacks.blindsqli :檢測sql盲注漏洞

 

  • report 命令:

生成測試報告命令

命令參數: report [報告名稱]

注:只有執行過起碼一次完整的插件檢測才能生成報告,而不是專項漏洞檢測,即 exec 插件名稱,而不是 exec 插件名稱.模塊名稱

輸入命令: report webscan

 

按照提示顯示的目錄,打開測試報告,報告格式是html的:

 

好了,以上就是使用掃描器的所有命令和完整的執行流程(這個報告執行了audit和attacks兩個模塊(插件),但結果都歸為第一個插件模塊了,原因如下)。

注意:關于生成報告,原來的代碼應該是有問題的,如果只執行的是插件子模塊,如 exec attacks.xss,再執行report webscan 生成報告是會失敗的,這是因為代碼里只有在執行插件總模塊 exec attacks才會調用報告賦值(調用子模塊的函數是startup_spec_attacks,沒有重新賦報告值,所以導致exec子模塊,報告數據就會并到前面的插件總模塊),參見代碼如下:

#執行attacks子模塊函數,沒有對REPORT進行再賦值
def startup_spec_attacks(attack:str):
    if attack in attacks_info.keys():
        plugins = spec_attacks_plugins(attack)
        startup_plugins(plugins)
    else:
        warn("模塊不存在!")

def startup_full_attacks():
    global resultJson
    if not REPORT['startTime']:
        REPORT['startTime'] = strftime("%Y/%m/%d at %H:%M:%S")
    execmod.Append("attacks")
    plugins = attacks_plugins()
    if resultJson:
        resultJson = {}
    startup_plugins(plugins)
    REPORT['attacks'] = resultJson  #調用總的attacks模塊,才對報告結果賦值

這個問題需要引起關注,如果想簡單的改,直接在startup_spec_attacks函數里加上REPORT賦值(需要有重復判斷)就行:

def startup_spec_attacks(attack:str):
    global resultJson
    if not REPORT['startTime']:
        REPORT['startTime'] = strftime("%Y/%m/%d at %H:%M:%S")
    if resultJson and not REPORT['attacks']:
        resultJson = {}
    if attack in attacks_info.keys():
        execmod.append("attacks")
        plugins = spec_attacks_plugins(attack)
        startup_plugins(plugins)
        REPORT['attacks'] = resultJson
    else:
        warn("模塊不存在!")

這么一改,再執行以上的掃描步驟,報告模板顯得更準確,而且就算執行同一模塊的attacks.xss和attacks.blindsqli,后面的也不會覆蓋前面的,如下:

 

當然這樣也不能保證完全沒有問題,具體以后我還會去細致考慮這方面的優化!

插件的編寫

大家按章節一的下載地址,下載工具后,用PyCharm或vscode或你順手的工具打開,插件掃描器就在scan目錄下

 

我們的插件編寫,先從scanlibutilssettings.py 全局配置文件開始

第一步:先看基礎路徑配置,整個項目的目錄結構就在這里

 

第二步,配置字典路徑,漏洞檢測模塊需要用到的字典,統一放在這個路徑下

 

第三步:配置插件路徑,新增的插件統一按下面的格式配置

 

第四步:配置插件描述信息,和第三步的插件路徑是對應的

 

第五步:配置漏洞模塊描述信息,和第四步的插件描述是對應的

 

第六步:配置漏洞模塊路徑信息,和第四步的插件描述是對應的

 

第七步:編寫插件的加載模塊方法

統一命名規則 插件名成_plugins()[全部模塊執行方法];spec_插件名稱_plugins(key:str)

 

第八步:編寫檢測漏洞模塊,以attacks插件下的bshi(破殼漏洞檢測)檢測模塊為例,

導入必須的核心庫:

 

創建漏洞檢測類,繼承Request類,類名需與文件名一致

 

編寫的漏洞檢測方法,統一命名為check:

 

最后編寫run方法,命名不建議修改,如果實在需要修改的話,還需要在第九步中修改對應的模塊導入邏輯:

 

第九步:在localapi.py文件下編寫本地API調用,為什么有本地API調用,因為我打算再寫個遠程API調用方法,結合安全工具的web服務使用(這一步不是必須的,只有在擴展新的插件才用到,如果在原有插件的基礎上新增漏洞檢測模塊,則可以跳過這一步)

本地API函數的格式和基本路徑,參考下圖:

 

總結下擴展邏輯就是,命名插件便于統一管理模塊,模塊編寫按固定格式,本地API編寫用于按指定插件運行檢測模塊,該掃描器的檢測模塊還可以繼續更新擴展。

本人對安全測試其實了解的很少(對于軟件測試人員來說,多少要了解一點),主要是因為當時學了幾天Python語法和應用部署,想檢驗一下自己的掌握情況,就拿這個開源項目來研究,對于會JAVA的人來說,學Python應該也快,當然學精也不容易。這款開源工具的擴展性還不錯,Python好像天生就有漏掃的天賦,對安全測試感興趣的人可以了解一下這款工具。

分享到:
標簽:漏洞掃描
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定