DOM类型的XSS

发布时间 2023-10-11 15:42:14作者: zhuangrunwei
xss.jsp文件内容如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>XSS_DOM</title>
</head>
<body>
<!-- 
本页面三个 DOM 类型的 XSS 漏洞实际执行过程是:
1、客户端发送请求
2、服务端返回
3、客户端执行js
-->
<p id="p">Hello, XSS_DOM</p>
<script>
    var search = document.location.search;
    var params = new URLSearchParams(search);

    // 客户端访问 http://127.0.0.1:9999/xss.jsp?name=1,浏览器发送请求到服务器,服务器响应html,客户端执行js
    var username = params.get('name');
    if (username !== null) {
        document.getElementById("p").innerHTML = 'Hello, ' + username + '!';
    }

    // Location 漏洞
    // http://127.0.0.1:9999/xss.jsp?url=http://www.baidu.com
    // http://127.0.0.1:9999/xss.jsp?url=javascript:alert(1)
    // 客户端访问上面的路径,浏览器发送请求到服务器,服务器响应html,客户端执行js
    var url = params.get('url');
    if (url !== null) {
        document.location = url;
    }

    // Execution 漏洞
    // 客户端访问 http://127.0.0.1:9999/xss.jsp?x=alert(1),浏览器发送请求到服务器,服务器响应html,客户端执行js
    var x = params.get('x');
    eval(x);

</script>
</body>
</html>