HTB-CAP_WP

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

细节说明

  1. 为什么不需要 SUID 位?
    SUID 位的作用是让程序运行时以文件所有者的权限执行(如 /bin/passwd)。而 CAP_SETUID 直接赋予了进程修改 UID 的权限,绕过了对 SUID 位的依赖。

  2. CAP_SETUID是什么
    在 Linux 安全机制中,CAP 是 Capabilities(能力) 的缩写。CAP表示这是一个能力,SETUID表示该能力的具体功能。这样允许进程自由修改用户 ID(UID),包括将当前进程的 UID 设置为 0

posted @ 2025-03-30 12:50  Licivo  阅读(144)  评论(0)    收藏  举报