OWASP JUICE SHOP部分題解


本文作者:S0u1

0×00 簡介

OWASP JUICE SHOP是一個開源的web應用靶場,里面包含了共記47個漏洞挑戰任務,囊括了OWASP TOP 10的各個點,是一個很不錯的滲透測試練手項目。

0×01 環境搭建

我使用的測試環境為kali2+docker。

搭建過程如下:

1.安裝docker(可自行百度kali安裝docker教程)

2.下載https://github.com/bkimminich/juice-shop

3.運行docker pull bkimminich/juice-shop

4.運行docker run -d -p 3000:3000 bkimminich/juice-shop

5.打開瀏覽器訪問localhost:3000即可看到JUICE SHOP頁面(也可以在本機上訪問虛擬機的ip地址加上端口號)

看到該頁面即表示搭建成功:

1.png

0×02 開始玩耍

一開始進入這個頁面,可能不知道要干啥。又不像DVWA那樣對各個漏洞進行了分類提供選擇。

這時候我們看一手頁面源代碼,就很舒服:

2.png

發現了幾行被注釋掉的東西,有個Score Board頁面,懂點英語的大概都知道是個啥了。

直接進去看看,里面有任務的名稱,簡要描述,難度等級以及完成狀態:

3.png

同時,當你順利進入這個頁面的時候,你就已經完成第一項任務了,頁面上會有一個原諒色的提示框,以后每一次完成任務,都會看見它一次:

4.png

0×03

下面就開始寫每一題的完成攻略了。大家可以先自己去嘗試一下,有些題目我也還沒做出來。大家一起努力,有些題目應該有很多種不同的思路可以完成。

1.Error Handling

5.png

在登錄頁面賬號處輸入一個單引號’,然后填入任意密碼,點擊Log in。
就會出現報錯了,可以看到這里將整個SQL語句都顯示了出來。

2.XSS Tier 1

根據題目的描述,是使用<script>alert("XSS1")</script>這個payload來進行一次反射型XSS。
這邊一眼就瞄到了搜索框,直接插語句試試,就成功了:

6.png

3.Login Admin

根據在Error Handling里看到的SQL語句,直接進行構造:
SELECT * FROM Users WHERE email=” or 1=1 — AND password = ‘xxxxxx’;
所以在Email處直接輸入’ or 1=1 –,密碼處任意填寫,即可成功登錄。
到購物車里看看,可以看到登錄的是admin用戶:

7.png

4.Password Strength

這個要求我們在不通過預先更改密碼或sql注入的方式登錄到Admin賬戶,結合題目密碼強度,猜測應該是弱口令問題。使用BP的inturder模塊進行一下爆破。

8.png

一下就跑出來了,密碼是admin123,登錄一下吧。

5.Zero Stars

在Contact Us這個界面可以看到打星功能。這里在沒有填內容和打星前是不能點擊submit按鈕的。不過這里只是前端校驗,可以通過把它的disabled屬性直接刪除,來進行繞過。

9.png

然后直接提交,就可以完成這個任務了。
當然,也可以通過BP進行抓包,將數據包里的rating的值改為0。

6.Confidential Document

在About Us這個界面,可以看到有一個鏈接供我們點擊:

10.png

點擊后,發現是一個markdown文件的下載,鏈接格式是:localhost:3000/ftp/legal.md?md_debug=true

這里有個敏感的ftp目錄,嘗試一下是可以訪問的,然后點擊第一個文件即可完成任務:

11.png

7.Forgotten Sales Backup&&Forgotten Developer Backup

這題承接上一題,有一個coupons_2013.md.bak的文件和一個package.json.bak,直接訪問會顯示錯誤:Only .md and .pdf files are allowed!

12.png

這里使用00截斷,訪問192.168.200.129:3000/ftp/coupons_2013.md.bak%2500.md
192.168.200.129:3000/ftp/package.json.bak%2500.md
即可。

8.Admin Section

這一題我是直接猜測路徑,admin、administrator不行,administration成功訪問到了:

13.png

9.Five-Star Feedback

這題得要做出上面一題才能做,頁面的右邊就是評價,登錄到Admin賬號把五星的全給刪除就ok了。

10.Basket Access

在點擊Your Bakset前進行抓包,有一個包是這樣的:

GET /rest/basket/4 HTTP/1.1 Host: 192.168.200.129:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0 Accept: application/json, text/plain, */* Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdGF0dXMiOiJzdWNjZXNzIiwiZGF0YSI6eyJpZCI6NywiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIiwicGFzc3dvcmQiOiI2OTVlYzk0NWMxMmQ2NzMxOTgyM2Q3ZDcxM2U5MjFhNSIsImNyZWF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCIsInVwZGF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCJ9LCJpYXQiOjE1MDk2MDI1MTQsImV4cCI6MTUwOTYyMDUxNH0.BCD9yWxs1viKSlL5j-nhtWqKCW_eovZ5hoSu3fhgUhA Referer: http://192.168.200.129:3000/ Cookie: continueCode=mVOzpKQaWAD4HXuph6tecwIRiqfvSauEhWtyc3IvT4ieHVughgADEonejg6l; io=ENtxNgoEQGfvP05jAAAH; token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdGF0dXMiOiJzdWNjZXNzIiwiZGF0YSI6eyJpZCI6NywiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIiwicGFzc3dvcmQiOiI2OTVlYzk0NWMxMmQ2NzMxOTgyM2Q3ZDcxM2U5MjFhNSIsImNyZWF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCIsInVwZGF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCJ9LCJpYXQiOjE1MDk2MDI1MTQsImV4cCI6MTUwOTYyMDUxNH0.BCD9yWxs1viKSlL5j-nhtWqKCW_eovZ5hoSu3fhgUhA Connection: close If-None-Match: W/"99-9QdKEP5stGr2mvgcEwoFif7Oe9I"

GET請求的url:/rest/basket/4,這個4很讓人在意啊。
把它修改成1或者其它的一些數字,就到達別人的購物車了。

11.Christmas Special

在商品列表中找不到有關Christmas Special的商品,考慮可能是sql語句中對於日期之類的做了限制。看看能不能用or 1=1之類的讓它全部暴露出來。
在查詢處進行抓包,雖然沒有成功,但是暴露出了完整的sql語句:

14.png

AND deletedAt IS NULL應該就是我們找不到目標商品的罪魁禍首了。根據SQL語句的結構對它進行閉合和注釋:

 

15.png

 

登錄任意賬號,將這個商品加入購物車,然后點擊checkout即可:

16.png

0×03 To Be Continued…

 


免責聲明!

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



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