Web攻防之暴力破解(何足道版)


原創文章

原文首發我實驗室公眾號 獵戶安全實驗室

然后發在先知平台備份了一份

 

1 @序

  攻防之初,大多為繞過既有邏輯和認證,以Getshell為節點,不管是SQL注入獲得管理員數據還是XSS 獲得后台cookie,大多數是為了后台的登錄權限,假若我們獲得一枚口令,都是柳暗花明。不管口令復雜與否,只要在構造的字典內都是爆破之結晶。

  Web形態及業務之錯綜,我們暫可將能夠自定義字典的請求歸類到爆破,以便信息的提煉和知識的邏輯推理。

  本文主要收集了常用的一些爆破相關的零碎點和技巧點。

 

2 賬戶探測

  1. 探測存在與否
  2. 第一梯隊:Top500用戶名、手機號
  3. 第二梯隊:郵箱、員工編號

 

3 指定口令爆破用戶名

  1. 指定類123456口令爆破用戶名
  2. 正常的top500,top10000帳號;
  3. 單個字母、兩個字母、三個字母、四個字母隨機組合的帳號;

    a)      小工具pydictor值得推薦

      python pydictor.py -base L --len 2  3

       

    b)      Burp也可以

       

 

  4. 一位數字、二位數字、三位數字、四位數字的隨機組合

for n in xrange(10000):

     print str(n).zfill(4)

  5. 廠商名相關帳號,

    a)      如:facebook、fb_steven …

    b)      頁面聯系郵箱的規則學習及自創建

4  密碼爆破

  1. top500, top3000,top10000,自定義密碼

    a)      Top 系列,幾乎安全從業都有自己的弱口令字典,常規就好,太大的字典跑起來也費勁,關鍵是定制

    b)      定制字典,pydictor值得推薦:https://github.com/LandGrey/pydictor

      

 

    c)      社工庫的使用,指定用戶的歷史密碼,是一種嘗試

  2. 廠商特色口令生成,如baidu@123

    a)      適用於應用管理員類人員以及主機協議類密碼

    b)      更多定制類字典也可以pydicor

    c)      http://www.cnblogs.com/shellr00t/p/5316401.html

      

  3. 加密密碼暴力破解

    a)      普通編碼類,如base64

       

 

    b)      自定義加密算法(目標系統使用了可猜測的加密算法去加密口令)

  可參考浮萍寫的基於RSA算法加密口令后爆破腳本:

  https://github.com/fupinglee/MyPython/blob/master/web/RSADemo.py

    c)      Selenium 自動瀏覽器提交模塊(可適用與不明加密算法,模擬正常操作流)

     

    

 

 

  詳細代碼過程參考我博客:

  http://sm0nk.com/2017/11/27/%E5%9F%BA%E4%BA%8ESeleinum%E7%9A%84%E5%8F%A3%E4%BB%A4%E7%88%86%E7%A0%B4%E5%BA%94%E7%94%A8/

 

  4. 弱文件后的后台爆破

    a)      弱文件爆破獲得后台

    b)      后台密碼爆破

                 i.          各大中間件及CMS的口令破解,如weblogic 、tomcat

                ii.          自定義后台的密碼破解

  5. Webshell 密碼爆破

    a)      Shell 發現(弱文件以及蛛絲馬跡)

    b)      Shell 爆破(有專用工具,也可用burp完成)

  6. 輔助信息

    a)      Web 源碼、JS 以及注釋信息中是否包含用戶名以及口令指定規則

    b)      技術運維人員的桌子上面的便簽信息(若能接觸到目標內部)…

 

5   登錄驗證碼爆破

  1. 驗證碼繞過

    a)      驗證碼非必須參數,可省略

    b)      驗證碼不失效,可多次使用

    c)      驗證碼問題集合答案有限,可以遍歷后破解

    d)      非空邏輯校驗,驗證碼置空 或 去掉校驗參數的請求

      e.g. ecshop后台暴力破解驗證碼繞過

  2. 簡單驗證碼識別

     

 

https://github.com/fupinglee/CrackCaptcahLogin/releases

  類似工具很多,看使用習慣。

 

  3. 高模糊度驗證碼識別

    a)      一般的識別流程都是二值化、去干擾、區域選擇、OCR識別

    b)      可用雲打碼平台 (不打廣告)

