0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WebCrack如何自動識別出要爆破的參數(shù)

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-08-14 11:45 ? 次閱讀

在做安全測試的時候,隨著資產(chǎn)的增多,經(jīng)常會遇到需要快速檢測大量網(wǎng)站后臺弱口令的問題。

然而市面上并沒有一個比較好的解決方案,能夠支持對各種網(wǎng)站后臺的通用檢測。

所以WebCrack就應(yīng)運而生。

工具簡介

WebCrack是一款web后臺弱口令/萬能密碼批量爆破、檢測工具。

不僅支持如discuz,織夢,phpmyadmin等主流CMS

并且對于絕大多數(shù)小眾CMS甚至個人開發(fā)網(wǎng)站后臺都有效果。

在工具中導(dǎo)入后臺地址即可進(jìn)行自動化檢測。

項目地址

https://github.com/yzddmr6/WebCrack

實現(xiàn)思路

大家想一下自己平常是怎么用burpsuite的intruder模塊來爆破指定目標(biāo)后臺的

抓包 -> send to intruder -> 標(biāo)注出要爆破的參數(shù) -> 發(fā)送payload爆破 -> 查看返回結(jié)果

找出返回包長度大小不同的那一個,基本上就是所需要的答案。

那么WebCrack就是模擬這個過程

但是就要解決兩個問題

如何自動識別出要爆破的參數(shù)

如何自動判斷是否登錄成功

識別爆破參數(shù)

對于這個問題采用了web_pwd_common_crack的解決辦法

就是根據(jù)提取表單中 user pass 等關(guān)鍵字,來判斷用戶名跟密碼參數(shù)的位置

但是在測試中還發(fā)現(xiàn),

有些前端程序員用拼音甚至拼音縮寫來給變量命名

什么yonghu , zhanghao , yhm(用戶名), mima 等

雖然看起來很捉急,但是也只能把它們?nèi)考舆M(jìn)關(guān)鍵字判斷名單里。

如何判斷登錄成功

這個可以說是最頭疼的問題

如果對于一種管理系統(tǒng)還好說,只要找到規(guī)律,判斷是否存在登錄成功的特征就可以

但是作為通用爆破腳本來說,世界上的網(wǎng)站各種各樣,不可能去一個個找特征,也不可能一個個去正則匹配。

經(jīng)過借鑒web_pwd_common_crack的思路,與大量測試

總結(jié)出來了以下一套比較有效的判斷方式。

判斷是否動態(tài)返回值并獲取Error Length

6395edda-1b11-11ed-ba43-dac502259ad0.png

先發(fā)送兩次肯定錯誤的密碼如length_test

獲取兩次返回值并比較

如果兩次的值不同,則說明此管理系統(tǒng)面對相同的數(shù)據(jù)包返回卻返回不同的長度,此時腳本無法判斷,退出爆破。

如果相同,則記錄下此值,作為判斷的基準(zhǔn)。

然而實際中會先請求一次,因為發(fā)現(xiàn)有些管理系統(tǒng)在第一次登錄時會在響應(yīng)頭部增加標(biāo)記。如果去掉此項可能會導(dǎo)致判斷失誤。

判斷用戶名跟密碼的鍵名是否存在在跳轉(zhuǎn)后的頁面中

這個不用過多解釋,如果存在的話說明沒登錄成功又退回到登錄頁面了。

有人會問為什么不直接判斷兩個頁面是否相等呢

因為測試中發(fā)現(xiàn)有些CMS會給你在登錄頁面彈個登錄失敗的框,所以直接判斷是否相等并不準(zhǔn)確。

還有一種計算頁面哈希的辦法,然后判斷兩者的相似程度。

但是覺得并沒有那個必要,因為有不同的系統(tǒng)難以用統(tǒng)一的閾值來判斷,故舍棄。

關(guān)鍵字黑名單檢測

本來還設(shè)置了白名單檢測機制

就是如果有“登錄成功”的字樣出現(xiàn)肯定就是爆破成功

但是后來發(fā)現(xiàn)并沒有黑名單來的必要。

因為首先不可能把所有CMS的登錄成功的正則樣本都放進(jìn)去

