vulnhub吧唧——THE PLANETS: MERCURY

下载地址:https://download.vulnhub.com/theplanets/Mercury.ova

1.配置环境

cd8106066cdc4d5388f712c352d75c2a.png

 kali:NAT

THE PLANETS: MERCURY:NAT

这里我们把吧唧设置为NAT后并不能正常获取其IP,经过深造后我们在此进行救援模式拯救我们的吧唧

993e8c8f348b43c4b12f50d582b4141a.png

 开机长按shift进入这个界面(多试几次)

b8b6c202112f4a919bb32a37261b5fc7.png

 接着我们在刚刚那个界面按e后出现这个界面,我们利用上下键找到ro quiet,我们将其改成rw single init=/bin/bash

cdc3ea301d5b4b389b6e294df43856da.png

 这条命令常用于系统修复,故障排除或执行特定的维护任务(其实没有single也可以,他这里起作用的主要是init=/bin/bash)

76efcb043d0d4177adcbb5a4aa81e337.png

 按ctrl+x进入系统,我们知道了他的版本号后经过深造我们知道了Ubuntu新版本中修改ip地址的配置文件为/etc/netplan/xxx(xxx是网卡名称),我们搁这儿首先查看网卡名称

696a9aaae413464a9a0b36e0f143504c.png

然后我们直接重启,上nmap

857fb812d7aa4cdc979f6378d29dabfa.png

芜湖,救援成功啦,成功得到吧唧的ip为192.168.139.137

2.主机发现

e9825372088a44dca9ecb576b7dcc7c7.png

 我们进行更细致的扫描发现他开放了22ssh服务和8080http服务,8080后面这么大一坨的意思是http服务为python3.8写的页面

3.访问服务

c58ba60da66d47a9bbd94eef7b658f4f.png

我们发现他好像并不让我们访问,因为是python卸掉,所以我们随便构造一个错误,看看有没有debug

b5004d83eeb64a9f9a55a5cce0d31976.png

 直接就是被我逮住了,差点儿就被迷惑住了,既然有,我们就直接开始扫

63d9bf9d6f7d4322a825b541cd792442.png

成功看到了我们的老朋友robots协议

d107dd2f7ac748e1a40e90eb22b5439c.png

意思进制爬取/的内容,经过一番测试,我们发现这里也不能访问别的东西,又到了熟悉的沉淀时刻了

37a8b523bb984adf9d1063fc969492a2.png

 经过一番沉淀,我们回到刚刚的debug时候,惊奇的发现(擦亮眼睛后)他给出了目录的

cacd6d9e7240464a86a186bce0121954.png

 我们经过探索和沉淀一番后,看到load a fact页面的URL,顿时脑海灵光一闪

5a6b4e56c5a34112b0a6dd1b3a008678.png

我们直接就是一个人工的点击,感谢他给我科普水星知识的同时,我们也知道了1-8能够正常访问,但是9就没有了,我们合理猜测这是有注入的

bdf922bda8eb4fd1b41844c2776a4643.png

直接就是一个引号给他干沉默了,从这个页面我们可以得到一些东西,至少我们可以知道这个url是通过数据库进行查询的

cf2a58bdedb748889876d24895146b3e.png

直接就是一个666,继续按照我们常规sql注入的流程进行注表注字段读内容(我是呆杯,注了两个小时半回头一看表名输错了)

c6757bcd40274cb3972f12ae755e5581.png

 我们得到了如下几对儿密码john:johnny1987,laura:lovemykids111,sam:lovemybeer111,webmaster:mercuryisthesizeof0.056Earths,我们尝试登录ssh服务

530d74166088470d8b9e57e0b15e6038.png

我们直接就是一发入魂(挨个儿试),老规矩,直接进行一手信息搜集

4.信息搜集

095263f512ee44cf898c70fcd882929f.png

拿到我们第一个flag{userflag8339915c9a454657bd60ee58776f4ccd}

82e41af958c74098b99a76a52110fa41.png

直接就是泰裤辣,拿个小本本记下来,待会儿去登录,先翻翻webmaster

ea720369a7904c3aaecdb3114ba91973.png

 我们发现了一些好东西,先存着(然鹅他并不让我们登mysql),然后我们登录linuxmaster

7e92db4221e14c60bbd5089305ab185a.png

 成功进行登录,经过我长达两小时半的探索和挖掘,我发现这道题不在我的能力范围以内,得,我得去沉淀一下

