burpsuite app

burpsuite的app也簡稱bapp,可擴展許多更進階的功能,在bapp store上可以選擇多個bapp並下載,幾個常見的bapp介紹如下


Collaborator Everywhere

功能: 能夠自動尋找HTTP標頭中的SSRF,該功能將對每個請求放入常見的header做測試並進行重送

使用方法:

可以把要分析的目標網站指定在 target scope並瀏覽,此功能就會進行分析。如果有發現任何異常將顯示在Issue中 。

refer
http://blog.portswigger.net/2017/07/cracking-lens-targeting-https-hidden.html 

功能測試可參考:
Lab: Blind SSRF with Shellshock exploitation


param miner

功能:可發現潛在的隱藏參數。對於查找web cache poision很有幫助

使用方法:

Target>Site map 指定其中一個請求按右鍵選Extensions > Param Miner > Guess params

有四個選項可以用

  • Guess GET parameters
  • Guess cookie parameters
  • Guess headers
  • Guess everything!

選擇後會對請求傳送測試請求到目標,測試完可以Extensions > Installed > Param Miner > Output 看結果

舉例來說,如果發現x-forwarded-host和x-original-url有問題會顯示如下信息

Queued 1 attacks
Initiating header bruteforce on 0af00023034b2a7380814e2c00a5009e.web-security-academy.net
Identified parameter on 0af00023034b2a7380814e2c00a5009e.web-security-academy.net: x-forwarded-host~%s.%h
Identified parameter on 0af00023034b2a7380814e2c00a5009e.web-security-academy.net: x-original-url~/%s

refer
https://cn-sec.com/archives/2316992.html
https://www.wangan.com/p/7fygfgb3a9adb6b1

功能測試可參考:
Lab: Web cache poisoning to exploit a DOM vulnerability via a cache with strict cacheability criteria
Lab: Combining web cache poisoning vulnerabilities


Turbo Intruder

功能:可以使用極低的資源非常快速的發送請求

使用方法:

以單個請求攻擊方法為例, 先選擇一個請求按右鍵選Extensions > Tubo Intruder > Send to Turbo Intruder,把原本請求欄位中需要更換的值替換成%s

然後在下拉選單中選擇examples/race-single-packer-attack.py,並使用passwords = wordlists.clipboard功能,這會要求此工具使用剪貼簿的列表

完整代碼如下(以下是使用http2協定的寫法)

def queueRequests(target, wordlists):
    # as the target supports HTTP/2, use engine=Engine.BURP2 and concurrentConnections=1 for a single-packet attack
    engine = RequestEngine(endpoint=target.endpoint,
                           concurrentConnections=1,
                           engine=Engine.BURP2
                           )
    
    # assign the list of candidate passwords from your clipboard
    passwords = wordlists.clipboard
    
    # queue a login request using each password from the wordlist
    # the 'gate' argument withholds the final part of each request until engine.openGate() is invoked
    for password in passwords:
        engine.queue(target.req, password, gate='1')
    
    # once every request has been queued
    # invoke engine.openGate() to send all requests in the given gate simultaneously
    engine.openGate('1')

def handleResponse(req, interesting):
    table.add(req)

加速策略

1.減少請求頭大小

透過從請求中刪除不必要的標頭和 cookie 來減少每個請求的出站流量要求,使其盡可能小

2.選擇最快的引擊

速度排名依序是Engine.HTTP2,Engine.THREADED,Engine.BURP2,Engine.BURP

3.調整引擎設定

目標是找到使RPS(每秒請求數)值最大化的值,同時使重試計數器保持接近0

使用Engine.BURP2或Engine.BURP引擎,只要調整concurrentConnections

使用Engine.HTTP2或Engine.THREADED,可調整管道、requestsPerConnection和並發連接參數

4.優化回呼程式碼

例如table.add() 會為 Swing 執行緒帶來沉重的負載,因此可以透過分析每個回應來決定是否將其放入結果表中,從而減輕系統的 CPU 負擔。另外,避免使用正規表示式和循環字串連接。

