Owasp juice shop靶场Forged Coupon writeup
0x01 前言
突然就想起来我19年年底公司里面老师傅搭建了一个Owasp juice shop的靶场。沉迷了两三天做出了这个六星题(好像是六星)。这个靶场在不断的更新,这个题的答案除了官方文档,根本搜索不到,所以拿出来分享。大多数图片来自我公司内部提交的write up文档,可能有的图片比较模糊。
0x02 题目要点
- 任意文件下载
- z85字符串加解密
0x03 writeup
在前面的题目里面可以找到一个目录遍历漏洞http://xxx.com/ftp/
根据观察文件名字,可以发现一个2013年的优惠卷的备份文件,直接下载是不行的,可以通过%00截断进行绕过下载限制http://xxx.com/ftp/coupons_2013.md.bak%2500.md
,直接查看一下文件的内容,可以发现每条优惠卷都是加密过的
观察一下发现为z85加密,npm有对应的库可以直接加解密
解密两个看一下规律
三个英文字母明显为月份缩写,通过文件名可以得知为优惠券为13年可用,通过测试了解到最后两个数字为折扣,故构造DEC19-80,进行加密
直接拿去用就行了
0x04 z85加密方法
其实z85加密在之前我并没有听过,但是这个靶场在互联网上是开源的,出题者也说了允许进行代码审计。那就可以通过代码审计追踪方式进行发现。在购买商品位置抓一个验证优惠券是否可以用的数据包
观察数据包可以发现,url为http://xxx.com/rest/basket/2/coupon/l%7D6D%24iv%23%25v
,直接去github把代码下载下来一行一行看。先看一下app.js,直接运行了server.js
观察url,发现路由规则为/rest/basket/1/coupon/后面为提交的优惠券内容
,在server.js中追踪路由规则找到coupon()函数
查看coupon()函数对应的文件追踪到/routes/coupon.js
通过coupon.js发现了/lib/insecurity.js
前往/lib/insecurity.js
对coupon字符串进行跟踪后发现,通过z85方式进行加密
0x05 相关链接
bkimminich/juice-shop: OWASP Juice Shop: Probably the most modern and sophisticated insecure web application
z85-cli - npm