781aaf6f7e0b4a5cbf2ef8357303a64c.png

 经过我两年半的沉淀,我了解到了一些知识:sudo默认会启用env_reset将命令行设置的环境变量复原,所以当使用sudo命令时候无法通过命令行来控制环境变量达到提权的目的,但凡事都是有例外的,就比如sudo在配置的时候为用户设置了SETENV选项,那么将会允许sudo使用用户在命令行设置的环境变量。这里我们sudo -l列出所有可以执行的命令和权限时,发现sudo允许用户以root权限来执行一个shell脚本,并为当前用户配置了SETENV,简直就是瞌睡来了遇到枕头了,这个shell脚本的意思就是利用tail(显示文本末尾行的内容)命令显示/var/log/syslog(系统日志文件)最后十行的内容,作为一个weber,我敏锐的嗅觉告诉我,这个shell脚本一定有问题,果不其然,沉淀之后的我就是不一样,一眼就看出(经过高人指点)这个tail不是绝对路径,所以我们可以在这里做下文章

5.滥用变量e8e9f5b0590140259a5ce878df7285af.png

这里我们把/bin/bash输出到tail里面去,再修改他为最高权限,这样我们的准备工作就做好了,那我们该如何进行提权呢?别急,听我缓缓道来

03c58662bd8743a59d9ee8a6bcd9a3ce.png

这里我们把当前目录添加到了环境变量中去,然后我们查看环境变量(env)或者查看$PATH的值(echo $PATH)的时候都可以看见当前目录在我们的$PATH里面,因为$PATH用于指定系统在哪些目录中搜索可执行程序,其中我们这里就有当前目录,而又因为当前目录我们构造了一个tail为/bin/bash,所以我们执行shell脚本的时候就是执行了/bin/bash(这里有这么多目录,为什么偏偏执行.呢?这里体现了$PATH的左结合短路性质,从左边儿开始找,找到了就不找了)

eb64f7177b9244318fbfb5ababa074da.png

 前面我们又说了因为给linuxmaster配置了SETENV,会保留命令行的环境变量,所以我们在sudo执行脚本的时候就可以设置使用的环境变量是我们刚刚构造好的tail,从而执行了提权。

第二个flag:flag{rootflag69426d9fda579afbffd9c2d47ca31d90}

我沉淀的时候,发现了/bin/bash设置环境变量为/bin/bash无可厚非,但我还看见了其他师傅整了个vim??在高人的指点下,我又学到了新东西,在vim的命令模式下我们键入:!/bin/bash可以得到一个shell,也就意味着,如果我们能以root来执行这个shell,那么我们将提权成功

af1ce02ad7634c4cb1bf69d0b1ea3987.png

这里有个网站https://gtfobins.github.io/#,他是一个辅助提权的网站,合理运用我们将可以在上面查到很多意想不到的提权命令

3776a530c4484dd1bdc77df688f198bd.png

这里他给我们提供了一个方式就是vim -c "!/bin/bash",这个-c参数有点眼熟,在之前打Raven:1吧唧的时候我们进行python修改shell为交互式shell和python提权的时候的时候使用过这个参数,在python -c "import pty;pty.spawn('/bin/bash')"中,-c参数是来执行一行python代码的意思,同理,这里的vim -c "!:/bin/bash"的意思也是执行一个vim命令

c7b2e97c079d48209437252077240342.png

这里我们把vim命令拷贝出来(只要拷贝出来,不一定是tmp目录),然后我们利用mv命令将其改名为tail,跟我们刚刚一样,将tmp目录导入环境变量

3fda9fd4377a4a3d8504013247cd0dd2.png

然后我们再次执行shell脚步,同时像刚刚一样设置使用用户自己设定的环境变量

646584679a2e49f181741713c28c7526.png

这样我们就完成了提权

6.漏洞利用

还有一种解法,也是经过高人指点后我才明白的

8dac07879be04c9daf50d4108dd8c89f.png

 这里我们使用find命令查找到了一些文件,然后我们看谁比较奇怪,就去google,bing,baidu一下,这里我们使用find命令查找的是具有suid权限且属主为root的文件,这些具有suid的s标志二进制文件都将以root权限运行。运行这个二进制文件时产生的进程所属为root。因此我们就可以滥用,违背某二进制原有的初心,通过一些方法手段拿到root shell,从而我们去搜索公开的漏洞或者使用命令进行suid提权(参考https://www.freebuf.com/articles/web/272617.html

7e234ecefb194c4181b10e3d80ebf1a5.png

 可以看到他的漏洞编号是CVE-2021-4034,我们直接去github上找脚本一把梭

6ec8ac8f165b426799286f379efecd33.png

 我们找个脚本

ff2704886916421893e67c577ff88b0e.png

git clone命令的意思是从远程代码仓库复制代码到本地,我们这儿需要把那个cve2021-4043.py整到本地来,随便怎么整下来就是,运行即可得到一个具有root权限的shell,成功提权

总结:学到了一些新的东西,信息搜集,python编写的网站可能有debug模式,sql注入(后来提到root后我登进mysql并没有什么有用的东西),环境变量的滥用,suid文件的检索利用,多多积累啦

新手上路,请多指教

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值