2025年8月11日
3 分钟阅读
By bx
OWAP-juice-shop靶场学习 # OWAP-juice-shop靶场学习 ## 介绍 OWASP Juice Shop 是一个用于学习和测试 Web 应用程序安全的开源项目。它提供了一个真实的 Web 应用环境,模拟了一个在线商店的场景,包含了多个安全漏洞和攻击面。

OWASP Juice Shop是一个故意设计成不安全的Web应用程序,用于安全培训、意识提升和安全工具测试。它包含了 OWASP Top 10 中的所有漏洞类别以及许多其他安全缺陷。

这是一个现代的单页应用程序(SPA),使用流行的技术栈构建:

  • 前端:Angular
  • 后端:Node.js + Express
  • 数据库:SQLite

Juice Shop 包含超过 100 个编码挑战,涵盖:

  • 注入攻击
  • 身份验证绕过
  • 授权缺陷
  • XSS(跨站脚本)
  • CSRF(跨站请求伪造)
  • 敏感数据暴露
  • XML 外部实体(XXE)
  • 不安全的反序列化
  • 使用已知漏洞的组件
  • 不充分的日志记录和监控

环境搭建

介绍页面

OWASP Juice Shop | OWASP Foundation

github 官方地址

juice-shop

首先需要安装 Docker,然后运行:

Docker部署

  1. Run docker pull bkimminich/juice-shop
  2. Run docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop
  3. Browse to http://localhost:3000 (on macOS and Windows browse to http://192.168.99.100:3000 if you are using docker-machine instead of the native docker installation)

Node.js部署

或者使用 Node.js 直接运行:

访问 http://localhost:3000 即可开始使用。

在应用程序中,点击右上角的 “Score Board” 可以查看所有挑战。挑战按难度分为:

  • ⭐ 简单
  • ⭐⭐ 中等
  • ⭐⭐⭐ 困难
  • ⭐⭐⭐⭐ 专家
  • ⭐⭐⭐⭐⭐ 大师

漏洞分类与学习

注入攻击

SQL注入

在登录页面尝试SQL注入:

NoSQL注入

针对MongoDB的注入攻击:

一星问题

第一关找积分板

这个前端代码找到路由就找到了

Terminal window
http://127.0.0.1:3000/#/score-board

XSS

DOM XSS

使用<iframe src="javascript:alert(xss)">代码进行基于_DOM_的XSS攻击

找到可疑地方,尝试执行,在搜索框内可以

执行 XSS 发现是存在的,没有过滤

可以分析一下,直接利用 XSS 嵌入网页

iframe 嵌入,后面就是一些播放器的参数

Terminal window
<iframe
width="100%"
height="166"
scrolling="no"
frameborder="no"
allow="autoplay"
src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/771984076&color=%23ff5500&auto_play=true&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true">
</iframe>

还是一样的入口,XSS 嵌入效果如下

查阅机密文件

访问链接

Terminal window
http://127.0.0.1:3000/ftp/legal.md

发现可能存在文件暴露,尝试如下,发现可以阅读更多文件



Missing Encoding

获得Bjoern的猫”乱斗模式”照片。

这个问题在照片墙那里

图片不显示的原因是在 url 里面#是锚点的意思

Terminal window
<img src="/assets/public/images/uploads/ᓚᘏᗢ-#zatschi-#whoneedsfourlegs-1572600969477.jpg">

这里改成%23就解决问题了

刷新一下,猫猫就出来了

Privacy Policy

Outdated Allowlist

让我们将您重定向到我们不再推广的加密货币地址

主要是找加密货币的地址

这是前端的一个方法集,用来弹出一个对话框(二维码)展示不同加密货币的收款地址。

里面有三个:

  1. Bitcoin
    地址:1AbKfgvw9psQ41NbLi8kufDQTezwG8DRZm
    重定向 URL:./redirect?to=https://blockchain.info/address/1AbKfgvw9psQ41NbLi8kufDQTezwG8DRZm
  2. Dash
    地址:Xr556RzuwX6hg5EGpkybbv5RanJoZN17kW
    重定向 URL:./redirect?to=https://explorer.dash.org/address/Xr556RzuwX6hg5EGpkybbv5RanJoZN17kW
  3. Ether(以太坊)
    地址:0x0f933ab9fCAAA782D0279C300D73750e1311EAE6
    重定向 URL:./redirect?to=https://etherscan.io/address/0x0f933ab9fcaaa782d0279c300d73750e1311eae6

进入 redirect 链接就可以完成这个挑战

Web3 Sandbox

查找意外部署的代码沙盒,用于即时编写智能合约。

还是简单的信息收集问题

http://127.0.0.1:3000/#/web3-sandbox

界面如下

Exposed Metrics

找出后端服务使用常见监测软件获得

找到对应的端点

http://127.0.0.1:3000/metrics

Bully Chatbot

Receive a coupon code from the support chatbot

并非真正的智能,只是对应回复,尝试给出关键词

🔍Oooookay, if you promise to stop nagging me here's a 10% coupon code for you: k#*Agh7ZKp

Privacy Policy

Read our privacy policy.

这个题太一星了,直接访问就行

进来就成功

Others

常见币种地址

信息收集来自于网络

1. 比特币(BTC)

  • 常见前缀:
    • 1 开头(P2PKH 地址)
    • 3 开头(P2SH 地址)
    • bc1 开头(Bech32 格式)
  • 字符集:大小写字母(不含 0、O、I、l)+ 数字
  • 长度:一般 26~42 个字符
  • 示例:
1BoatSLRHtKNngkdXEeobR76b53LETtpyT
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq

2. 以太坊(ETH) / ERC-20 代币

  • 前缀:0x
  • 字符集:16 进制(0-9, a-f)
  • 长度:0x + 40 个十六进制字符(共 42 个字符)
  • 示例:
0x742d35Cc6634C0532925a3b844Bc454e4438f44e

3. 莱特币(LTC)

  • 前缀:
    • L 开头(旧版)
    • M 开头(P2SH)
    • ltc1 开头(Bech32)
  • 长度:34 个字符左右
  • 示例:
LZ8hyM2sa7RnZkz6jfb7dZ9DyJzjjQuo9J

**4. USDT / TRON / BNB **

  • USDT-TRC20(基于波场 TRON)
    • T 开头
    • 长度 34 个字符
    • 示例:
TRh5WwW1V5pD7KQbWQ2ikC69j3P9wKc2yC
  • BNB(BEP20)
    • 与以太坊地址相同,0x 开头