2025/2/15
ssh登录
从流量快照中获取到靶机的账户密码
![[2953239856a923259e0d30f46800a986.png]]
进行ssh登录
提权
登陆后是nathan用户,权限低,想办法进行提权
这里使用 LinPEAS
工具 [[LinPEAS]]
尝试在靶机上下载l linpeas.sh
文件,靶机无法访问GitHub,由于用的本地的虚拟机作为攻击机所以也无法访问到
因为ssh连接上了,通过scp进行文件传输
![[43bd6539ab756bf41131539c1118b9cb.png]]
scp linpeas.sh nathan@10.10.10.245:/tmp/linpeas.sh
成功上传 Linpeas.sh
在靶机允许该文件,使用指令 ./linpeas.sh
报错权限不足
使用 bash linpeas.sh
即可允许
![[0cdc650cdf3be4127e3263f11200e4bf.png]]
运行结果
![[2d2d10782c50898bf68ea2cde88983cc.png]]
发现靶机上/usr/bin/python3.8
被赋予了 cap_setuid
和 cap_net_bind_service
能力(非默认配置)。
cap_setuid+ep
表示该能力是 生效的(Effective) 和 允许的(Permitted)。CAP_SETUID
允许 Python 进程直接修改自身的用户 ID(UID),无需依赖 SUID 位。- 通过 Python 脚本调用
os.setuid(0)
,将进程的 UID 切换为0
(root),然后启动一个 root shell。
编写脚本提权:
import os# 1. 利用 CAP_SETUID 将当前进程的 UID 设置为 0(root)
os.setuid(0)# 2. 启动一个 root shell
os.system("/bin/bash")
![[2c793f1dbb865893444c3882ccc74ac6.png]]
至此权限从nathan提升至root
细节说明
-
为什么不需要 SUID 位?
SUID 位的作用是让程序运行时以文件所有者的权限执行(如/bin/passwd
)。而CAP_SETUID
直接赋予了进程修改 UID 的权限,绕过了对 SUID 位的依赖。 -
CAP_SETUID是什么
在 Linux 安全机制中,CAP 是 Capabilities(能力) 的缩写。CAP表示这是一个能力,SETUID表示该能力的具体功能。这样允许进程自由修改用户 ID(UID),包括将当前进程的 UID 设置为0