本文作者: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地址加上端口號)
看到該頁面即表示搭建成功:
0×02 開始玩耍
一開始進入這個頁面,可能不知道要干啥。又不像DVWA那樣對各個漏洞進行了分類提供選擇。
這時候我們看一手頁面源代碼,就很舒服:
發現了幾行被注釋掉的東西,有個Score Board頁面,懂點英語的大概都知道是個啥了。
直接進去看看,里面有任務的名稱,簡要描述,難度等級以及完成狀態:
同時,當你順利進入這個頁面的時候,你就已經完成第一項任務了,頁面上會有一個原諒色的提示框,以后每一次完成任務,都會看見它一次:
0×03
下面就開始寫每一題的完成攻略了。大家可以先自己去嘗試一下,有些題目我也還沒做出來。大家一起努力,有些題目應該有很多種不同的思路可以完成。
1.Error Handling
在登錄頁面賬號處輸入一個單引號’,然后填入任意密碼,點擊Log in。
就會出現報錯了,可以看到這里將整個SQL語句都顯示了出來。
2.XSS Tier 1
根據題目的描述,是使用<script>alert("XSS1")</script>這個payload來進行一次反射型XSS。
這邊一眼就瞄到了搜索框,直接插語句試試,就成功了:
3.Login Admin
根據在Error Handling里看到的SQL語句,直接進行構造:
SELECT * FROM Users WHERE email=” or 1=1 — AND password = ‘xxxxxx’;
所以在Email處直接輸入’ or 1=1 –,密碼處任意填寫,即可成功登錄。
到購物車里看看,可以看到登錄的是admin用戶:
4.Password Strength
這個要求我們在不通過預先更改密碼或sql注入的方式登錄到Admin賬戶,結合題目密碼強度,猜測應該是弱口令問題。使用BP的inturder模塊進行一下爆破。
一下就跑出來了,密碼是admin123,登錄一下吧。
5.Zero Stars
在Contact Us這個界面可以看到打星功能。這里在沒有填內容和打星前是不能點擊submit按鈕的。不過這里只是前端校驗,可以通過把它的disabled屬性直接刪除,來進行繞過。
然后直接提交,就可以完成這個任務了。
當然,也可以通過BP進行抓包,將數據包里的rating的值改為0。
6.Confidential Document
在About Us這個界面,可以看到有一個鏈接供我們點擊:
點擊后,發現是一個markdown文件的下載,鏈接格式是:localhost:3000/ftp/legal.md?md_debug=true
這里有個敏感的ftp目錄,嘗試一下是可以訪問的,然后點擊第一個文件即可完成任務:
7.Forgotten Sales Backup&&Forgotten Developer Backup
這題承接上一題,有一個coupons_2013.md.bak的文件和一個package.json.bak,直接訪問會顯示錯誤:Only .md and .pdf files are allowed!
這里使用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成功訪問到了:
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語句:
AND deletedAt IS NULL應該就是我們找不到目標商品的罪魁禍首了。根據SQL語句的結構對它進行閉合和注釋:
登錄任意賬號,將這個商品加入購物車,然后點擊checkout即可:
0×03 To Be Continued…
















