WebGoat 靶场 JWT tokens 四 五 七关通关教程

文章目录

  • webGoat靶场
    • 第 四 关 修改投票数
    • 第五关
    • 第七关 你购买书,让Tom用户付钱

webGoat靶场

越权漏洞

webgoat-server-8.1.0.jar复制到kali虚拟机中

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第1张图片

sudo java -jar webgoat-server-8.1.0.jar --server.port=8888

解释:

  • java:这是用于执行Java应用程序的Java运行时命令。

  • -jar:此选项用于指定你正在运行 JAR 文件。

  • webgoat-server-8.1.0.jar:这是你要执行的 JAR 文件的名称。它是 WebGoat 服务器 JAR 文件,这是一个故意不安全的 Web 应用程序,用于安全培训和测试。

  • --server.port=8888:这是传递到 WebGoat 服务器的命令行参数。它将服务器的端口设置为 8888,这意味着 WebGoat 应用程序将在端口 8888 上侦听传入请求。

http://localhost:8888运行此命令将在端口 8888 上启动 WebGoat 应用程序,允许你通过 Web 浏览器导航到或 来访问它http://127.0.0.1:8888,具体取决于你的本地配置。

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第2张图片

访问页面:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第3张图片

选择JWT tokens :

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第4张图片

第 四 关 修改投票数

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第5张图片

点击上图中的右上角删除,bp抓包:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第6张图片

复制其JWT的三个部分:头部(Header)、载荷(Payload)和签名(Signature)也就是Cookie字段的access_token的值

eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2OTU1NjEyMDAsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.91qHC1bmg_L1WQ4-jrCPUanghSqdauz9E7Mwbae-IDpYgnahr3G60iVI1xA-pEGGyxhfc7E9wbDn_TAjsGqb9Q

到jwt.io 网站中粘贴,查看:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第7张图片

将其中的alg值改为none ,表示不使用签名算法,那么第三部分的签名就没有意义了。然后将admin 值改为true

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第8张图片

因为我们把alg的值改为了none,所以第三部分的签名认证就没用了,将其前两部分复制(注意要加上连接第三段的点),替换掉bp中的jwt:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第9张图片

发包:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第10张图片

成功重置:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第11张图片

第五关

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第12张图片

假设我们有以下令牌,尝试找出密钥并提交一个新密钥,用户名更改为 WebGoat

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY5Njc2ODg2NCwiZXhwIjoxNjk2NzY4OTI0LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM

首先分析一下题目,题目说需要找出密钥,并且用户名更改为 WebGoat,重点就是在找出密钥

将 token 解密观察

通过jwt 解密网站解密

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第13张图片

发现在 header 头部的加密方式还是 HS256,这不是重点
重点在 payload 声明中的 exp 和 username,exp 是 token 过期的时间戳,时间戳需要修改到当前时间之后,也就让它不过期
而 username 就是题目要我们修改的东西,我们需要把 username 修改为 WebGoat

删除编码后的=,得到修改后的 token

eyJhbGciOiJIUzI1NiJ9.ewogICJpc3MiOiAiV2ViR29hdCBUb2tlbiBCdWlsZGVyIiwKICAiYXVkIjogIndlYmdvYXQub3JnIiwKICAiaWF0IjogMTY5Njc2ODg2NCwKICAiZXhwIjogMTY5Njc3MTEwMCwKICAic3ViIjogInRvbUB3ZWJnb2F0Lm9yZyIsCiAgInVzZXJuYW1lIjogIldlYkdvYXQiLAogICJFbWFpbCI6ICJ0b21Ad2ViZ29hdC5vcmciLAogICJSb2xlIjogWwogICAgIk1hbmFnZXIiLAogICAgIlByb2plY3QgQWRtaW5pc3RyYXRvciIKICBdCn0.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM

但是因为加密方式还是 HS256 ,我们还需要密钥才能得到签名,所以需要用到一个 github 上的工具jwtcrack在本地暴力破解密钥,用这个工具需要准备一个字典,这里我们的是top1000.txt

我们将题目给的完整的 jwt-token 复制,并且在工具目录打开 cmd,执行以下命令:

python crackjwt.py JWT top1000.txt

这里我执行的是:

python crackjwt.py eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10 top1000.txt

破解成功:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第14张图片

将密钥 victory 填入解密网站,然后直接在网站修改 exp 与 username,会自动生成新的 jwt-token

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第15张图片

复制左侧生成的 token 直接填入关卡即可成功伪造用户信息

伪造成功:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第16张图片

第七关 你购买书,让Tom用户付钱

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第17张图片

点击上图中的here

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第18张图片

找到了一个jwt:

eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE1MjYxMzE0MTEsImV4cCI6MTUyNjIxNzgxMSwiYWRtaW4iOiJmYWxzZSIsInVzZXIiOiJUb20ifQ.DCoaq9zQkyDH25EcVWKcdbyVfUL4c9D4jRvsqOqvi9iAd4QuqmKcchfbU8FNzeBNF9tLeFXHZLU4yRkq-bjm7Q

查看:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第19张图片

我们先结账抓包一下:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第20张图片

抓包:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第21张图片

显示不是有效的JWT令牌,请重试。

我们把上面找到的jwt放进去:

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第22张图片

显示解决方案不正确,显示JWT已经过期了。JWT的payloadexp表示jwt的过期时间。

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第23张图片

也可以找工具换算一下

image-20230914220553174

已经过期。

我们改一下时间戳:

1694707000

image-20230914220958422

修改JWT:将alg置为none,exp置为1694707000

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第24张图片

粘贴到bp中(注:不需要复制其jwt的第三部分,但要跟上连接第三部分的.):

WebGoat 靶场 JWT tokens 四 五 七关通关教程_第25张图片

你可能感兴趣的:(安全,运维,网络安全)