XSS之跨站原理分类以及攻击手法(一)

XSS漏洞产生原理以及危害

原理

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

XSS都是前端漏洞

我个人理解XSS就是在后端调用了用户输入内容输出到页面上,用户输入浏览器能解析的代码,后端输出到页面导致被浏览器解析执行。

不妨实验一下,用php搭建一个环境:test.php

<?php
$xss = $_GET['x'];
echo $xss;
?>

很简单 这就是个Get传参 接受用户的参数然后输出出来,比如传一个1。

原理1

这是我们输入了正常的数据,如果我们输入浏览器能够解析的js代码呢?

比如:<script>alert(1)</script>  js的弹窗代码。

原理2

可以看到被浏览器当作代码去解析执行了,这就是xss攻击。

危害

  1. 网络钓鱼,包括盗取各类用户账号;
  2. 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
  3. 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;
  4. 强制弹出广告页面、刷流量等;
  5. 网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;
  6. 进行大量的客户端攻击,如DDoS攻击;
  7. 获取客户端信息,例如用户的浏览历史、真实IP、开放端口等;
  8. 控制受害者机器向其他网站发起攻击;
  9. 结合其他漏洞,如CSRF漏洞,实施进一步作恶;
  10. 提升用户权限,包括进一步渗透网站;
  11. 传播跨站脚本蠕虫等;

XSS特点

xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的。

xss从代码层面看是前端漏洞,都是在前端执行操作,JS能干嘛 他攻击就能干嘛。

他这个漏洞能否利用 跟浏览器版本有关系 IE就不行弹窗

鸡肋的地方 对方浏览器 可能会过滤。。。

漏洞产生点:网页输出一些东西 这个东西能被攻击者所控制利用输出一些js代码。

XSS漏洞分类

反射性(非持续性)

反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型XSS大多数是用来盗取用户的Cookie信息。

比如我上面那个原理演示那个就是反射性,也就是说他是一次性的,你必须访问

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

这个网址时才会生效,实战中这种反射性的你要去诱骗对方点击这个连接才行。

反射型

演示:

Get型xss: 可以看到这种都是直接在url里面的这种 我们提交个123 ,url就可以看到参数

pikachu0

 

我们直接在url里构造js语句:

pikachu1

成功执行解析!

POST型xss:

这里我们输入 111  发现url并没有  因为采用了post的方式进行提交

post0

无所谓 直接 输入框里输入<script>alert(“xss”)</script> ,照样xss成功!

post1

 

储存性(持续性)

存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie。

这个是啥意思呢,这个跟反射不一样,反射是一次性的,而且我上面搞得 只有我自己的浏览器能看见这个弹窗懂吧,因为相当于只是我发给服务器一串弹窗代码,服务器响应了一下,然后被我浏览器解析了,但是储存型xss就不一样,它相当于把代码永远的留在了这个页面,代码被服务器保存了下来,只要是访问这个页面的人都能执行这串代码。

储存型

演示:

最经典的就是留言板:

我们留有一串带有js代码的留言。

存储xss0

那么,每次访问这个页面都会有弹窗效果,这里是不论谁,只要访问这个页面就会执行这个代码,弹窗。

DOM型

简单来说DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss。

DOM 学过前端应该很容易理解,就是相当于我们在前端页面点击某个东西,他调用前端代码,不会发送数据包请求后端,我是这样理解的。

DOM

JS代码自己在本地进行交互,不用发包请求后端。  

 

演示:

这里随便输入一个值 发现他是DOM 调用前端js代码 创建了一个超链接

DOM

 

观察之后想办法把前面跳转给闭合,构造一个点击触发弹窗的语句 

onclick=alert(1) ,点击成功触发DOM-XSS

DOM3

XSS攻击手法

盲打

“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。 当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。

就是说你不知道对方后台会不会看见你这个xss执行,就盲着试,就叫盲打,这种一般留言反馈,商城购物这种场景比较多。

举个例子:

盲打

很明显,我们提交这个东西相当于反馈,建议,管理员是会看的,那我们提交一个js代码能否达到一个xss效果,不知道,就算他看见了我们也不知道,这就是盲打,但是后期可以整一些高级的,触发之后拿Cookie等,这个是有反馈的我们是知道的,那就先来试试吧

在内容中输入:

111<script>alert(“管理员你好 我是hacker”)</script>

提交以后,登录后台,用管理员视角看,刚进去就来个大弹窗:

盲打2

可以看到我们的js是被执行了的。

盲打3

利用XSS平台夺取cookie

我们知道一个网站后台如果拿到cookie,就等于拿到了通行证,那么我们就可以利用xss平台盲打管理后台,把管理员的cookie发送到我们这里,然后利用cookie直接上后台。

XSS平台

我们这里直接复制其中一个,然后本地搭建一个留言板进行提交测试,很遗憾在测试这部分时候,我搭建的留言板崩了,环境问题,这里我换一个环境,还拿上面盲打举例。

图片[17]-XSS之跨站原理分类以及攻击手法(一)-Drton1博客

 

提交之后我们登录后台:

1

登录后,我们以及触发xss了,返回平台看信息。

 

2

 

可以看到 登录后台url  cookie 页面源码 甚至 屏幕截图都有。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 共1条

请登录后发表评论