其次在測試的過程中,發(fā)現(xiàn)在其他檢測機制的加持后,白名單的判斷變得尤其雞肋,故舍棄。

并且黑名單的設(shè)置對于萬能密碼爆破模塊很有好處,具體往下看吧。

Recheck環(huán)節(jié)

為了提高準(zhǔn)確度,防止誤報。

借鑒了web_pwd_common_crack的思路增加recheck環(huán)節(jié)。

就是再次把crack出的賬號密碼給發(fā)包一次,并且與重新發(fā)送的error_length作比對

如果不同則為正確密碼。

在這里沒有沿用上一個error_length,是因為在實際測試中發(fā)現(xiàn)由于waf或者其他因素會導(dǎo)致返回包長度值變化。

框架拓展

用上面幾種辦法組合起來已經(jīng)可以做到基本的判斷算法

但是為了使WebCrack更加強大,我又添加了以下三個模塊

動態(tài)字典

這個不用過多解釋,很多爆破工具上都已經(jīng)集成了。

假如沒有域名,正則檢測到遇到IP的話就會返回一個空列表。

假如域名是

test.webcrack.com

那么就會生成以下動態(tài)字典列表

test.webcrack.com
webcrack.com
webcrack
webcrack123
webcrack888
webcrack666
webcrack123456

后綴可以自己在腳本中定義。

萬能密碼檢測

后臺的漏洞除了弱口令還有一大部分是出在萬能密碼上

在WebCrack中也添加了一些常用的payload

admin' or 'a'='a
'or'='or'
admin' or '1'='1' or 1=1
')or('a'='a
'or 1=1--

可以自行在腳本里添加更多payload。

但是同時帶來個問題會被各大WAF攔截

這時候黑名單就派上用場啦

可以把WAF攔截的關(guān)鍵字寫到檢測黑名單里,從而大大減少誤報。

小插曲

用webcrack檢測目標(biāo)資產(chǎn)進(jìn)入到了recheck環(huán)節(jié)

63bcd062-1b11-11ed-ba43-dac502259ad0.png

但是webcrack卻提示爆破失敗。

手工測試了一下檢測出的萬能密碼

63cb6d8e-1b11-11ed-ba43-dac502259ad0.png

發(fā)現(xiàn)出現(xiàn)了sql錯誤信息

意識到可能存在后臺post注入

63eadf02-1b11-11ed-ba43-dac502259ad0.png

發(fā)現(xiàn)了sa注入點

這也反應(yīng)了對于后臺sql注入,webcrack的正則匹配還做的不夠完善,下一個版本改一下。

自定義爆破規(guī)則

有了上面這些機制已經(jīng)可以爆破大部分網(wǎng)站后臺了

然而還是有一些特(sha)殊(diao)網(wǎng)站,并不符合上面的一套檢測算法

于是webcrack就可以讓大家自定義爆破規(guī)則。

自定義規(guī)則的配置文件放在同目錄cms.json文件里

參數(shù)說明

[    {        "name":"這里是cms名稱",        "keywords":"這里是cms后臺頁面的關(guān)鍵字,是識別cms的關(guān)鍵",        "captcha":"1為后臺有驗證碼,0為沒有。因為此版本并沒有處理驗證碼,所以為1則退出爆破",        "exp_able":"是否啟用萬能密碼模塊爆破",        "success_flag":"登錄成功后的頁面的關(guān)鍵字",        "fail_flag":"請謹(jǐn)慎填寫此項。如果填寫此項,遇到里面的關(guān)鍵字就會退出爆破,用于dz等對爆破次數(shù)有限制的cms",        "alert":"若為1則會打印下面note的內(nèi)容",        "note":"請保證本文件是UTF-8格式,并且請勿刪除此說明"    }]

舉個例子

{        "name":"discuz",        "keywords":"admin_questionid",        "captcha":0,        "exp_able":0,        "success_flag":"admin.php?action=logout",        "fail_flag":"密碼錯誤次數(shù)過多",        "alert":0,        "note":"discuz論壇測試"    }

其實對于dz,dedecms,phpmyadmin等框架本身的邏輯已經(jīng)可以處理

添加配置文件只是因為程序默認(rèn)會開啟萬能密碼爆破模塊

然而萬能密碼檢測會引起大多數(shù)WAF封你的IP

