今天回到正軌,來繼續介紹 Burp 的功能,今天要介紹的是可以用來重複發送請求的 Repeater 。
當我們透過 Proxy 攔截到請求後可以將請求對請求按右鍵就有選項 send to Repeater。
之後就可以切換 Repeater 的分頁。
這時我們就可以對跟 Proxy 分頁一樣對請求做修改,
但這邊跟 Proxy 分頁功能不太一樣,Proxy 分頁我們是用 Forward 把攔截下來的請求送出去,送出去後如果我們要重新調整一點參數再送一次,就必須要再重新到瀏覽器發出請求讓 Burp 攔截請求後再修改。
Repeater 則是可以一直重複將請求送出來觀察回應,送完一次請求旁邊就會有 Response 可以即時看,可以根據自己的經驗或知識來做到快速測試,很適合拿來做精確的測試。
這邊用 Portswigger 的 Lab: Basic SSRF against the local server 這個靶機來作演示,要做測試的話要挑靶機或是自己架的環境,以免觸法喔 !
這題剛好摸著摸著把題目給解了,順便來講一下怎麼解的,中間也都是用 Repeater 來做的。
題目內容 :
這個靶機有一個檢查庫存的功能,這個檢查庫存的功能是從系統中取值。
解這個題目需要將檢查庫存的網址換成 http://localhost/admin 然後再刪除 carlos 這個使用者。
進到題目的頁面後,可以看到很多商品
點進去隨便一個商品的頁面可以發現商品頁面的下方有個 Check Stock 的按鈕,按下去後下面會跳出數字。
我們就先攔截這個送出查詢庫存的請求。
把請求送到 Repeater,來一步一步測試。
仔細看請求中有一個參數,這個參數應該就是題目提到用來檢查庫存的功能 ( API )。
stockApi=http%3A%2F%2Fstock.weliketoshop.net%3A8080%2Fproduct%2Fstock%2Fcheck%3FproductId%3D1%26storeId%3D1
接下來就照著題目的要求我們把整段 API 換成 http://localhost/admin
stockApi=http://localhost/admin
將改完的請求送出,就可以發現回應是一個 HTML 的文件。
其實仔細檢查題目要我們更換的網址就是以網頁的權限去存取他自己 ( localhost ) 的 /admin 頁面。
我們也可以自己在網址後面加 /admin 來看看會發生什麼事。
可以看到寫說我們沒有權限存取 admin 的頁面,除非我們是以 admin 的身分登入或用 lookback ( localhost ) 來發請求。
用 localhost 來請求是一個提示。
接著我們繼續回去把 Response 的封包給看完。
看完後可以看到這個 admin 頁面中有可以移除掉使用者的功能。
題目是叫我們把 carlos 這個使用者給移除掉。
到了這邊應該就是要用 /admin/delete?username=carlos 這個請求來刪除使用者。
但上面我們直接存取的時候寫我們沒有權限。
不過也有提到我們可以用 localhost 來發送請求效果是等同 admin 權限的。
而剛剛我們照題目說的把庫存檢查的 API 改掉那邊其實就是我們成功用 localhost 存取到了 admin 頁面,那代表我們在 /admin 後面加上 /delete?username=carlos 送出請求應該就可以了。
發送完請求後,回應寫說我們被重新引導回 /admin ,沒有寫被擋下來應該就是可以了,重新送一次 /admin 的請求可以看到 carlos 人已經沒了。
到這邊這個 lab 就解完了。
今天介紹了 Repeater 怎麼使用,也順便用 Repeater 演示解完一個 Lab,可以發現幾乎所有的動作都是在 Repeater 上完成,Repeater 用起來很容易上手,雖然我是第一次摸但用起來其實相當直覺,看大家分享這個工具實際上也會用得很多在做這類練習的時候,學起來應該不會吃虧。