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


    webGoat靶场

    越权漏洞

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

    image-20230914205837708

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

    解释:

    • 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,具体取决于你的本地配置。

    image-20230914210301108

    访问页面:

    image-20230914210417044

    选择JWT tokens :

    image-20230914210539342

    第 四 关 修改投票数

    image-20230914210739745

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

    image-20230914213104931

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

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

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

    image-20230914213238645

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

    image-20230914212356826

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

    image-20230914213941676

    发包:

    image-20230914214322349

    成功重置:

    image-20230914214415669

    第五关

    image-20231008204421678

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

    eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY5Njc2ODg2NCwiZXhwIjoxNjk2NzY4OTI0LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM
    
    • 1

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

    将 token 解密观察

    通过jwt 解密网站解密

    image-20231008205426014

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

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

    eyJhbGciOiJIUzI1NiJ9.ewogICJpc3MiOiAiV2ViR29hdCBUb2tlbiBCdWlsZGVyIiwKICAiYXVkIjogIndlYmdvYXQub3JnIiwKICAiaWF0IjogMTY5Njc2ODg2NCwKICAiZXhwIjogMTY5Njc3MTEwMCwKICAic3ViIjogInRvbUB3ZWJnb2F0Lm9yZyIsCiAgInVzZXJuYW1lIjogIldlYkdvYXQiLAogICJFbWFpbCI6ICJ0b21Ad2ViZ29hdC5vcmciLAogICJSb2xlIjogWwogICAgIk1hbmFnZXIiLAogICAgIlByb2plY3QgQWRtaW5pc3RyYXRvciIKICBdCn0.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM
    
    • 1

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

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

    python crackjwt.py JWT top1000.txt
    
    • 1

    这里我执行的是:

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

    破解成功:

    image-20231008214351061

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

    image-20231008215415355

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

    伪造成功:

    image-20231008215548377

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

    image-20230914214950782

    点击上图中的here

    image-20230914215308068

    找到了一个jwt:

    eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE1MjYxMzE0MTEsImV4cCI6MTUyNjIxNzgxMSwiYWRtaW4iOiJmYWxzZSIsInVzZXIiOiJUb20ifQ.DCoaq9zQkyDH25EcVWKcdbyVfUL4c9D4jRvsqOqvi9iAd4QuqmKcchfbU8FNzeBNF9tLeFXHZLU4yRkq-bjm7Q
    
    • 1

    查看:

    image-20230914215409435

    我们先结账抓包一下:

    image-20230914215615196

    抓包:

    image-20230914215702283

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

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

    image-20230914215920409

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

    image-20230914220441315

    也可以找工具换算一下

    image-20230914220553174

    已经过期。

    我们改一下时间戳:

    1694707000
    
    • 1

    image-20230914220958422

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

    image-20230914221425817

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

    image-20230914221831226

  • 相关阅读:
    基于模板匹配的图像拼接技术研究-含Matlab代码
    SSM学习43:SpringMVC不扫描某些bean
    JVM
    加码云原生,斩获 19000 Star 的开源国产数据库又上新
    python安装完matplotlib 报错
    ORB-SLAM安装过程遇到问题记录整理
    python爬取网页信息
    PermissionError: [WinError 5] 拒绝访问。OSError: [WinError 17] 系统无法将文件移到不同的磁盘驱动器。
    matlab实现配电网分区功能
    jsp库存管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 原文地址:https://blog.csdn.net/qq_45953122/article/details/133691044