【juice-shop靶场挑战】六星挑战

简述及环境说明

本篇是juice-shop靶场的六星挑战。靶机为kali_linux,攻击机为Windows11,靶场是目前最新版19.1.1,使用docker搭建。也由于是基于docker,有的挑战在docker环境下不兼容导致打不了,这些做不了的挑战这里就不演示了。详细配置内容和环境搭建可见专栏《juice-shop靶场挑战》的靶场搭建篇。

挑战内容

Arbitrary File Write

docker环境不支持,跳过。

Forged Coupon

伪造优惠券代码,获得至少80%的折扣。

在之前的四星挑战Forgotten Sales Backup中获取到了一个备份文件,打开后是优惠卷码。通过尝试发现是z85格式的密文,解密后得知优惠券的格式是"[月份年份]-[折扣]"。模仿这个格式写制作一张99%折扣的优惠卷码。

接着只需要正常使用优惠卷购买一个商品就能完成挑战。

Forged Signed JWT

伪造一个几乎正确的RSA签名的JWT令牌,该令牌模拟(不存在的)用户rsa_lord@juice-sh.op

通过目录爆破找到存放公钥的目录encryptionkeys,其中"jwt.pub"就是要用到的。

在burp的HTTP历史记录中找一个最近的包,发到重放模块,其中Authorization请求头的内容就是jwt。

将jwt复制到能编辑jwt的软件中,将邮箱改成rsa_lord@juice-sh.op,加密方式改为HS256并使用刚刚获取的公钥进行加密得到新的jwt。

使用新的jwt进行发包,即可完成本挑战。

Imaginary Challenge

解决挑战#999。不幸的是,这个挑战并不存在。

cookie中的continueCode保存了完成的挑战,而continueCode是使用hashids 生成,可参考http://hashids.org/,且使用的是默认盐值"this is my salt"。

使用相同的加密方法加密挑战id"999",即可得到对应的continueCode。

python 复制代码
69OxrZ8aJEgxONZyWoz1Dw4BvXmRGkM6Ae9M7k2rK63YpqQLPjnlb5V5LvDj
python 复制代码
from hashids import Hashids

hashids = Hashids(
    salt='this is my salt',
    min_length=60,
    alphabet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
)

encoded = hashids.encode(999)
print(f"加密结果: {encoded}")

decoded = hashids.decode(encoded)
print(f"解密结果: {decoded}")

使用PUT方式访问/rest/continue-code/apply/69OxrZ8aJEgxONZyWoz1Dw4BvXmRGkM6Ae9M7k2rK63YpqQLPjnlb5V5LvDj即可完成挑战。

Login Support Team

使用支持团队的原始用户凭据登录而不使用SQL注入或任何其他绕过方法。

在ftp目录下有一个名为"incident-support.kdbx"的文件,这是一个keepass数据库文件,将其下载下来。

使用KeePassXC打开这个数据库文件,发现需要密码。在main.js中搜索support,找到一段代码,其中输出的提示大致意思是提示用户密码强度不符合标准,要求修改密码,同时上面给出了表达式。要求密码是12-30个字符且带大小写字母、数字和特殊字符。

假设数据库密码符合上述规则,利用相关单词和字符组合生成一个字典,最终通过字典暴力破解的方式得到数据库密码为"Support2022! "。使用密码解锁数据库即可查看到账号对应的密码为"J6aVjTgOpRs@?5l!Zkq2AYnCE@RF$P"。

使用密码登录support账号即可完成挑战。

Multiple Likes

以相同用户赞任何评论至少三次。

打开burp拦截后为一个商品点赞。

将拦截的数据包发送到攻击模块,payload设置为null,包数设置为20后攻击。

由于默认是10并发,所以前10个包都成功点赞,攻击结束一共赞了10次达到挑战要求,挑战完成。

Premium Paywall

解锁高级挑战来访问更多内容。

查看计分板页面源代码,在该挑战描述位置发现注释的密文。

在encryptionkeys目录有对应的解密密钥文件"premium.key"。

python 复制代码
1337133713371337.EA99A61D92D2955B1E9285B55BF2AD42

使用openssl对其密文进行解密,得到一条路径"/this/page/is/hidden/behind/an/incredibly/high/paywall/that/could/only/be/unlocked/by/sending/1btc/to/us"。

bash 复制代码
echo "IvLuRfBJYlmStf9XfL6ckJFngyd9LfV1JaaN/KRTPQPidTuJ7FR+D/nkWJUF+0xUF07CeCeqYfxq+OJVVa0gNbqgYkUNvn//UbE7e95C+6e+7GtdpqJ8mqm4WcPvUGIUxmGLTTAC2+G9UuFCD1DUjg==" | openssl enc -d -aes-256-cbc -K EA99A61D92D2955B1E9285B55BF2AD42 -iv 1337133713371337 -a -A

拼接路径进行访问即可完成挑战。

SSRF

通过服务器请求服务器上的隐藏资源。

要逆向写不来,这里直接说答案了,在profile个人资料页面将图片url设置为下面的地址即可完成挑战。

bash 复制代码
http://{靶场地址}/solve/challenges/server-side?key=tRy_H4rd3r_n0thIng_iS_Imp0ssibl3

SSTi

docker环境不支持,跳过。

Successful RCE DoS

docker环境不支持,跳过。

Video XSS

docker环境不支持,跳过。

Wallet Depletion

貌似要下软件,国内还不让下,跳过。

写在最后

这篇是juice-shop的六星挑战的内容,juice-shop靶场所有挑战已更新完毕,感兴趣的师傅可以前往专栏《juice-shop靶场挑战》查看。

相关推荐
安冬的码畜日常1 年前
【玩转 Postman 接口测试与开发2_018】第14章:利用 Postman 初探 API 安全测试
测试工具·api·postman·模糊测试·owasp·数据驱动测试·api安全测试
shenghuiping20011 年前
owasp SQL 手工注入 - 02 (技巧)
数据库·sql·sql 注入·owasp
shenghuiping20011 年前
owasp SQL 注入-03 (原理)
数据库·sql·sql 注入·owasp