對于dz,dedecms這種不存在萬能密碼的管理系統(tǒng)如果開啟的話不僅會影響效率,并且會被封IP

所以配置文件里提供了各種自定義參數(shù),方便用戶自己設(shè)置。

關(guān)于驗證碼

驗證碼識別算是個大難題吧

自己也寫過一個帶有驗證碼的demo,但是效果并不理想

簡單的驗證碼雖然能夠識別一些,但是遇到復(fù)雜的驗證碼就效率極低,拖慢爆破速度

并且你識別出來也不一定就有弱口令。。。

所以就去掉了這個功能

總流程圖

一套流程下來大概是長這個亞子

63f4a578-1b11-11ed-ba43-dac502259ad0.png

對比測試

找了一批樣本測試,跟tidesec的版本比較了一下

web_pwd_common_crack 跑出來11個

其中7個可以登錄。4個是邏輯上的誤報,跟waf攔截后的誤報。

webcrack 跑出來19個

其中16個可以登錄。2個是ecshop的誤報,1個是小眾cms邏輯的誤報。

webcrack比web_pwd_common_crack多探測出來的9個中

有5個是萬能密碼漏洞,2個是發(fā)現(xiàn)的web_pwd_common_crack的漏報,2個是動態(tài)字典探測出來的弱口令。

最后

這個項目斷斷續(xù)續(xù)寫了半年吧

主要是世界上奇奇怪怪的網(wǎng)站太多了,后臺登錄的樣式五花八門。

有些是登錄后給你重定向302到后臺

有些是給你重定向到登錄失敗頁面

有些是給你返回個登錄成功,然后你要手動去點跳轉(zhuǎn)后臺

有些直接返回空數(shù)據(jù)包。。。

更神奇的是ecshop(不知道是不是所有版本都是這樣)

假如說密碼是yzddmr6

但是你輸入admin888 與其他錯誤密碼后的返回頁面居然不一樣。。。

因為加入了萬能密碼模塊后經(jīng)常有WAF攔截,需要測試各個WAF對各個系統(tǒng)的攔截特征以及關(guān)鍵字。

總的半年下來抓包抓了上萬個都有了。。。。。。

因為通用型爆破,可能無法做到百分百準(zhǔn)確,可以自己修改配置文件來讓webcrack更符合你的需求。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 密碼
    +關(guān)注

    關(guān)注

    8

    文章

    188

    瀏覽量

    30449
  • 網(wǎng)站
    +關(guān)注

    關(guān)注

    1

    文章

    256

    瀏覽量

    23116
  • 管理系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    2333

    瀏覽量

    35721

