渗透测试学习—HTB靶机之Included
这是HTB的Starting Point实验室中第六台靶机,主要根据官方提供的writeup来练习,中间穿插一些自己的理解和工具使用扩展。
一、环境配置
-
工具准备
kali linux 2020.1 vmware虚拟机,配置为hostonly模式,共享宿主机网卡上网;
firefox浏览器(kali linux自带);
Included 靶机IP地址:10.10.10.55;(VIP可用) -
网络连接,按照说明连接到Starting Point实验室。
二、开始渗透
1. 信息收集
使用nmap进行tcp扫描,发现靶机仅开启了80端口(http)。
使用nmap进行udp扫描发现靶机开启了69端口(tftp)。
TFTP(专用文件传输协议)与FTP相似,但简单得多。 它仅提供用于从服务器上载或下载文件的功能。
可以尝试看是否可以连接到靶机的tftp并上传文件。
能够连接成功,并且可以上传文件。现在有了向靶机上传文件的能力。
接下来,使用浏览器访问靶机的80端口,出现如下页面。页面上查看一番没有有用信息,都是假页面。
注意到网站的url有些不寻常。它以ip地址后的file参数指定要调用的文件并显示。这很有可能存在本地文件包含漏洞。
可以通过不断改变上面URL中的file参数值来枚举靶机中的文件,比如passwd文件,此文件一般位于/etc/passwd,通过使用相对路径切换到根目录进而尝试访问到该文件。假如当前网站根目录位于apache默认网站文件夹/var/www/html中,那么相对于网站根目录passwd文件的路径为…/…/…/etc/passwd,若不是则继续切换目录。
最终,当url为http://10.10.10.55/?file=…/…/…/…/etc/passwd时页面中出现了
passwd文件的内容。
-
获取webshell
思路:使用tftp上传一个php反向连接文件,利用本地文件包含漏洞在浏览器中访问该文件,获得反向连接。
使用kali linux中预置的php反向连接脚本php-reverse-shell.php,重命名文件名(防止被杀),修改脚本中的IP为kali linux的IP。
成功上传脚本文件。
kali linux中启动netcat监听在1234端口(如果脚本中改动了对应修改监听端口)。
在浏览器中访问上传的脚本。linux中tftp的默认根目录是/var/lib/tftpboot,上传的文件就位于该目录。
kali linux中得到了反向连接。 -
权限提升
现在得到的shell是www-data用户身份的,该用户是apache程序用户不是操作系统可登录用户。
可以看到用户权限不足查看user.txt文件,需要获得mike用户权限才可以获得user.txt中的flag。在上一台靶机中发现的密码Sheffield19可以用来登录mike用户。
尝试su到mike用户,提示需要在终端中执行。需要设置tty以保证能够在netcat提供的shell上与终端能够完全交互,以便能够使用所有命令。
su到mike后获取到了user用户的flag。
要获得root用户的flag需要继续进行权限提升。
通过id命令发现,mike用户具有一个特殊的用户组lxd,lxd用户组通常具有高权限,并可以提权到root。
LXD是一种基于LXC(Linux container)的虚拟技术,而LXC 也是Docker的基础,但不同于Docker的是,Docker是对应用的虚拟化,而LXD则是在操作系统层面虚拟化靠齐。
下载并编译漏洞利用程序。
编译完成后会生成.tar.gz后缀的文件,利用python搭建简易http服务器,以使靶机能够下载该文件。
切换到/tmp目录下载该文件。
将构建的tar名称替换为靶机中使用的名称。 接着,初始化并导入新的image。
挂载靶机的文件系统到/mnt/root目录的容器中,这时就可以通过容易访问整个文件系统。
启动容器并执行提权命令,获得root用户的shell,得到root.txt中的flag。
在login.sql中有一组身份认证信息,可用于下一个靶机的渗透测试过程。
关于利用LXD实现权限提升,可以参考这篇文章