这次的靶机同样来自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
提权过程:
-
编辑新的tail文件,写入
/bin/bash
,给执行权限 -
将文件路径写入原有的tail命令的环境变量前,如此一来,在调用tail命令时会优先匹配该目录下的tail文件执行
-
保留当前环境变量PATH,使用sudo运行
check_syslog.sh
,触发root用户调用tail,实现提权
获取root用户的flag,拿下这台靶机
总结
- 主机发现:
nmap -sn
- Django的debug模式获取报错信息
- 常规sql注入获取用户名密码,ssh连接
- 环境变量替换提权:
- 保留当前环境变量运行
sudo --preserve-env
- 保留当前环境变量运行