脚本代码大全 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解

11/28 08:25:11 来源网站:辅助卡盟网

脚本代码大全 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解

作者 | 杨秀璋

责编 | 夕颜出品 | CSDN博客

本文将详细讲解XSS跨站脚本攻击,从原理、示例、危害到三种常见类型(反射型、存储型、DOM型),并结合代码示例进行详细讲解,最后分享了如何预防XSS攻击。本文参考了爱春秋ADO老师的课程内容,这里也推荐大家观看他Bilibili和ichunqiu的课程,同时也结合了作者之前的编程经验进行讲解。

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

什么是XSS

1.XSS原理

跨网站脚本(Cross-site scripting,XSS)又称为跨站脚本攻击,是一种经常出现在Web应用程序的安全漏洞攻击,也是代码注入的一种。XSS是由于Web应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意的脚本代码注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害者用户可能采取Cookie窃取、会话劫持、钓鱼欺骗等各种攻击。这类攻击通常包含了HTML以及用户端脚本语言。

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

漏洞成因

如下图所示,在URL中将搜索关键字设置为JS代码,执行了alert()函数。该图中,上面有一个URL,下面是一个页面返回的HTML代码,我们可以看到白色部分HTML是我们事先定义好的,黑色部分参数是用户想搜索的关键词。当我们搜索了test+Div最后等于123,后台反馈页面的搜索引擎会告诉用户搜索了什么关键词,结果如何等等。

这个地方如果没有做好转移,可能会造成XSS跨站,我们可以看到蓝色部分是我们事先定义好的结构,被攻击者利用之后它先把这个DIV结束了,最后加上一个script标签,它也有可能不跟你谈标签,直接发送到它的服务器上。参数未经过安全过滤,然后恶意脚本被放到网页中执行,用户浏览的时候就会执行了这个脚本。

该漏洞存在的主要原因为:

2.XSS示例

作者接下来使用WAMP(Windows+Apache+MySQL+PHP)搭建PHP网站平台作,简单讲解两个常见案例。

示例1:GET提交

下面是一个简单的XSS漏洞代码(xss-01.php)。

<?php  echo "这是一个XSS漏洞攻击测试页面!
";
$xss = $_GET['x']; echo $xss; //JS代码:<script>alert(1)</script>?>

当输入正确的值时,网页能正常显示。


http://localhost/xss/xss-01.php?x=122

输出结果如下图所示:

而当我们输入JS脚本代码时,它会弹出相应的窗口,这就是一个XSS注入点。


http://localhost/xss/xss-01.php?x=<script>alert(1)</script>

示例2:POST提交

另一种常见的XSS上传漏洞代码如下所示:

index.html

  XSS测试1  <body>    
请输入用户名:

xss.php

      测试结果    <body>    <?php      echo $_REQUEST['name'];    ?>  

输入正确的用户名如“eastmount”,仍然能正确显示。

而输入脚本代码 < script>alert(1)< /script> 时,它弹出了对应的脚本窗口,存在XSS注入漏洞。注意,这里采用的是POST方法提交数据,而前面采用的GET方法,其最主要的区别是GET方式的网址可以看到参数,而POST方式URL始终不变。

    暂无相关资讯
脚本代码大全 遭遇 XSS 跨站脚本攻击?稳住,这些方法可保你渡劫 | 附代码、图解