第三方组件层:很范例的便是wordpress中,可以选择利用imageMagick这个常用的图片处理组件,对用户上传的图片进行处理,造成命令实行,其余java中的命令实行漏洞(struts2/Elasticsearch等)

命令实行漏洞的危害

任意实行系统命令,恶意木马被栽种,挂马,钓鱼,敏感信息透露…

示例1

Jsp远程命令执行漏洞长途破绽长途代码履行破绽的二三事 Python

提交 http://localhost/cmd.php?ip=192.168.199.150|ipconfig提交往后 | 命令管道符会将 ping 192.168.199.150|ipconfig命令变成了 shell_exec('ping '.|ipconfig)如何防止命令实行漏洞

修复方法有很多办法,例如:1、过滤分外字符或更换字符2、严格验证输入的类型长度

方案2修复代码 :实行效果

远程代码实行漏洞复现示例 Tomcat任意文件上传漏洞CVE-2017-12615

先容ApacheTomcat做事组件中开启了http的Put方法所造成的攻击者可以利用该方法任意上传jsp木马所造成的远程代码实行漏洞。
知默认情形下是禁止http要求中的上传(PUT)和删除(DELETE)方法的。

漏洞影响

上传包含任意代码的文件,并被做事器实行。
影响平台Windows/Linux漏洞影响版本Apache Tomcat <= 7.0.81 | Apache Tomcat <= 8.5.20 | Apache Tomcat <= 9.0.0.M26复现步骤一 准备环境准备环境:1、 java环境Java™ SE Runtime Environment (build 1.8.0_20-b26)

2、apache-tomcat-7.0.70

3、配置 环境变量 CATALINA_HOME

4、修正tomcat 目录 conf/web.xml

5、 开启HTTP PUT

复现步骤二下载复现环境 (在文章最下面)复现步骤三启动tomcat 做事

复现步骤四利用PUT方法上传木马利用工具目录如下

cmd 进入利用脚本目录

上传可实行木马程序java -jar CVE-2017-12615-Exploit.jarhttp://127.0.0.1:8080 /shell.jsp D:\aqcode\code\CVE-2017-12615-master-利用脚本\cmd.jsp

Existence 代表上传成功

工具源码剖析

代码标记1:将 D:\aqcode\code\CVE-2017-12615-master-利用脚本\cmd.jsp 文件内容读取出来

cmd.jsp 内容如下

代码标记2 :将内容写入到 http://127.0.0.1:8080/shell.jsp/ 文件当中

代码标记3 :当后缀名为 .jsp 和.jspx 的时候,是通过JspServlet处理要求的:

而其他的静态文件是通过org.apache.catalina.servlets.DefaultServletDefaultServlet处理的:

可以得知,“/shell.jsp/”(末端有反斜杠)并不能匹配到JspServlet,而是会交由DefaultServlet去处理。
当处理 PUT 要求时:

会调用resources.bind:

dirContext 为FileDirContext:

调用rebind创建文件:

http://127.0.0.1:8080/shell.jsp/ ,多了一个反斜杠,这个关键,由于在org.apache.catalina.servlets.DefaultServlet 代 码会去掉末了的 / 的特性,故 put /shell.jsp/会创建成功(同时绕过JspServlet处理类)

复现步骤五 实行木马程序http://127.0.0.1:8080/shell.jsp

修复方案

1、配置readonly和VirtualDirContext值为True或注释参数,禁止利用PUT方法并重启tomcat把稳:如果禁用PUT方法,对付依赖PUT方法的运用,可能导致业务失落效。

2、根据官方补丁升级最新版本

漏洞总结

该漏洞利用的条件条件须要手动开启readOnly功能,以支持上传操作,默认配置的情形下是无法成功利用漏洞,从实际测试来看,漏洞危害性并没有那么高。
但是如果用户一旦,启用了readOnly功能,黑客可利用漏洞成功入侵。

复现环境及代码tomcat7源码https://pan.baidu.com/s/1rcbxfRyRFujkmHJKCr9voQ

利用工具https://pan.baidu.com/s/10RJCGHUaU_Ifh1p2XCUfTw