The Planets-Mercury

The Planets-Mercury

一. 信息收集

因为靶机下载下来后是桥接模式,即靶机在内网,所以先进行主机发现:

这里的142就是目标靶机,然后就扫一下端口,看它起了什么服务

可以看到这里只开了22和8080端口,那这里我们肯定是优先去看8080端口的,因为22端口目前没有任何信息。当然可以通过以下命令进一步扫描:

nmap -v -A -sC 192.168.43.142

扫描后,通过得到的信息就可以知道它的web服务是通过python起的

直接访问8080后得到如下页面:

意思就是说这是一个正在开发的页面,我们随便访问一个目录

触发了报错,从报错中可以知道,web端使用的是django的框架,然后这里也漏些信息,前两个没什么东西,主要是第三个,访问它:

出现东西了,下面有两个链接可以点,我们可以分别点进去看看

load a fact:

See list:

二. 漏洞利用

从see list的信息可以知道前端直接调用了mysql,且存在一个users表。那很容易猜到load a fact中的页面应该是存在sql注入的,注入点就在url中的 /1/ 这里。之后的话可以手工注,也可以通过sqlmap注,我第一次是手工的,这里的话就通过sqlmap来跑了。

sqlmap -u http://192.168.43.142:8080/mercuryfacts/1 --batch --dbs

发现了两个库,这里结合前面的信息我们其实可以确定users表就在mercury库中,所以我们可以直接看users中的字段

sqlmap -u http://192.168.43.142:8080/mercuryfacts/1 --batch -D mercury -T users --columns

这里有三个字段,我们看username和password的,将它们dump出来

sqlmap -u http://192.168.43.142:8080/mercuryfacts/1 --batch -D mercury -T users -C username,password --dump

内容被放在了上述文件中,我们去看看:

通过 sed 将 , 替换为 : 然后重定向到文件中,这是为了得到一个hydra支持的文件格式,以此来进行ssh爆破

cat /root/.local/share/sqlmap/output/192.168.43.142/dump/mercury/users.csv | sed 's/,/:/g' > a.txt

之后的话使用hydra爆破即可

可以看到已经得到用户名和密码了,之后就通过ssh连上去

连上去之后ls就可以看到user_flag了

三. 权限提升

第一个flag已经拿到了,之后就是想办法提升到root,可以先看一下/etc/passwd

可以看到还有两个用户,那应该就是通过其中的某一个用户可以提权到root,先去webmaster的家目录里看看有哪些文件和目录

看到一个mercury_proj目录,进去后可以看到有一个notes.txt文件,查看一下

基本可以肯定下面那个就是linuxmaster的账密了,不过密码需要通过base64解码后才能看到:

mercurymeandiameteris4880km

切换到linuxmaster用户中

通过sudo -l发现它可以执行一个check_syslog.sh文件,而且前面有一个setenv标识。这是一个 SUDO 权限标记(tag),它的含义是“允许你在运行该命令时修改(或保留)环境变量”。

我们先看看脚本的内容:

里面有个tail命令,那我们就可以通过软链接劫持+vi的方式来提权了,执行以下shell命令:

ln -s /bin/vi tail

创建一个软链接

export PATH=./:$PATH

将当前目录加入到环境变量中,且排在最前面。这样执行check_syslog.sh脚本的时候就会找到我们当前目录下的这个tail,而不会找到/usr/bin/tail。然后就是通过下面的方式执行check_syslog.sh脚本:

sudo PATH=$PATH /usr/bin/check_syslog.sh

然后通过vi提权:

成功提权到root,然后去root家目录下即可获得最后一个flag

posted @ 2025-04-27 15:56  sky2dawn  阅读(28)  评论(0)    收藏  举报