首页 > 编程语言 >Java-xss

Java-xss

时间:2022-11-07 19:00:41浏览次数:35  
标签:xss Java request content jsp addComment response

XSS代码分析

在php里面会使用echo对用户输入的参数进行直接输出,导致了xss漏洞的产生。而在Java里面会将接收到的未经过滤的参数共享到request域中,在jsp的页面里面使用EL表达式进行输出

编写一个serlvet来做一个演示

@WebServlet("/demo")
public class xssServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");// 设置响应类型
        String content = request.getParameter("content");  //获取content传参数据
        request.setAttribute("content", content);  //content共享到request域
        request.getRequestDispatcher("/WEB-INF/pages/xss.jsp").forward(request, response);  //转发到xxs.jsp页面中

    }
}

xss.jsp代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    ${requestScope.content}
</head>
<body>

</body>
</html>

启动tomcat,访问url:

http://localhost:8080/untitled3_war_exploded/demo?content=1

image-20221107184224962

传参一个1过去成功输入了,那么再来传一个xss的payload试试。

http://localhost:8080/untitled3_war_exploded/demo?content=<script>alert("xss")</script>

[img

在审计中需要关注的是参数是否可控,如果可控传入的参数是否会被过滤后共享到request域中,如果在可控和不被过滤的情况下,就很有可能存在xss漏洞

审计

那么结合前面的内容,知道了xss的产生过程是使用request.setAttribute方法将请求到的数据未经过滤存储到request域中,然后在jsp页面里使用el表达式进行输出。

在审计的时候我们可以直接来全局搜索 快捷键 Ctrl+Shift+F

image-20221107184713595

找一下存储型xss,反射的xss意义并不大

image-20221107184732621

点击选择一个文件来看看他的代码,这里直接就给共享到request域中了,但是这里只是我们的一个查询方法,我们需要找到他输入值的地方, 看到下面的addComment方法正好对应上了一个输出xss ,一个插入xss的地方。

image-20221107184841885

查看该方法 commentService.addComment(comment); 调用addComment方法将值传入,不出意外的话传入的comment参数就是接收过来的一个实体类。我们来Ctrl+左键点击 Comment类进行跳转到该类去

image-20221107184802124

主要关注变量为 String类型的变量,因为Java是强类型的语言。

等会对这几个变量的地方进行插入xss代码

image-20221107184913785

点击ctrl+左键点击addComment 追溯到CommentService 的接口

image-20221107184929407

同样的方式再追溯到CommentService的实现类

image-20221107185000488

使用的是commentDao调用addComment 传入参数进行添加数据。继续追溯上去

image-20221107185016338

在这里我们就看到了dao接口中的addcomment方法,dao接口中并没有myabtis的注解,说明是xml配置文件配置的。

后面的直接开启全局搜索,搜索addComment指定xml文件。

image-20221107185054785

查看Controller获取路径

image-20221107185125123

image-20221107185134944

漏洞位置:

http://127.0.0.1:82/web/comment/ajax/addcomment

标签:xss,Java,request,content,jsp,addComment,response
From: https://www.cnblogs.com/gk0d/p/16867040.html

相关文章