6  短信/郵箱驗證碼爆破

  1. 部分登錄驗證碼的分類也可適用於此
  2. 驗證碼的本身繞過

    a)      返回包回顯(包括返回包、輸出在cookie等)

    b)      JS控制

    c)      返回包控制:True&false控制(0&1),修改返回包可繞過

  3. 4位數字,驗證碼爆破,很快

  4. 6位數字,驗證碼爆破;可根據多線程的前提進行多進程處理,0-199999一波;200000-399999一波…(依次類推);也可以看頻率,哪塊區間分布的概率較高可重點關注;也可以指定前一位或兩位進行爆破。

  5. 弱token

    a)      例:奇虎360任意用戶密碼修改漏洞,發送給郵箱的驗證鏈接里面的vc值為時間戳的md5加密;作為一種檢驗參數可被猜測。

    b)      基於密碼找回的手機號、UID、郵箱等遍歷,結合客戶端源碼可能的些蛛絲馬跡

    c)      不完全屬於爆破邏輯,但可互補增值,參考

      http://bobao.360.cn/learning/detail/287.html

 

7  數據信息爆破(遍歷)

  1. 關鍵參數的的信息遍歷(select)

    a)      包括用戶名

    b)      ID號

    c)      手機號

    d)      郵箱

    e)      身份證號

    f)       訂單號

    g)      銀行卡

    h)      信用卡(e.g 攜程烏雲漏洞)

                 i.          PAN+信用卡到期時間(即:最小的身份驗證模塊);

                ii.          PAN+信用卡到期時間+CVV;

               iii.          PAN+信用卡到期時間+CVV+持卡人地址;

               iv.          From http://t.cn/Rfrsdki

   

  2. 批量注冊(insert)

    a)      邏輯不嚴謹或校驗不嚴格,實現多帳號的薅羊毛

  3. 一套組合拳(也可關聯到爬蟲):

    a)      兩個常見的功能:密碼找回、網站論壇

    b)      切入點一:從密碼找回功能分析,有相當一部分網站,提供賬號檢測功能,且提示存在與否,根據友情提示以及次數限定情況,可以通過返回包匹配存在的帳號,包括用戶名、甚至手機號(其實主要是手機號)。

    c)      切入點二:密碼找回功能,輸入手機號后會提示…正在找回XXX的密碼信息…,這個就是用戶名,(若輸入用戶名,有可能提示正在找回某手機號的密碼信息(部分打碼))

    d)      切入點三:網站論壇,為了交流,以及用戶的活躍度,部分網站存在bbs、club等論壇信息,一般二次開發的Discuz 。 上面會存在關於個人的一些數據,比如用戶名(論壇網名)、性別、粉絲情況、帖子情況、聯系方式、住址(部分需要登錄權限)、還有一些傾向數據,比如購物平台關注的商品;

    e)      從這三個切入點來講,單獨哪個可能都影響不足夠大,沒有達到影響的最大化。從一個數據利用者角度分析,最希望得到與平台性質相關的屬性,比如交友網站的性別和聯系方式信息,房產網站的傾向房產和聯系方式等屬性。 那把三個切入點的數據整合起來能得到什么呢?

                 i.          通過用戶檢測 獲得手機號用戶個人信息;

                ii.          通過手機號檢測,獲得用戶名信息;

               iii.          通過論壇遍歷,獲得ID和用戶名信息;

               iv.          通過關聯以上數據,可以對應手機號------>用戶名 ------>  論壇ID,同樣也就意味着獲得了某手機號的用戶關注了什么的信息。Demo 說明

用戶:188xxxx8888  用戶名:HelloWorld  關注:某別墅

用戶:138xxxx9999  用戶名:52BMW    關注:寶馬X6

用戶:159xxxx6666  用戶名:HelloKitty   就職某金融企業

用戶:186xxxx5555  用戶名:獨孤求敗   購買了大疆無人機

 

針對Demo數據,從一個數據威脅角度來分析,那可以實現精准營銷。帶來的場景就是另一片天地。

 

 

8  爆破關聯

  1. 數據重放-短信炸彈

    a)      無任何限制的短信炸彈

    b)      單獨手機號存在短信閾值限制,有可能通過間隔符繞過,18888888888,,,與18888888888效果一樣;

    c)      針對單獨手機號有閾值限制,但可隨意輪詢其他手機號,同樣有危害

    d)      會導致短信網關的資源浪費和流失

  2. 數據重放-郵箱炸彈

    a)      相對短信炸彈成本較低,但其邏輯同短信炸彈

  3. 子域名爆破

    a)      根據自己平台和習慣選擇即可:subDomainsBrute、Layer、FuzzDomain

  4. 子目錄、弱文件爆破

    a)      弱文件爆破,對比過老御劍、weakfilescan、dirfuzz、cansian.py 仍然覺得一款基於python3的dirsearch 值得擁有(可自定義字典)

    https://github.com/maurosoria/dirsearch

    b)      也可以自己寫,就是基本的web請求,以及返回包的長度或特征匹配。

       

 

  5. Fuzzing 測試

    a)      SQL、XSS

    b)      拒絕服務漏洞,例如SPIKE對表單測試特殊字符的異常處理

 

