from : http://superhei.blogbus.com/logs/13463505.html
CSRF在过去的n年(n>2)一直都火,在bh/defcon/owasp等会议上多次探讨CSRF的攻防[具体你可以看看以往的那些pp].前段时间PLAYHACK.net上发表了一个总结性的pp:Preventing CSRF,然而CSRF是很难彻底防止的,这个也是我说CSRF卑鄙无耻的一个原因,下面我的一些Bypass Preventing CSRF的tips:
0x01.HTTP Referer
其实国内的CSRF攻击由来已久了,比如n年前的各大下载网站防止盗链,n前dvbbs的一个xss利用了csrf提升权限等等.在下载网站防止盗链的过程中很多就使用了通过判断HTTP Referer来限制,但是这样的Prevent很容易就被绕过了.
0x01a.Attack From Inside
很多人都忽律了从site'内部'的攻击.
1.很多的web app都支持link/img等标签,然而通过这些标签访问的url的Referer都是本站的,所以攻击者只要在你的bbs 或者blog等上通过那些标签发一个你构造好的url,然后就是引诱admin了 :)
2.ie有很多特点如:txt/图片等里面的html/js会被执行,当年你可以通过上传你的构造的代码...[注意这里txt里js执行的domain和txt是同一个]
0x01b.伪造http header
1.客户端脚本:
a.js
XMLhttp.setRequestHeader() 但是xmlhttp不可以跨区域[当然你可以利用0x01a.2里的方式上传],所以一般的是要结合xss.
b.as
* XML.addRequestHeader()
* LoadVars.addRequestHeader() as里直接设置Header是有一些限制的,比如 .addRequestHeader("Refere", "AAA"); 这样是不行的.Rapid7在06年发布了一个可以绕过的巧妙方法: .addRequestHeader("Referer:http://anywhere/r/nX-foo", "bar"); 直接放到第1个参数. 这个bug已经被Adobe fix了,但是在htm调用swf时swf可以使用任意后缀,我们同样可以利用类似0x01a.2里的方法一样把swf上传[具体可以参考《Discuz!/phpwind flash标签的xss》]
2.服务端脚本:
基本上所有的服务端语言都有发http包的功能,如php的fsockopen(),asp的xmlhttp等等,所以可以通过外面服务端脚本来伪造一个Referer[其实就是类似于nc] 这个一般只对于单纯的限制Referer而且没有身份验证的[因为你cookie没办法传递],所以这个基本可以YY的.
0x02.Hidden value
之所以用'Hidden value'做标题,是因为PLAYHACK文中写 '0x03a: Cookies Hashing' 和'0x04: One-Time Tokens'里产生的hash都是通过hidden value来传递.但是我们一样可以通过一些手段得到这个hash.
0x02a.利用xss执行js-xmlhttp在xmlhttp.responseText里得到hash:
xmlhttp.open("GET", siteurl+"admincp.php?action=members", false);
xmlhttp.send();
var echo = xmlhttp.responseText;
var reg = //<input type=/"hidden/" name=/"formhash/" value=/"([/w/d]+)/">/i;
var arr=reg.exec(echo);
var formhash=arr[1];
0x02b.利用as里的xml.onData/LoadVars等得到hash:
import RegExp;
var xml:XML = new XML();
xml.onData = function(s) {
tb1.text = getFirstMatch(new RegExp("<input type=/"hidden/" name=/"formhash/" id=/"formhash/" value=/"(//w+)/">", "ig"), s, 1);
}
xml.load(url+"post.htm");
function getFirstMatch(re, s, i) {
var m = null;
if ((m = re.exec(s)) != null) {
return m[i];
}
}
得到hash后,如果原来app里用的'Request变量'那么我们可以直接通过xml.load等get提交我们构造的变量,如果是post我们可以通过LoadVars等提交:
var _l3 = new LoadVars();
_l3.decode(unescape("formhash="+hash));
_l3.send(url, "", "POST");
但是需要加载crossdomain.xml[而且只可以提交到crossdomain.xml里设置的domain].如果没有crossdomain.xml或者crossdomain.xml里设置不符合我们的要求,我们可以把crossdomain.xml改为任意后缀然后通过System.security.loadPolicyFile()来加载.
0x03.CAPTCHA Image
也就是我们经常看到的图片验证码,如果抛开用户感觉等不谈,就安全上应该是比较安全的防止crsf的方法,目前还没有什么通用的破解方法,现在有很多通过分析图片格式来得到验证码的,但是这些都是基于gui的,没办法利用到crsf上来.
要突破CAPTCHA Image只有具体问题具体分析了,通过分析原代码找到app的一些逻辑错误/算法问题来想办法绕过.比如有的图片验证码是根据cookie来计算判断的,那么我可以通过xss得到cookie来'算'出这个验证码,又如验证码保存到session没有清空,可以暴力这个验证码[详细见lake2的文章:轻轻绕过你的验证码]等等.
小结:
在上面的文字里,其实主要介绍的一个思路是通过http的请求来伪造提交的数据,然后通过分析这个数据得到你要的东西.按这个思路你可以不须拘泥于js/as等脚本,还有很多脚本/语言可以实现如java/jvm? :)
[最后,感谢那些和我一起交流探讨的人们.]
参考:
0.Preventing CSRF:http://www.playhack.net/view.php?id=31
1.XMLHttp参考手册:http://suwei.nanshapo.com/tech/webdev/ajax/xmlhttp/
2.Flash Lite 2.x ActionScript 语言参考: http://livedocs.adobe.com/flashlite/2_cn/main/wwhelp/wwhimpl/js/html/wwhelp.htm
3.HTTP Header Injection Vulnerabilities in the Flash Player Plugin:http://www.rapid7.com/advisories/R7-0026.jsp
4.Discuz!/phpwind flash标签的xss :http://superhei.blogbus.com/logs/11792433.html
5.Request变量与csrf :http://superhei.blogbus.com/logs/11412189.html
6.轻轻绕过你的验证码 :http://blog.csdn.net/lake2/archive/2006/09/15/1224897.aspx
分享到:
相关推荐
Hello, in this tutorial I will teach you how to use XSS to bypass CSRF protection. If you are familiar to XSS and CSRF terms you can skip the first two chapters, but I recommend you read them. Warning...
適用於近期之xccode之過渡偵測方式之檔案
12306Bypass.
FRPFILE iCloud Bypass tool v2.3 2
intel 网卡i211AT原理图和网口的 bypass 设计,稳定设计,通过mcu来控制
什么是Bypass。 大家知道,网络安全设备一般都是应用在两个或更多的网络之间,比如内网和外网之间,网络安全设备内的应用程序会对通过他的网络封包来进行分析,以判断是否有威胁存在,处理完后再按照一定的路由规则...
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。前文学习:[网络
Pro Bangla Bypass Tool_probangla_bypass_tool_icloud_Icloudbypass
Bypass website paywalls
常见的xss bypass方案~
Winlicense脱壳,Winlicense bypass,Winlicensev2.1.3.35以及以下版本通杀。 该文章对应的例子,里面有例子对应的bypass脚本,和脱壳脚本。 http://blog.csdn.net/zhw309/article/details/7490331
Bypass技术介绍,什么是Bypass,Bypass分类即应用方式,Bypass实现的原理分析
Bypass介绍及分析
A host-based emulator bypass for Wellbia's XignCode3.Emulates the integrity-check for XignCode3 through a host-application.A host application launches/initializes XignCode3 causing XignCode3 to run ...
立华科技先进的光/电网络通信接口Bypass功能简介pdf,立华科技先进的光/电网络通信接口Bypass功能简介
12306Bypass_1.10.78 抢票软件
Bypass_1.13.79.zip
适用于 Windows 的 iPhone 5s - X,iOS 12.3 - 13.6.1 不受限制 iCloud 绕过激活,支持重启 ...打开 FRPFILE iCloud Bypass Tool v3.exe 点击 START BYPASS 按钮耐心等待几分钟,直到软件显示 Done!
WIN完美绕激活适用忘记iPhone、iPad ID密码,前提需要使用checkra1n U盘越狱,然后开始绕ID,绕完除了不能打电话,其余都可以,如果要能打电话,需要支付费用
bypass user control access