refer
https://mp.weixin.qq.com/s?__biz=MzAxNDM3NTM0NQ==&mid=2657035813&idx=3&sn=367a002882fbcf76bef85f1424067513&chksm=803fc6fbb7484fed3c007fb39044611b5736bf7429033b393333f7ca118961f2e3b89834b397&scene=0&xtrack=1
https://portswigger.net/research/turbo-intruder-embracing-the-billion-request-attack

功能測試可參考:
Lab: Web shell upload via race condition
Lab: Server-side pause-based request smuggling
Lab: Bypassing rate limits via race conditions


Hackvertor

功能:支持各種hash轉義和編碼,例如unicode,16進制,8進制,html實體等編碼, 並具有自動解碼功能,可以猜測所需要轉換的類型並自動解碼多少

使用方法

在請求中選擇想分析的內容按右鍵選Extensions > Hackvertor > Encode > dec_entities/hex_entities

refer
https://portswigger.net/bappstore/65033cbd2c344fbabe57ac060b5dd100
https://portswigger.net/web-security/sql-injection/lab-sql-injection-with-filter-bypass-via-xml-encoding


Python Scripter

功能:可在送出請求時自動根據python代碼做修改

使用方法: 

使用該功能前需要先讓burpsuite安裝python standalone獨立jar包, 可在http://www.jython.org下載2.7.0版本.然後到burpsuite的extender / option / python environment 指定該jar包

接著就可以到python scripter撰寫python代碼自動修改請求

refer
https://www.freebuf.com/news/193657.html


CPH

功能:提供burpsuite Marcos更多功能, 例如能額外支援json格式(內建功能不支援) .

使用方法

在cph option 設定scope:   intruder, repeater

在cph tab設定如下

1 find matches to this expression
ex:
(messageId\"\:\")(.{32,32})

2 target  the first of the matches

3 replace each target with this expression
ex:
\g<1>\g<mid>

4 choose the value i need is dynamic
然後選擇value returned by issuing a sequence of requests然後在下方填方expression
ex:
messageId\"\:\"(?P<mid>.*?)"\,\"expire

refer
https://www.anquanke.com/post/id/231145


SQLiPy

功能:可自動調用sqlmap對請求做測試

使用方法:

  1. 需要先啟用sqlmap,並指定burpsuite的IP和port python sqlmapapi.py -s -H <IP> -p <Port>
  2. 到burpsutie的sqlmap api區域指定IP和port後點擊start api

注意事項: 該工具不會把所有header都送出去,要自己到CUSTOMER HEADER增加原請求的header

例如:
在headers欄位增加Content-Type: application/json\nAccept-Language: en-US,如困要增加多個header那要用\n做分隔

refer
https://portswigger.net/support/using-burp-with-sqlmap

其他可用做sqlmap自動測試的app還有

  • gason插件
  • sqlmap4burp插件

refer

https://t0data.gitbooks.io/burpsuite/content/chapter18.html


JWT Editor

功能:可分析jwt token並修改token內容

refer
https://portswigger.net/web-security/jwt/working-with-jwts-in-burp-suite#editing-the-contents-of-jwts


RouteVulScan

功能:一個使用Java開發的burp插件,可以遞歸地偵測存在漏洞的路徑。此插件可以透過被動掃描遞歸地偵測每一層的路徑,並透過設定的正規表示式來匹配對應套件的關鍵字,並顯示在VulDisplay介面上。您可以自訂相關路徑、比對資訊和漏洞名稱。偵測到的url將列印在Output中,如果是重複的url,則不會要求並列印在Errors中。如果存取的url符合Config的規則,就會儲存在VulDisplay面板中進行顯示。

該功能僅能搭配專業版


JS Link Finder

功能:用於被動掃描 JavaScript 檔案中的端點連結。將結果匯出到文字檔案 – 排除特定的js文件,例如 jquery、google-analytics。可能會有些API介面會被隱藏在JS中沒有被啟動。這時候可以使用JS Link Finder插件輔助分析Javascript檔案中的接口

該功能僅能搭配專業版


其他burpsuite常用插件介紹

https://www.mad-coding.cn/2019/10/04/burpsuite常用插件推荐与使用/#0x00-前言