9  協議口令爆破

  1. SSH RDP FTP MySQL MSSQL …

    a)      Fenghuangscan值得推薦,Hydra (Kali自帶)值得擁有;

    b)      Nmap 也可完成部分破解工作,本身是一個基礎工具,但script下的腳本能讓你做出不基礎的事情

    c)      畢竟直接拿到遠控權限事半功倍,可直接獲取數據,對於測試來講還可獲取源碼,以半審計的方法進行挖掘。

    d)      且有人以此為生(全網抓雞)

  2. SMTP、VPN協議類

    a)      第一點提到的一些協議,初具成熟均不公開於互聯網(當然意識和測試情況也有),但SMTP 和 VPN 類,大部分都有,也是入侵的概率很大的入口點

                 i.          brut3k1t(github有)

                ii.          也有自定義的PY腳本

               iii.          小技巧點:部分對同一用戶有密碼失敗次數限制,可把循環顛倒過來,用同密碼刷一遍用戶,在用下一個口令刷一遍用戶…

    b)      翻到郵箱,根據信息檢索,信息很精准,很有可能獲得認證信息

    c)      獲得VPN認證,在內網搞事,一不小心就干掉了一個大家伙。

  3. 特殊服務類未授權訪問或者弱認證

    a)      Redis未授權訪問

    b)      Jenkins未授權訪問

    c)      MongoDB未授權訪問

    d)      ZooKeeper未授權訪問

    e)      Elasticsearch未授權訪問

    f)       Memcache未授權訪問

    g)      Hadoop未授權訪問

    h)      CouchDB未授權訪問

    i)       Docker未授權訪問

    j)       畢竟這些未授權可以直接getshell或直接獲得數據

詳細介紹利用及加固請參考https://www.secpulse.com/archives/61101.html

 

10 攻擊防御

  1. 登錄界面暴力破解,哪些加固方法?

    a)      閾值的設立

                 i.          單位時間內超過額定請求次數,封帳號&封IP段時間

                ii.          支持逆向思路

    b)      密碼輸入錯誤次數達到3次后增設驗證碼

                 i.          驗證碼自身的安全性參考下一個問題

    c)      自身應用系統的健壯性

                 i.          強制要求用戶注冊時滿足口令復雜度要求

                ii.          定期檢索數據庫弱口令帳號的存在,可比對top500的密文值

  2. 圖形驗證碼自身常見的加固方法?

    1)      字體扭曲

    2)      字體粘連

    3)      字體鏤空

    4)      字體混用

    5)      主體干擾線

    6)      背景色干擾

    7)      背景字母干擾

    8)      公式驗證碼

    9)      加減法驗證碼

    10)   邏輯驗證碼

  3. 安全登錄流程設計?

    a)   系統設置一個固定的鹽值,該鹽值最好足夠復雜,如:1qaz2wsx3edc4rfv!@#$%^&**qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA

    b)   用戶注冊、修改密碼時,將用戶的原始密碼與我們的固定鹽值拼接,然后做md5運算。

    c)   傳遞至后端,保存進數據庫(數據庫中保存的密碼是用戶的原始密碼拼接固定鹽值后,md5運算后的結果)。

    d)   登錄時,將用戶的原始密碼與我們的固定鹽值進行拼接,然后做md5運算,運算后的結果再拼接上我們的隨機碼,再次md5運算,然后提交。

    e)   后端接收到登錄請求后,將從數據庫中查詢出的密碼與session中的隨機碼拼接后,md5運算,然后與前端傳遞的結果進行比較。

    PS:這種登錄流程對於數據包重放來講的確有效,但對於正常的selenium瀏覽器輸入爆破仍需要結合閾值和驗證碼來防御。

  4. Modsecurity類防御暴力破解類?

    a)      若代碼變更成本大,可以使用Modsecurity (當然直接買硬WAF也可以)

    b)      https://www.trustwave.com/Resources/SpiderLabs-Blog/Defending-WordPress-Logins-from-Brute-Force-Attacks/(Freebuf有翻譯)

       

 

  5. 針對驗證碼可多次重用的加固方法?

   

  6. 主機類暴力破解的防御方法?

    a)      自身的帳號口令體系滿足復雜度要求

    b)      若非必須的服務,直接禁止對外的開放,包括22、3389

    c)      限定指定IP訪問(網絡的訪問控制)

    d)      不使用口令方式,使用私鑰類登錄

    e)      意識類:不在標簽寫密碼;運維管理類也不直接統記錄到一個txt

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM