当前位置: 首页 > article >正文

【赛博保安】安全Web日记文件下载漏洞逻辑越权漏洞密码爆破WebGoat靶场(四)

安全Web日记文件下载漏洞&逻辑越权漏洞&密码爆破&WebGoat靶场

  • 1、文件下载漏洞
    • 1.1、pikachu
  • 2、逻辑越权漏洞
    • 2.1、水平越权
    • 2.2、垂直越权
  • 3、密码爆破
  • 4、WebGoat靶场
    • 4.1、WebGoat靶场搭建
    • 4.2、HTTP Basics-Http基础
      • 4.2.1、题3
    • 4.3、HTTP Proxies-Http协议
      • 4.3.1、题5
    • 4.4、Developer Tools-开发工具
      • 4.4.1、题4
      • 4.4.2、题6
    • 4.5、Crypto Basics-加密基础
      • 4.5.1、题2
    • 4.6、JWT tokens
      • 4.6.1、题4-Decoding a JWT token
      • 4.6.2、题6-JWT signing -重置空加密算法
      • 4.6.3、题11-JWT cracking-暴力破解
    • 4.7、Path traversal-路径绕过
      • 4.7.1、题2
      • 4.7.2、题3
      • 4.7.3、题4
    • 4.8、Insecure Direct Object References-不安全的直接对象引用
      • 4.8.1、题3

1、文件下载漏洞

1.1、pikachu

  1. 点击科比的名字下载地址为:
http://pikachu.shifa23.com/vul/unsafedownload/execdownload.php?filename=kb.png

在这里插入图片描述

  1. 科比图片的链接地址为
http://pikachu.shifa23.com/vul/unsafedownload/download/kb.png

在这里插入图片描述

对比:

请求地址:http://pikachu.shifa23.com/vul/unsafedownload/execdownload.php?filename=kb.png
存放地址:http://pikachu.shifa23.com/vul/unsafedownload/download/kb.png

# 通过上面两个地址我们可以测试文件下载漏洞
下载漏洞:http://pikachu.shifa23.com/vul/unsafedownload/execdownload.php?filename=../execdownload.php

根据上面的分析通过链接下载到了文件execdownload.php

2、逻辑越权漏洞

越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽未对信息进行增删改查的时候没有进行一个判断,判断所需要操作的信息是否属于对应的用户,可以导致用户A可以操作其他人的信息。

  • 水平越权(同级别越权):也叫作访问控制攻击。A 账号获取(修改等)B 账号数据
  • 垂直越权(跨机别越权):垂直权限攻击又叫做权限提升攻击。使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作

在这里插入图片描述

2.1、水平越权

  1. 登录账号:lili/123456,点击查看个人信息

在这里插入图片描述

  1. 将数据包的用户名从lili改为kobe

在这里插入图片描述

发现查询到了kobe的信息,存在水平越权。

2.2、垂直越权

使用管理员的cookie,来替换普通用户cookie构造数据包,就可以达到垂直越权。

不过目前校验使用token的话,就比较难来使用到垂直越权了。

Tips:第35天-Web漏洞-逻辑越权之找回机制及接口安全

笔记:https://www.yuque.com/weiker/xiaodi/anrxmi27wou62ada

3、密码爆破

这里我以若依不分离为例:

  1. 登录若依,启用BP抓包,将包发送到intruder,在 password 处添加 payload

在这里插入图片描述

  1. 点击payload,可以设置字典,如果需要设置密码MD5加密,也可以设置
  • 密码字典

在这里插入图片描述

  1. 开始攻击

在这里插入图片描述

其实在这块发现返回的状态码都是200,查看响应,对于正确的响应code显示是0,错误的是500,可以作一个区分。

4、WebGoat靶场

4.1、WebGoat靶场搭建

  • WebGoat靶场

可以采用Docker搭建,也可以采用Windows搭建,这里记录下Windows搭建记录:

  1. 电脑需具备jdk17或者jdk21
  2. 下载jar包
  3. 运行jar包
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar

