# OWASP Juice Shop [TOC] # 介紹 OWASP Juice Shop 是一個可以自行架設,用來學習攻擊手法的網站。 為了方便,我這邊是使用Docker架設,會有幾個題目無法做。  OWASP Juice Shop 長這樣↑ 右上角由左至右分別是 "search" -> "account" -> "language"  點擊"account"會出現"Login",看到帳密我當然先injection啊,結果我都還沒找到計分表就先打了一個題目XD  頁面的左上角展開長這樣  # 1星 ## Score Board 點擊左上角裡面的"新手教學"  它告訴我要先找到"Score Board"的URL,可以透過 "F12"來找     在新手教學中提示,可以透過"F12"來找到 Score Board 的頁面,所以我們直接"Ctrl+F"收尋  在上圖中可以看到有一行```path: "score-board",```,因此我們將 "score-board" 打在網址後面,成功出現 Score Board啦!!  ## DOM XSS(還沒寫完) 此題直接告訴我們透過注入 ```<iframe src="javascript:alart('xss')">``` 進行攻擊  在 輸入 ```123``` 來看看頁面上會有什麼變化,可以看到網址的部分多了 ```search?q=123``` 123的部分是我們輸入的  將輸入改成 ```<h1>123``` 後,可以發現收尋結果換了一行  將輸入改成 ```<h1>123 <h2>2``` 後,可以發現收尋結果中出現了第二行比較小的2,由此可以確認輸入並無過濾可以注入  將題目敘述給我們的 ```<iframe src="javascript:alart('xss')">``` 輸入後,成功跳出 alert 視窗  ## Confidential Document 這題要我們存取機密檔案,首先我會想到的是藉由 ```robots.txt``` 來看看有什麼不想被看到的東西  我們可以看到 ```robots.txt```提示我們有一個 ```/ftp```的路徑  在 ```ftp``` 的路徑下可以看到有很多檔案,都點開來康康  可以發現在 ```acquisitions.md``` 的檔案裡面寫到 ```This document is confidential!```,成功解題  # 2星 ## Login Admin  最簡單 Injection 的方式來登入,在帳號的部分輸入 ```'OR TURE --'```,密碼就隨便輸入了  成功登入  ## Admin Section 題目敘述看起來是要找到 Admin 的管理頁面  所以利用開發者工具,收尋"admin",可以看到有個路徑是 administration  成功找到啦  ## Five-Star Feedback 這題要刪除所有5星的回饋  承接上一題我們拿到的後台頁面  直接刪除5星的回饋就可以了  # 3星 ## Forged Review  首先隨意找一個商品撰寫評論,並用 BurpSuite 攔截  可以看到內文中 ```"author":"admin@juice-sh.op"``` 是評論者的帳號  所以我們隨意改帳號,然後送出  在評論中可以看到修改評論者的評論  ## Forged Feedback 跟上一題的解題方式差不多,只是改成 feedback  點擊"客戶意見"  輸入意見,然後用 BurpSuite 攔截  可以發現改 ```UserId``` 這個欄位就可以了  為什麼是改 ```UserId``` 這個欄位呢?反覆送出意見中,發現紅框圈的是 ```UserId``` ,而 ```UserId 1``` 是誰呢?跟左邊已註冊用戶比對,可以發現是 ```admin@juice-sh.op``` 也就是現在我使用的帳號  所已改 ```UserId``` 送出就成功啦   ## Payback Time 這個敘述一看,感覺就是要靠買負數個商品來賺錢(ex.-1、-2......)  所以挑一個貴的加入購物車,用 BurpSuite 攔截封包  可以發現 Context 中有一個欄位 ```quantity``` 為購買的數量  所以將 ```quantity``` 的欄位改為負數  送出 request 後,可以看到在購物籃中顯示購買了 ```-999``` 個,總價的部分為負數  將訂單送出完成結帳,這一題就解完啦  ## Admin Registration 要註冊有管理員權限的帳號,直覺上在註冊帳號時,應該會有能更改權限的欄位,例如:isAdmin、role......等  所以我們就註冊一個帳號  用 BurpSuite 看一下封包內容,但沒有看到跟權限相關的欄位,這邊猜測可能要自己新增權限相關的欄位,先不急,可以觀察看看有在其他的 request 中有沒有藏跟權限相關的欄位  先用剛註冊的帳號登入,接著到處亂點觀察封包的內容  在購物籃的封包中,可以看到有一個欄位 ```token``` 很長,因此懷疑可能會有我們所需的資訊  用 base64 decode 後,可以看到有個欄位是 ```"role":"customer"```,看來只要在註冊時新增 ```role``` 這個欄位  為了確定管理員權限的 ```role``` 欄位要如何填寫,特別登入 admin 帳號抓 token 來看,可以確認新增欄位 ```"role":"admin"```  所以在註冊的封包中加入 ```role``` 的欄位  用新註冊的帳號登入後,查看是否能看到管理者頁面,成功解題  ## Database Schema(尚未完成)  # 4星 ## Easter Egg 這題要我們找一個藏起來的 Easter Egg  還記得 ```ftp``` 這個路徑嗎?當中有一個檔案叫做 ```eastere.gg``` 看起來就跟這一題有關係  然而點進去後,卻告訴我們只允許 ```.md``` 和 ```.pdf``` 的副檔名  我們先在後面加上 ```.pdf``` 後,發現回應的訊息告訴我們沒有 ```eastere.gg.pdf``` 這個檔案,看來要想辦法讓它讀名稱為 ```eastere.gg``` 的 pdf 檔案  因為我們要的副檔名是 pdf,因此我們要塞一些東西在 ```.pdf``` 之前,讓 URL 有辦法辨識我們要的 pdf 副檔名,透過 URL 編碼,我們可以知道 ```%``` 的 URL 編碼是 ```%25```,```NULL``` 的 URL 編碼是 ```%00```,故塞入 ```%2500```   成功解題,為什麼塞入 ```%2500``` 就可以了呢?首先 URL 編碼本身就是以 ```%數字``` 作為編碼,因此在讀 ```%2500``` 時,會將 ```%25``` 轉換為 ```%```,就變成 ```%00``` 在 URL 編碼中為 ```NULL``` ,於是 ```eastere.gg%00```這個檔案名稱就能被成功辨識。  ## Nested Easter Egg 續接上一題  我們將 ```eastere.gg%00.pdf``` 的檔案打開,可以看到下面這一段文字 ``` "Congratulations, you found the easter egg!" - The incredibly funny developers ... ... ... Oh' wait, this isn't an easter egg at all! It's just a boring text file! The real easter egg can be found here: L2d1ci9xcmlmL25lci9mYi9zaGFhbC9ndXJsL3V2cS9uYS9ybmZncmUvcnR0L2p2Z3V2YS9ndXIvcm5mZ3JlL3J0dA== Good luck, egg hunter! ``` 當中 ```L2d1ci9xcmlmL25lci9mYi9zaGFhbC9ndXJsL3V2cS9uYS9ybmZncmUvcnR0L2p2Z3V2YS9ndXIvcm5mZ3JlL3J0dA==``` 這一串文字一看就是經過 md5 加密過的,所以解密後會得到 ```/gur/qrif/ner/fb/shaal/gurl/uvq/na/rnfgre/rtt/jvguva/gur/rnfgre/rtt``` 這樣的訊息  剛才得到的訊息看起來就像是目錄,然而並無任何訊息,故懷疑因該還需要其他的解密  首先懷疑是否跟凱薩加密有關係,透過程式去跑凱薩機密,根據結果來猜測紅框處才是真正的目錄  成功解題!!  ###### 待編輯   
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up