跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
类型
通过网页插入恶意脚本,如前端的HTML和JavaScript。当用户浏览网页时,浏览器执行用户输入的JS代码,实现控制用户浏览器
这种攻击往往具有一次性。
攻击者通过邮件等形式将包含XSS代码的链接发送给正常用户。当用户点击时,服务器接受该用户的请求并进行处理,然后把带有XSS的代码发送给用户。用户浏览器解析执行代码加发XSS漏洞。
攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性.
攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中当用户进行正常访问时,触发XSS代码。
全称Document Object Modei;使用DOM动态访问更新文档的内容、结构及样式。
服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。
请记住两条原则:过滤输入和转义输出。
具体执行的方式有以下几点:
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
第二、在输出方面,在用户输内容中使用
第三、严格执行字符输入字数控制。
第四、在脚本执行区中,应绝无用户输入
第五、Cookie防盗
利用XSS攻击,攻击者可以很方便地窃取到合法用户的Cookie信息。因此,对于Cookie,我们可以采取以下的措施。首先,我们要尽可能地避免在Cookie中泄露隐私,如用户名、密码等;其次,我们可以将Cookie信息利用MD5等Hash算法进行多次散列后存放;再次,为了防止重放攻击,我们也可以将Cookie和IP进行绑定,这样也可以阻止攻击者冒充正常用户的身份。
获取用户的cookie,利用cookie盗取用户对该网站的操作权限;
获取用户联系人列表,利用被攻击者的身份向特定的目标群发送垃圾信息
盗取cookie
钓鱼攻击
传播软件
常见的防xss代码
$x=preg_repalce("/script/",’’’’, $x)
$x=preg_repalce("/script/i",’’’’, $x)
$x=preg_repalce("/alert/i",’’’’, $x)
第一个意思就是当检测到script这个字段时就会替换为空值。但是他没有限制大小写,我们可以用大小写进行替换绕过比如: 即可绕过
第二个在代码后加了个i意思是不区分大小写。这个我们可以采用其他标签比如(这里有onerror显示不出来) 或者采用body标签
(这里的onload显示不出来)即可绕过。第三种是将alert标签替换,并且不区分大小写,这样就没办法使用alert了,我们可以用它的代码执行对它进行编码,方法:先选中alert(/xss/),然后使用hackbar中的string,fromcharcode也就是第一个选项对它进行编码,然后调用eval+(字符串),如
.来进行绕过。编码:我们可以对我们的语句进行hex编码来绕过xss规则,比如可 以转化为:%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%2F%78%73%73%2F%29%3C%2F%73%63%72%69%70%74%3E 都有在线工具提供。
"<>"的转义 \u003c,\u003e就是一个对括号 可以构造:\u003cscript\u003ealert(/xss/)\u003c/scriptu003e.
1.在数据输入界面,输入:,保存成功后如果弹出对话框,表明此处存在一个XSS 漏洞。
2.把url请求中参数改为,如果页面弹出对话框,表明此处存在一个XSS 漏洞。