目录
XSS(跨站脚本攻击)
1.XSS简介
1.1什么是XSS?
1.2 XSS攻击的危害包括:
2. 分类
2.1反射型
2.2存储型
3. 构造XSS脚本
3.1常用HTML标签
3.2常用javascript方法
4.反射型(四种安全级别演示)
4.4.1低安全级别
4.4.2 中安全级别
4.4.2 高安全级别
4.4.2 不可能安全级别
5.存储型(四种安全级别演示)
5.1低安全级别
5.2 中安全级别
项目实验环境
Metasploitable2-Linux 靶场
OWASP Broken Web Apps VM v1.2 靶场
Kali-Linux-2020.1-vmware-amd64 攻击机
跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞 ,也是web中最主流的攻击方式。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。
从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS主要原因:
过于信任客户端提交的数据!
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号,各类管理员帐号
2、控制企业数据,包括读取、篡改,添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
反射型xss攻击( Reflected XSS)又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻
击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接( 即每次攻击需要用户的点击)。
存储型XSS (Stored XSS)又称为持久型跨站点脚本,它一般发生在XSS攻击向量 (一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut 曾经就遭受到XSS。
两种类型实现的结果完全相同,不同的是前者需要点击,后者存在于网页的数据库内
alert alert()方法用于显示带有一条指定消息和一个确认按钮的警告框
window.location window.location对象用于获得当前页面的地址(URL) ,并把浏览器重定向到新的页面
location.href 返回当前显示的文档的完整URL
onload 一张页面或一幅图像完成加载
onsubmit 确认按钮被点击
onerror 在加载文档或图像时发生错误
查看网页的后端代码,只要输入的字符不是空字符、NULL,那就直接打印Hello加输入的内容
Hello ' . $_GET[ 'name' ] . '
';
}
?>
测试一下
测试是否可以XSS攻击(注意这步及其关键,无论是反射型还是存储型都要先进性XSS的测试)
在输入框输入,弹出窗口,可见存在XSS漏洞
那么,接下来就肆意妄为的爆破吧,首先拿到此页面的cookie,这里注意一下,攻击者直接通过一些方式(社会工学)让受害者点击一个链接,这个链接就会拿到受害者在这个页面的cookie,下图拿到的cookie只是简单的测试一下XSS的漏洞威胁
获取当前页面的cookie
security=low;PHPSESSID=49acb6ca0a588a3176e77b602a36fce3
将拿到的这个cookie就可以以这个用户的名义去登录网页
测试:
换一个浏览器 使用获得的cookie去登录,可见无需用户名与密码,直接登录上来了
这次先不去直接查看后端的代码,正常情况下是不能看到后端代码的(废话),这时候就要发挥想象力了,如果你觉得有些费力,且不妨看看我是怎么思考的
分析:
首先,还是先测试一下这个网页有没有XSS漏洞,此时并没有弹窗,下面的输出是
内嵌
替换,即使用其他标签来替换
注:192.168.211.130为kali的IP
先清除之前植入的XSS代码
这里由于前端的页面对输入框有字数限制,这里先改大一些
一旦注入,就会跳转至Kali的cookie.php页面用于收集用户的cookie值
第三步:肉鸡点击被植入了XSS代码的页面就将自己的cookie提交给了KALI,注意,对于弹出的窗口,要允许其弹出,要不然不会提交自己的cookie
一旦允许,就会将自己的cookie上传给Kali的/var/www/html/cookie.txt内
此时 ,KALI就会生成一个存储cookie的文件,其内容存储的就是user用户的本地cookie
验证,可见与Kali获取的cookie是一致的
然后呢,你都拿到cookie了,接下来就肆意妄为吧
查看低安全级别的后台代码
' . mysql_error() . '
' );
}
?>
可见,使用POST提交了name与message,然后对dvwa库的guesbook表进行插入数据,从这里可以看出,确实是写死在了数据库中,更能理解XSS的存储型漏洞的详细了。在这个安全级别下无任何的防御措施,任人注入漏别
登录到后台的数据库中验证,可见,与预期相符
直接使用最简单的弹窗类进行测试,可见其是将