Owasp juice shop靶场Forged Coupon writeup

0x01 前言

突然就想起来我19年年底公司里面老师傅搭建了一个Owasp juice shop的靶场。沉迷了两三天做出了这个六星题(好像是六星)。这个靶场在不断的更新,这个题的答案除了官方文档,根本搜索不到,所以拿出来分享。大多数图片来自我公司内部提交的write up文档,可能有的图片比较模糊。

0x02 题目要点

  1. 任意文件下载
  2. 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