跟着大佬学习下漏洞挖掘。
已知无人机开机时会开启一个热点,将电脑连上这个热点,此时就与无人机在同一个局域网内。得到该局域网的IP后,通过nmap分别查看无人机和遥控器开启了哪些端口。
无人机开启了ftp和telnet服务,而遥控器开启了telnet和http服务。
1. telnet空口令漏洞
尝试使用telnet远程登录无人机和遥控器的内部系统。无人机系统存在空口令,所以一下子就可以拿到最高权限了。遥控器使用root用户登录,也可拿到最高权限。
2. 遥控器 Web管理服务弱口令
遥控器开放了http服务,用浏览器访问遥控器IP地址(电脑与遥控器处在同一局域网内),出现了一个路由器登录页面,需要登录密码。尝试使用BurpSuite抓包对密码进行暴力破解。
拿出收藏多年的暴破字典,发现口令为“12345678”的报文长度与众不同,尝试使用该口令进行登录,成功登入。
3. 遥控器 Web管理服务未授权重置密码漏洞
登入路由器管理页面后,尝试在系统设置中修改管理密码,抓包发现重置后的新密码。
这时我们可以直接修改抓包中的密码,并且密码长度、字符不受限制。
使用修改的密码进行登录成功登入。
4. 遥控器 Web管理服务危险接口暴露
在抓包过程中,发现它的路径都有那么点意思。在goform
目录下有fromRootLogin
(root登录)、set_manpwd
(重置密码)等,或许可以找到其它有用的路径。一种方法是暴破,但这几率很低;另一种是分析遥控器内部的程序。
进入遥控器终端的/bin
目录,它主要是放置系统的必备执行文件。发现里面有boa
程序,它是一个开源的Web服务器。在/bin
目录下也发现了tftp
程序,是一个简单文件传输工具,可以用它将boa
程序上传到电脑,以便分析。在使用tftp
前,需要在电脑安装tftp
服务器。具体可看:https://blog.csdn.net/m0_45463480/article/details/124550320
1 | tftp 172.16.10.20 -pr boa |
将它拿去IDA逆向分析,顺着main()
函数一个个看下去会发现很多有关Web网页之类的路径。
尝试在浏览器中输入某条路径,验证是否可行。
1 | 172.16.10.10/goform/get_wifi_info |
1 | 172.16.10.10/goform/get_manpwd_info |
5. 无人机 TCP 8021端口 FTP服务未授权访问漏洞
无人机开放了ftp服务,可以通过ftp传输文件。先去/bin
目录下看有哪些命令可以被执行。
有netstat,可以查看无人机开放了哪些端口。
有ftpget和ftpput,可以用来传输文件,ftp需要用户名和密码,否则会登录失败。
1 | 下载 |
1 | fh-linux# ftpput 172.16.10.21 vs_play |
ftp的用户名和密码可以通过Wireshark抓包来获取。
查看App中哪里用到了ftp服务:
发现无人机的IP与端口8021,结合代码分析,这个端口很有可能是专门用来传输照片和视频的,使用ftp传输。
在文件夹路径中输入:ftp://172.16.10.1:8021,无需用户密码即可登入无人机系统的某层目录(/sdcard
)。上面的“picture”和“video”指的应该就是存放照片或视频的目录。
6. 无人机 TCP 8888端口 命令注入漏洞
通过抓包可知无人机端口8888用于与App和遥控器进行TCP通信,8080进行UDP通信。在无人机终端中,哪个才是无人机的主要运行程序呢?
查看终端目录,在千篇一律的Linux目录下发现一个特殊的目录:app。
里面有非常多的配置文件和HEX文件,除此之外,还有一些可执行文件,哪个是我们想要的无人机可执行程序呢?按理说,肯定是最大的那个,要不然也装不下那么多功能。所以vs_play
就很可疑。
由于使用ftp是不可行了,但它还有个tftp工具可用,同4操作即可。
载入IDA,查看有哪些导入函数可以利用,可以看到调用了一个危险函数system()
,如果能成功利用的话就可以入侵无人机终端。
目前来说只能利用收发UDP/TCP包来修改数据,在众多调用system()
函数当中,如果刚好有利用到UDP/TCP包中数据的内容,或许就可以构造POC来入侵系统。
发现这里的system()
函数传入的是可变参数,参数是从&v101[v12]内存块中复制过来的最多29个字节。
继续往上看,分析分析:
所以就可以构造发包,间接对终端执行命令。
1 | import socket |
7. 无人机 TCP 8888端口 / UDP 8080端口 重放漏洞
7.1 TCP 8888端口 重放漏洞
SJ F PRO v2.4.5无人机App分析 6.1.2 云台角度调节
7.2 UDP 8080端口 重放漏洞
与7.1同样方法,也是可以找到一个云台角度调节的包。
1 | import socket |