访问:

  1. WebGoat靶场:127.0.0.1:8080/WebGoat/login
  2. WebWolf靶场:127.0.0.1:9090/WebWolf/login

在这里插入图片描述

进来后先注册账户。superadmin/superadmin

4.2、HTTP Basics-Http基础

4.2.1、题3

本题介绍查看请求使用了什么类型的HTTP命令。解题方式如下:

  1. F12打开浏览器开发者工具,选择Network,点一次Go,查看attack2的请求方式和请求参数
  2. 请求方式为Post
  3. 从请求数据包里面可以看到 magic_num 的值

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.3、HTTP Proxies-Http协议

4.3.1、题5

  1. 点击 Submit,BP抓包。
  2. 将请求方法改为 GET
  3. 添加请求头:x-request-intercepted:true
  4. 将请求体的 changeMe 的值改为Requests are tampered easily

在这里插入图片描述

4.4、Developer Tools-开发工具

4.4.1、题4

  1. F12打开开发者工具,切换到 console,输入webgoat.customjs.phoneHome() ,回车
  2. 获得随机的 phoneHome Response 数值,填入输入框
  3. 点击Submit,即可通关

在这里插入图片描述

4.4.2、题6

  1. F12打开开发者工具,切换到 network,点击Go
  2. 查看 network 的请求,从 payload 中找到 networknumbber
  3. 填入输入框,点击check,即可通关

在这里插入图片描述

4.5、Crypto Basics-加密基础

4.5.1、题2

题目是一个base64解密,给了Authorization: Basic c3VwZXJhZG1pbjpwYXNzd29yZA==,我们只需要复制Basic之后的那段进行解密,就可以得到答案。

  • Base64解码:https://www.toolhelper.cn/EncodeDecode/Base64

4.6、JWT tokens

4.6.1、题4-Decoding a JWT token

使用Base64解码token即可。

4.6.2、题6-JWT signing -重置空加密算法

尝试更改token,并通过更改token成为管理员用户。

  1. 选择一个用户(Tom),点一下右边的回收站按钮(重置)。获得重置请求的链接。发送到repeater

在这里插入图片描述

  1. 将请求数据包的access_token提取出:
eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE3MjU1MjE5OTIsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.Ro48zaBh7maFkhbpJRAYCsURYaHfqFbfPEZGgXTPK-d7FyFsOGH2EpF4fCn_X4jMb3CgeSkQoTPbeqvgwMwtbw

Base64反解码出第一段头部header和第二段声明claims,第三段是签名:

# header
{"alg":"HS512"}

# claims
{"iat":1725521992,"admin":"false","user":"Tom"}

alg的值是可以为none的,也就是不加密签名,这样签名的值就可以留空。将claims的admin改为true

# header
{"alg":"none"}

# Base64编码后得到
eyJhbGciOiJub25lIn0=
# claims
{"iat":1725521992,"admin":"true","user":"Tom"}

# Base64编码后得到
eyJpYXQiOjE3MjU1MjE5OTIsImFkbWluIjoidHJ1ZSIsInVzZXIiOiJUb20ifQ==

编码解码网站:https://jwt.io/#encoded-jwt

二者组合,注意将=等号均删掉,并且按照JWT的结构加上点.

# 注意最后那个点不能少
eyJhbGciOiJub25lIn0.eyJpYXQiOjE3MjU1MjE5OTIsImFkbWluIjoidHJ1ZSIsInVzZXIiOiJUb20ifQ.

在这里插入图片描述

4.6.3、题11-JWT cracking-暴力破解

给出了一个jwt的token,让修改token里面的账户为WebGoat然后重新加密后提交,因为token的第三部分是header和payload的base64然后加上秘钥hash的结果,hash的算法通过header部分就只能得到,所以需要爆破秘钥

  1. token的第三部分签名,需要用到hashcat工具来暴力破解。我所在的环境是Windows环境,介绍下Windows环境下的hashcat工具的使用。首先进入github下载:hashcat v6.2.6

