如何将恶意代码注入看似无辜的 URL?

信息安全 网页浏览器 xss html
2021-08-25 04:19:22

我正在学习 XSS 攻击。维基百科说,在非持久性攻击中,攻击者可能会提供一个看似无辜的 URL,“指向一个受信任的站点,但实际上有一个 XSS 向量”。这会是什么样子?有人可以提供一个例子吗?

4个回答

不久前,我写了一篇关于 iOS 的 Safari Mobile 浏览器中的安全漏洞的博客。这几乎可以让您屏蔽 URL。我相信这个漏洞在 iOS 5.2 中得到了修复,而我所知道的事实漏洞在 iOS 6.x 中不再可用。但简而言之,人们可以在某些类型的网络浏览器中找到此类安全漏洞,然后利用它们来发挥自己的优势。在 iOS 的情况下,这几乎只是在 iframe 中使用一些草率的 JavaScript 的情况。像下面这样。

<script type="text/javascript">
document.getElementById('one').onclick = function() {
    myWindow = window.open('http://www.apple.com', 'eintitel', 'width=200,height=100,location=yes');
    myWindow.document.write("<html><head></head><body><iframe src=\"http://techmeout.org\");></iframe></scri+pt></body></html>");
    myWindow.focus();
    return false;
}
</script>

如您所见,有两个 URL:http://www.apple.commy blog在某些移动 Apple 设备上查看时,您会在地址栏中看到 www.apple.com,但看到的是我的博客内容,而不是 Apple 的网站。

攻击者可以使用像 bit.ly 这样的 URL 缩短服务:

http://bit.ly/114E7Q5

XSS 网站来自http://www.xssed.com/

如果是网络钓鱼攻击并且 URL 很重要,那么攻击者可以对关键字符进行 URL 编码或 UTF-8 编码以隐藏 HTML 标签。无论如何,大多数人都会忽略长网址。

相关: XSS 过滤器 Evasion Cheat Sheet

跨站点脚本基本上是可以为您或每个人在页面上输入的代码。这就是非持久性 XSS 和持久性 XSS 的区别。

持久性 XSS 的示例如下(您需要脚本标签):

http://www.example.com/post.php?=[在页面上发布数据]

http://www.example.com/post.php?= alert('XSS')

如果这被存储在数据库中并发布在页面上,那么每个人都会看到一个 JavaScript 警报。

非持久性 XSS 的示例如下(您需要脚本标签):

http://www.example.com/search.php?=[在页面上发布数据,仅用于此查询]

http://www.example.com/search.php?= alert('XSS')

只有在该 URL 中有帖子数据的人才能看到您的警报,因为它没有被存储。

这与 XSS 攻击无关,但值得一提的是 UNICODE 镜像字符,它使无辜的 url 具有潜在危险。

http://elgoog.im/search?q=moc.elgoog.www://ptth

如果你检查这个答案的源代码,你会看到代码是:

&#8238;http://elgoog.im/search?q=moc.elgoog.www://ptth

这可用于重定向到潜在的不良网站。

此外,如果您无法单击链接,则必须复制并粘贴它。没有人会手动输入!

http://elgoog.im/search?q=moc.elgoog.www://ptth

注意:镜像角色不镜像网页!