靶场链接:https://pan.baidu.com/s/1ors60QJujcmIZPf3iU3SmA?pwd=4mg4
提取码:4mg4
XSS漏洞原理
XSS又叫CSS(Cross Site Script),跨站脚本攻击。因为与html中的css样式同,所以称之为XSS。在OWASP top 10 2013年度中排第三名,在OWASP top 10 2017年度中排第7名。
属于web应用中计算机安全漏洞,是恶意的web访问者将脚本植入到提供给用户使用的页面中,通常是使用JavaScript编写的危险代码,当用户使用浏览器访问页面时,脚本会被执行,从而达到攻击者目的。
XSS漏洞介绍
XSS攻击最终目的是在网页中嵌入客户端恶意代码,最常用的攻击代码是JavaScript语言,但也会使用其他的脚本语言,例如:ActionScript、VBScript。而如今的互联网客户端脚本基本上是基于JavaScript,所以如果想要深入研究xss,必须要精通JavaScript。
xss换句话说,JavaScript能够到什么效果,xss的胃里就有多大。这完全不是危言耸听。JavaScript可以用于获取用户的cookie,弹出窗口,那么存在xss漏洞的网站,xss就可以用来盗取用户cookie,废掉页面,导航到恶意网站!更高端的xss代码完全可以进行监控你的键盘操作,模仿windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入JavaScript代码!
XSS 的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。
而由于直接在用户的终端执行,恶意代码能够直接获取用户的信息,或者利用这些信息冒充用户向网站发起攻击者定义的请求。
在部分情况下,由于输入的限制,注入的恶意脚本比较短。但可以通过引入外部的脚本,并由浏览器执行,来完成比较复杂的攻击策略。
XSS攻击流程
XSS危害
1、网站弹框(刷流量);
2、网站挂马;
3、会话劫持;
4、cookie被盗取;
5、用户提取;
6、账号被盗;
7、DDOS;
8、蠕虫攻击;
xss实战
1. 反射型 XSS(get)
直接输入的话有字数长度限制,无法在输入框中输入完整 JS 代码
2. 反射性 xss(post) 直接插入 JS 代码便可执行,可以看出请求方式为 POST,参数保存在请求体的 message 中:
3. 存储型 XSS
提交 JS 代码如下,提交后每次打开这个页面都会触发弹窗
<script>alert(1)</script>
4. DOM 型 xss
输入任意数值点击提交,会在表单下面新生成一个 <a> 标签,输入的数值保存在 href 属性中
构造 poc 如下,闭合前面的单引号并通过点击事件弹窗:
' οnclick='alert(1)
再次点击新生成的链接便会弹窗
5. xss 之盲打
输入 poc 并进行提交
<script>alert(1)</script>
登录后台查看提交内容时便会弹窗
6. xss 之过滤
直接输入 JS 代码,可以看到被代码过滤
测试发现输入 script 不会过滤,而输入 <script 和 </script 会过滤,可过滤的依据便是匹配 <script 或 </script ,可以直接通过大小写绕过过滤
<Script>alert(1)</Script>
7. xss 之 htmlspecialchars htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体,预定义的字符有:
- & ==> &
- " ==> "
- ' ==> '
- < ==> <
- > ==> >
由于提交的数据会插入到 <a> 标签的 href 属性中,可以直接通过 javascript: 伪协议执行 JS 代码:
javascript:alert(1)
也可以通过事件闭合来执行 JS 代码:'οnclick='alert(1)
8. xss 之 href 输出
尝试使用闭合事件的方式进行注入,发现单引号和双引号都被转义
因此只能通过 javascript: 伪协议来执行 JS 代码 javascript:alert(1)
9. xss 之 js 输出随意输入一个数值 111 ,可以看到数值被集成到了网页的 JavaScript 代码中
只要闭合集成的 JavaScript 代码便可实现 XSS:
'</script><script>alert(1)</script>