原文標(biāo)題:WebCrack:網(wǎng)站后臺弱口令批量檢測工具

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何實現(xiàn)串口的自動識別

    用visa設(shè)計串口通信程序每次都得選擇串口,請問有沒有哪位大俠會設(shè)計能夠自動識別串口的程序??謝謝了~
    發(fā)表于 03-23 22:48

    求助帖 labview自動識別

    自動識別 ,不想直接在前面板組合框中輸入,因為如果表格中的A和B變成C和D的話就不匹配了,想實現(xiàn)自動識別。問題是組合框是字符串類型,A,B形成了一個一維數(shù)組,怎么辦!?。∏笾?/div>
    發(fā)表于 04-19 14:34

    負(fù)載自動識別與測量裝置

    制作一個負(fù)載自動識別測量裝置,可以識別感性負(fù)載 容性負(fù)載 純電阻負(fù)載 并能對被測量的負(fù)載進(jìn)行定量的測量 顯示相關(guān)參數(shù)值關(guān)于電源:只提供一組正負(fù)5V直流電源求助~~小白表示毫無思路各位大神們幫幫忙 不需要具體方案 給個思路就行
    發(fā)表于 10-29 17:52

    說說利用vision assitant實現(xiàn)數(shù)字的自動識別。

    最近一周無聊試下vision assitant里面的OCR功能,因為之前做的一個機械零件編號檢測需要識別上面的數(shù)字。簡單介紹一下如何做到自動識別。1.查找范例OCR,里面有個自動識別,先放在
    發(fā)表于 03-18 10:39

    請問USB自動識別芯片RH7901是怎樣自動識別充電設(shè)備的?

    本帖最后由 一只耳朵怪 于 2018-5-22 14:19 編輯 USB自動識別芯片RH7901RH7902 怎樣自動識別充電設(shè)備的?***彭SRH7901 RH7902是USB充電協(xié)議端口
    發(fā)表于 05-22 14:15

    如何使用AM335X的OTG功能,如果插入U盤能否自動識別

    最近使用AM335X的評估板,如何測試OTG的功能,Linux內(nèi)核已經(jīng)配好USB的配置,如果我將U盤接到OTG模式下的U口,系統(tǒng)能自動識別出U盤嗎?如果我將OTG模式下的USB插入PC機,PC能
    發(fā)表于 06-21 01:01

    我想把自動識別出來的圖像從左到右編個順序。

    我做了個程序,能自動識別圖像里面的圓形,并且得到中心點坐標(biāo)及圓的半徑,但是識別得出來的圓形順序是隨機的,我想給它們從左到右編個號,請問能怎么實現(xiàn)?圖像是程序效果圖。
    發(fā)表于 09-28 14:14

    車輛自動識別稱重系統(tǒng)的工作原理

    車輛自動識別稱重系統(tǒng)的工作原理車輛自動識別稱重系統(tǒng)組成車輛自動識別稱重系統(tǒng)典型方案示意圖車輛自動識別稱重系統(tǒng)給用戶帶來的利益
    發(fā)表于 03-01 09:31

    車輛自動識別稱重系統(tǒng)是怎樣組成的?

    車輛自動識別稱重系統(tǒng)的工作原理是什么?車輛自動識別稱重系統(tǒng)是怎樣組成的?
    發(fā)表于 05-13 07:02

    智能交通系統(tǒng)中的車牌自動識別技術(shù)有哪些應(yīng)用呢

    治安卡口等場合,成為研究的熱點。車牌識別技術(shù)是利用計算機等輔助設(shè)備進(jìn)行的自動汽車牌照自動識別就是在裝備了數(shù)字?jǐn)z像設(shè)備和計算機信息管理系統(tǒng)等軟硬件平臺的基礎(chǔ)之上,通過對車輛圖像的采集,采用先進(jìn)的圖像處理、模式
    發(fā)表于 03-02 06:30

    有適合自動識別是risc-v架構(gòu)還是arm架構(gòu)的燒錄器嗎?

    目前市面上有自動識別出被燒錄MCU是risc-v架構(gòu)還Arm架構(gòu)的燒錄器嗎?無需用戶手動切換模式,能夠自動識別到被燒錄MCU的內(nèi)核架構(gòu)。
    發(fā)表于 09-14 17:40

    STLink是怎么自動識別STM32芯片型號的?

    這個自動識別機制是怎么樣做到的
    發(fā)表于 10-27 08:32

    物聯(lián)網(wǎng)RFID車輛自動識別

    人工干預(yù),適應(yīng)于各種惡劣環(huán)境,被廣泛應(yīng)用物流、交通等領(lǐng)域。傳統(tǒng)的停車以及收費問題都是由人工來實現(xiàn),經(jīng)常會發(fā)生排隊等候造成擁堵的現(xiàn)象,不僅增加了工作人員的工作強度,更是浪費了雙方寶貴的時間,解決并改進(jìn)車輛自動識別、停車以及收費等問題顯得十分重。本文設(shè)計的物
    發(fā)表于 01-30 16:21 ?7次下載

    WebCrack后臺弱口令指檢測

    WebCrack是一款web后臺弱口令/萬能密碼批量爆破、檢測工具。
    的頭像 發(fā)表于 01-30 10:40 ?2363次閱讀

    水位自動識別攝像機

    隨著科技的不斷發(fā)展,水位自動識別攝像機作為一種智能技術(shù)產(chǎn)品,正在逐漸應(yīng)用于各種領(lǐng)域,為監(jiān)測水位提供了更加便捷、準(zhǔn)確的方法。這種攝像機可以自動識別水位的高低,實時監(jiān)測水域情況,為防洪排澇、水資源
    的頭像 發(fā)表于 07-31 10:34 ?277次閱讀
    水位<b class='flag-5'>自動識別</b>攝像機