Back
Featured image of post 打靶记录-Planets:Mercury

打靶记录-Planets:Mercury

这次的靶机同样来自vulnhub上的Planets系列:Mercury(水星)

环境

虚拟机软件:VirtualBox 7.0.18
网络连接模式:NAT网络
攻击机:kali-linux,ip为10.0.2.4
目标机:ip为10.0.2.6

渗透过程

扫描当前网段存活主机:nmap -sn 10.0.2.4/24

  • -sn:发现主机后不进行端口扫描,只打印响应扫描的存活主机

接着扫描端口:nmap --min-rate 10000 -p- 10.0.2.6

可以看到开着22(ssh)与8080(HTTP)端口

进一步扫描端口信息:nmap -sT -sC -sV -O -p22,8080 10.0.2.6

由于目标开放了web服务,可以趁着扫描的时间,打开网页看看有什么信息(访问时用http协议,端口为8080)
打开网页后只有一句话:Hello. This site is currently in development please check back later.
源码中也没有信息

在进行常规的目录暴破前,可以先手动试试一些常见的目录,如robots.txt之类
robots中没有信息,而在我输入admin后,回显如下

从这个404响应中我们能提取出哪些信息呢?

  • 目标开启了debug模式
  • 目标使用了Django框架
  • 该网站存在一个mercuryfacts目录

我们进这个目录看看

先来看看Facts:

发现url中的数字会影响回显的信息,burp抓包测试后确认一共有八个信息,对应1到8整形数字,当我们输入字符后,会有一条报错信息

猜测可能存在数字型的sql注入,测试一下

确认存在sql注入后,可以获取网站用户的用户名与密码

这时可以尝试ssh连接,多次尝试后使用webmaster用户连接上了ssh,成功getshell
(这就给我进来了?)

简单的信息收集:

  • 目标主机系统:Ubuntu
  • 网络情况:单网卡(废话这是靶机)
  • flag获取

可以看到,渗透过程中不一定要按部就班地按照常规的流程来,可以凭借自己的经验撕开一条口子,无法成功时,再用常规的手段,可以大大减少渗透的时间。什么,你问我为什么不用sqlmap?
手注多了都没想起来有这玩意能用 :)

提权

知识点:环境变量提权

尝试sudo -l查看当前用户的权限,发现没有这个权限
四下查找一番,在网站目录中找到了note.txt,内容如下

得知两个用户均为受限用户

切换到linuxmaster用户,查看当前权限:

该用户可以调用需要root权限的程序check_syslog.sh

我们看看这个程序的权限:

没错,有suid权限与x执行权限

来看看这个执行程序做了些什么:

发现该程序需要调用tail命令

提权思路:在环境变量中替换tail使其可以调用bash,使root执行替换后的tail

提权过程:

  1. 编辑新的tail文件,写入/bin/bash,给执行权限

  2. 将文件路径写入原有的tail命令的环境变量前,如此一来,在调用tail命令时会优先匹配该目录下的tail文件执行

  3. 保留当前环境变量PATH,使用sudo运行check_syslog.sh,触发root用户调用tail,实现提权

获取root用户的flag,拿下这台靶机

总结

  • 主机发现:nmap -sn
  • Django的debug模式获取报错信息
  • 常规sql注入获取用户名密码,ssh连接
  • 环境变量替换提权:
    • 保留当前环境变量运行sudo --preserve-env
Licensed under CC BY-NC-SA 4.0