• OWASP JUICE SHOP部分题解


    本文作者:S0u1

    0×00 简介

    OWASP JUICE SHOP是一个开源的web应用靶场,里面包含了共记47个漏洞挑战任务,囊括了OWASP TOP 10的各个点,是一个很不错的渗透测试练手项目。

    0×01 环境搭建

    我使用的测试环境为kali2+docker。

    搭建过程如下:

    1.安装docker(可自行百度kali安装docker教程)

    2.下载https://github.com/bkimminich/juice-shop

    3.运行docker pull bkimminich/juice-shop

    4.运行docker run -d -p 3000:3000 bkimminich/juice-shop

    5.打开浏览器访问localhost:3000即可看到JUICE SHOP页面(也可以在本机上访问虚拟机的ip地址加上端口号)

    看到该页面即表示搭建成功:

    1.png

    0×02 开始玩耍

    一开始进入这个页面,可能不知道要干啥。又不像DVWA那样对各个漏洞进行了分类提供选择。

    这时候我们看一手页面源代码,就很舒服:

    2.png

    发现了几行被注释掉的东西,有个Score Board页面,懂点英语的大概都知道是个啥了。

    直接进去看看,里面有任务的名称,简要描述,难度等级以及完成状态:

    3.png

    同时,当你顺利进入这个页面的时候,你就已经完成第一项任务了,页面上会有一个原谅色的提示框,以后每一次完成任务,都会看见它一次:

    4.png

    0×03

    下面就开始写每一题的完成攻略了。大家可以先自己去尝试一下,有些题目我也还没做出来。大家一起努力,有些题目应该有很多种不同的思路可以完成。

    1.Error Handling

    5.png

    在登录页面账号处输入一个单引号’,然后填入任意密码,点击Log in。
    就会出现报错了,可以看到这里将整个SQL语句都显示了出来。

    2.XSS Tier 1

    根据题目的描述,是使用<script>alert("XSS1")</script>这个payload来进行一次反射型XSS。
    这边一眼就瞄到了搜索框,直接插语句试试,就成功了:

    6.png

    3.Login Admin

    根据在Error Handling里看到的SQL语句,直接进行构造:
    SELECT * FROM Users WHERE email=” or 1=1 — AND password = ‘xxxxxx’;
    所以在Email处直接输入’ or 1=1 –,密码处任意填写,即可成功登录。
    到购物车里看看,可以看到登录的是admin用户:

    7.png

    4.Password Strength

    这个要求我们在不通过预先更改密码或sql注入的方式登录到Admin账户,结合题目密码强度,猜测应该是弱口令问题。使用BP的inturder模块进行一下爆破。

    8.png

    一下就跑出来了,密码是admin123,登录一下吧。

    5.Zero Stars

    在Contact Us这个界面可以看到打星功能。这里在没有填内容和打星前是不能点击submit按钮的。不过这里只是前端校验,可以通过把它的disabled属性直接删除,来进行绕过。

    9.png

    然后直接提交,就可以完成这个任务了。
    当然,也可以通过BP进行抓包,将数据包里的rating的值改为0。

    6.Confidential Document

    在About Us这个界面,可以看到有一个链接供我们点击:

    10.png

    点击后,发现是一个markdown文件的下载,链接格式是:localhost:3000/ftp/legal.md?md_debug=true

    这里有个敏感的ftp目录,尝试一下是可以访问的,然后点击第一个文件即可完成任务:

    11.png

    7.Forgotten Sales Backup&&Forgotten Developer Backup

    这题承接上一题,有一个coupons_2013.md.bak的文件和一个package.json.bak,直接访问会显示错误:Only .md and .pdf files are allowed!

    12.png

    这里使用00截断,访问192.168.200.129:3000/ftp/coupons_2013.md.bak%2500.md
    192.168.200.129:3000/ftp/package.json.bak%2500.md
    即可。

    8.Admin Section

    这一题我是直接猜测路径,admin、administrator不行,administration成功访问到了:

    13.png

    9.Five-Star Feedback

    这题得要做出上面一题才能做,页面的右边就是评价,登录到Admin账号把五星的全给删除就ok了。

    10.Basket Access

    在点击Your Bakset前进行抓包,有一个包是这样的:

    GET /rest/basket/4 HTTP/1.1
    Host: 192.168.200.129:3000
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
    Accept: application/json, text/plain, */*
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdGF0dXMiOiJzdWNjZXNzIiwiZGF0YSI6eyJpZCI6NywiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIiwicGFzc3dvcmQiOiI2OTVlYzk0NWMxMmQ2NzMxOTgyM2Q3ZDcxM2U5MjFhNSIsImNyZWF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCIsInVwZGF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCJ9LCJpYXQiOjE1MDk2MDI1MTQsImV4cCI6MTUwOTYyMDUxNH0.BCD9yWxs1viKSlL5j-nhtWqKCW_eovZ5hoSu3fhgUhA
    Referer: http://192.168.200.129:3000/
    Cookie: continueCode=mVOzpKQaWAD4HXuph6tecwIRiqfvSauEhWtyc3IvT4ieHVughgADEonejg6l; io=ENtxNgoEQGfvP05jAAAH; token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdGF0dXMiOiJzdWNjZXNzIiwiZGF0YSI6eyJpZCI6NywiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIiwicGFzc3dvcmQiOiI2OTVlYzk0NWMxMmQ2NzMxOTgyM2Q3ZDcxM2U5MjFhNSIsImNyZWF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCIsInVwZGF0ZWRBdCI6IjIwMTctMTEtMDIgMDY6MDE6MDEuMDAwICswMDowMCJ9LCJpYXQiOjE1MDk2MDI1MTQsImV4cCI6MTUwOTYyMDUxNH0.BCD9yWxs1viKSlL5j-nhtWqKCW_eovZ5hoSu3fhgUhA
    Connection: close
    If-None-Match: W/"99-9QdKEP5stGr2mvgcEwoFif7Oe9I"

    GET请求的url:/rest/basket/4,这个4很让人在意啊。
    把它修改成1或者其它的一些数字,就到达别人的购物车了。

    11.Christmas Special

    在商品列表中找不到有关Christmas Special的商品,考虑可能是sql语句中对于日期之类的做了限制。看看能不能用or 1=1之类的让它全部暴露出来。
    在查询处进行抓包,虽然没有成功,但是暴露出了完整的sql语句:

    14.png

    AND deletedAt IS NULL应该就是我们找不到目标商品的罪魁祸首了。根据SQL语句的结构对它进行闭合和注释:

    15.png

     

    登录任意账号,将这个商品加入购物车,然后点击checkout即可:

    16.png

    0×03 To Be Continued…

  • 相关阅读:
    Spring+Hibernate集成后事务与Session的一些理解。
    对Spring的一些个人理解
    centos5.8 x86_64安装oracle10g
    C#中MessageBox用法大全(附效果图)
    解决SQL Server管理器无法连接远程数据库的问题
    【sql2000数据库】Named Pipes Provider error 40
    用SQL数据库批量插入数据简介
    DBGridEH在Delphi7中的安装方法及使用说明
    sql server中datetime字段只取年月日如20060421,默认值如何设置?getdate()得到的是包含时分秒的时间。
    获取 Windows 窗体 DataGridView 控件中选定的单元格、行和列
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/7778053.html
Copyright © 2020-2023  润新知