本writeup所有题目基于OWASP Juice shop V7.0.2,靶场更新较快,后续有新的题目会接着更新。本版本靶场三星难度题目如下:
点此看环境搭建和一星难度wp
点此看二星难度wp
Learn about the Token Sale before its official announcement. 在官方宣布前了解一下Token销售
看到题目一怔,是跟区块链比特币有关呢,仔细看了几遍hint。。这个题目暂时搁置了一会儿。
后续在做其他题目的时候看到了 http://192.168.209.146:3001/dist/juice-shop.min.js 这个js文件,搜索token
发现里面存在题干关键的Token Sale
这个词。关键代码如下:
粘贴这段代码到控制台运行一波
访问这个地址就完成题目了,这道题的意思应该是掩饰了一下地址吧,没太懂
这个地址里面有一些关于区块链ICO白皮书之类的东西,看到这个调侃笑死我了哈哈哈
Post some feedback in another users name. 用其他人的用户提交反馈
在http://192.168.209.146:3001/#/contact中提交评价的时候抓包改包,将UserId
改成其它即可。
Access a salesman’s forgotten backup file. 进入到售货员遗忘的备份文件
在第一关的 Confidential Document 机密文件
题目中找到了一个ftp目录,并且该目录限定了只能查看 md 和 pdf 后缀的文件,在这里可以使用%00截断判断下载文件。其他文件同理。
Log in with Bender’s user account.
利用SQL注入即可,payload 为email":"' or 1=1 limit 5,1 --","password":"123
,修改limit的序列即可
Log in with Jim’s user account.
同上
Place an order that makes you rich. 下一个令你富有的订单。
商品加车漏洞。添加购物车的时候抓包,修改POST数据 {"ProductId":8,"BasketId":"10","quantity":1}
中的quantity为负数,加车后结账金额为负数。
Change the href of the link within the OWASP SSL Advanced Forensic Tool (O-Saft) product description into http://kimminich.de. 将owasp ssl高级取证工具(o-saft)产品描述中的链接的href更改为http://kimminich.de。
要改产品描述。访问首页,点击一个商品,在Chrome里面选择XHR请求,有几个个API接口,其中有一个包含描述信息的链接如下
http://192.168.209.146:3001/api/Products/1?d=Fri Apr 20 2018 d后面跟的是时间参数,不加的话好像是返回最新修改日期
如果API接口使用了PUT或者DELETE这些危险的HTTP方法的话,数据就很容易被修改。这里试了一下PUT请求,结果是可以搞定的。使用火狐插件 RESTclient ,记得加HTTP头指定类型为 json ,注意要使用{"description": "TEST"}
而不能是{"data":{"description": "TEST"}}
所以最后的payload为{"description": ""}
Reset Jim’s password via the Forgot Password mechanism with the original answer to his security question. 通过忘记密码来重置Jim的密码,要求回答他的安全问题
首先通过登陆的SQL注入{"email":"' or 1=1 limit 1,1 --","password":"123"}
搞到邮箱号, [email protected]。问的安全问题是Your eldest siblings middle name?
,这道题没法儿社工啊。
这道题懵逼了,查了别人的解题说是美国的社工?提到JIM会想起 James T. Kirk ?反正我搜JIM只能搜到 Jim Parsons ( Sheldon 扮演者233)
所以正确的解答路径是
Upload a file larger than 100 kB.Upload a file that has no .pdf extension. 上传一个文件大于100kb,上传一个文件不用pdf扩展名
两道题在一块儿写。文件上传跟前面说到的上传XML是同一个点,位于投诉页面。尝试提交,查看XHR请求,很明显有个接口 http://192.168.209.146:3001/file-upload 是用于文件上传的。
此处先用burp截断,点击上传,提示
burp处没有收到请求,说明是前端校验,因此用改包、写脚本等方法直接post到上传接口处即可。
扩展名绕过可以用%2500
截断,也可以用如上的方法。
Perform a persisted XSS attack with bypassing a client-side security mechanism. 绕过客户端安全机制执行存储型 XSS攻击。
xss的输入点其实不多,但是最容易想到的是用户名,注册一个用户。改包修改邮箱为xss语句
php {"email":"","password":"123123","passwordRepeat":"123123","securityQuestion":{"id":1,"question":"Your eldest siblings middle name?"}
就阔以了,然而计分板没有显示我完成xss。
后来发现 api/Products 接口可以POST,这里POST一个新的商品也是可以XSS攻击的。注意需要用管理员的 Authorization 进行验证,否则会报401错误。
Retrieve the content of C:\Windows\system.ini or /etc/passwd from the server. 用XXE攻击搞到服务器的/etc/passwd
构造xml文件如下
xml version="1.0" encoding="utf-8"?>
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>
```上传到投诉页面的上传点就过了,不过暂时不知道输出点哪儿
**update**: 使用docker搭建时,XXE的关卡都不可用