出问题的地方是在上传简历那里,可以上传任意后缀,

上传一个a.php文件,很正常没有执行php,也没有得到文件路径,但是文件的内容以base64编码的方式返回了,

接下尝试把文件名改为 /etc/passwd,file:///etc/passwd 都没有成功。
facebook_breakup
多次尝试后,我上传一个压缩的 .php 文件,返回信息是

//包含php文件,没有解压缩
unzipped,base64'd contents of .php

如果你读过Facebook的"Bounty hunter's guide",你就知道怎么做了。

这个guide里面安全研究员上传了一个zip压缩文件,里面是一个/etc/passwd的链接,几步后Facebook就返回了几行/etc/passwd。

 

服务器会做一次解压缩,作者的猥琐思路开始了:

1.创建一个链接文件到/etc/passwd

ln -s /etc/passwd link

2. 压缩文件,同时保留链接

zip --symlinks test.zip link

3.上传test.zip文件,系统会自动解压缩

4. 页面当中会返回/etc/passwd的内容。

 

facebook_resume

下面是报告与处理的时间线:
Nov 30, 2014  09:45 - vulnerability reported
Nov 30, 2014  17:58 - reply from Facebook's security (Neal) saying they cannot reproduce bug
Nov 30, 2014  18:08 - update from Neal, they can reproduce it
Nov 30, 2014  19:10 - temporary fix has been pushed, disabling resume uploads
Dec 01, 2014 ~23:00 - more permanent fix pushed, now server no longer responds with contents of uploaded resume (Emrakul)
Dec 05, 2014  18:15 - bounty of $5500 awarded (Neal).
Dec 05, 2014 ~19:00 - objection about reward sent to Facebook's team
Dec 06, 2014 ~23:30 - Neal from Facebook explains this is actually a third party system they run

【相关来源:reading-local-files-from-facebooks &  wooyun

 

源链接

Hacking more

...