在这里插入图片描述

  1. 暴力破解肯定得爆破的字典密钥,这里可以使用 google 提供的作为字典:google-10000-english

在这里插入图片描述

  1. 解压下载的hashcat,进入目录,将20k.txt复制进去,并且新建hash.txt,将我们需要爆破的token写入

在这里插入图片描述

  1. 在hashcat的目录下进入cmd
hashcat.exe -m 16500 hash.txt -a 3 -w 3 20k.txt --force
  • -m 16500:这里的16500对应的就是jwt的token爆破
  • -a 3:代表蛮力破解
  • -w 3:高速破解
  • hash.txt : 存放需要爆破的token
  • 20k.txt:字典

我这里爆破了四千多还没成功,就不爆破了,拿到密钥后写入,生产的token提交即可。

在这里插入图片描述

4.7、Path traversal-路径绕过

4.7.1、题2

这关要求传个文件到目录C:\Users\Augenestern/.webgoat-2023.8/PathTraversal下,自己上传的话其实会上传到C:\Users\Administrator\.webgoat-8.1.0\PathTraversal\fancyele,比我们的目标路径多一级目录fancyele

  • 可以尝试将照片的名字 Full Name 改为../xxx.jpg,然后点击 update,这样就可以把这张图片传到上级文件夹PathTraversal下

4.7.2、题3

这关的要求和上一关一样,要传个文件到目录C:\Users\Administrator\.webgoat-8.1.0\PathTraversal下面,但是提示../会被删除掉。看到删除,一下子就想到双写绕过,在Full Name处构造双写:..././xxx.png

4.7.3、题4

还是要求传个文件到目录C:\Users\Administrator\.webgoat-8.1.0\PathTraversal下面,但是这次上传发现文件名是固定的,和 Full Name 的值没有关系。

  1. 随便上传图片,使用BP抓包

  2. 修改filename,../profile.jpg,过关

在这里插入图片描述

4.8、Insecure Direct Object References-不安全的直接对象引用

4.8.1、题3

这个题的意思是返回的部分东西显示在浏览器,但是还有其他未显示在浏览器,让我们找到未显示的部分。可以观察到只有5个属性,只有role 和userid是隐藏未显示的属性。

在这里插入图片描述

后面的关就不打了,参考几个大佬文章:

  • https://blog.csdn.net/m0_37138074/article/details/128930146

  • https://blog.csdn.net/zy15667076526/article/details/109560492

  • https://blog.csdn.net/fiskeryang/article/details/131379466?spm=1001.2014.3001.5502

  • https://blog.csdn.net/zy15667076526/article/details/109560492


http://www.kler.cn/a/505009.html

相关文章:

  • 为深度学习创建PyTorch张量 - 最佳选项
  • 【力扣Hot100】滑动窗口
  • Git的基本命令以及其原理(公司小白学习)
  • Python 标准库:time——时间的访问和转换
  • vue 文件下载实现
  • Qwins的使用
  • Android15源码编译问题处理
  • 阿里云数据传输服务使用场景
  • ASP.NET Core 多环境配置
  • python函数调用
  • C++实现设计模式---抽象工厂模式 (Abstract Factory)
  • CVPR 2024 自动驾驶方向总汇
  • RHCE的基本学习路线
  • Leetcode 2140. 解决智力问题 动态规划
  • 图解Git——分支管理《Pro Git》
  • Transformer架构和Transformers 库和Hugging Face
  • 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
  • MongoDB 学习指南与资料分享
  • 面向对象三大特征之一——多态【红色标记】
  • c语言-嵌入式专辑~
  • ASP.NET Core - 依赖注入(三)
  • CF 230A.Dragons(Java实现)
  • Golang——GPM调度器
  • uniapp实现“到这儿去”、拨打电话功能
  • 【鸿蒙Next】protobuf如何使用
  • [MySQL | 二、基本数据类型]