查看原文
其他

九维团队-红队(突破)| HackThebox-Timing靶场渗透记录

sherl.liao 安恒信息安全服务 2022-09-07


靶机介绍



Timing为HackTheBox靶场的中等靶机,由图可知目标ip为10.10.11.135。


01

信息收集


1.nmap端口扫描

sudo nmap -F 10.10.11.135



只有简单的两个端口,说明还是需要从web页面突破


2.80端口

直接访问url:http://10.10.11.135/login.php,返回一个登录框。


3.目录扫描

得知站点是php解析的,目录扫描专门扫一下php后缀的文件。


从上到下依次访问:

css:


然后是/index.php/autologin.php。


检查后发现这个页面暂时没有有用的信息。

/image.php


/images/


/js


其余访问后都是跳转到登录页面。


4.image.php

注意到image.php访问后没有返回值,猜测是不是传入的参数没有对上。于是就开始跑参数,这就发现的了这个url。说明这里可能存在文件包含的漏洞。


02

漏洞利用


1.收集思路

针对上面出现的LFI漏洞需要绕过限制。在文件包含中能绕过使用的就是php伪协议。


但是user的flag没有读出来,怀疑是权限不够。


又尝试一圈各种伪协议绕过就是读不到flag。所以读源码出来分析一下。目前有login.php和upload.php。


在login.php的源码中包含了db_conn.php数据库连接文件。


读一下db_conn.php,之前nmap扫描过了3306不对外开放,估计留到后面有用。


同理upload.php中发现

admin_auth_check.php。


可以猜测,这个站点需要先拿到web管理员权限,然后上传文件,通过上传的文件getshell。


查看admin_auth_check.php文件,发现其中又包含了auth_check.php文件。


2.弱口令

使用弱口令aaron/aaron即可登录进去(弱口令是从/etc/passwd里来的)。

访问Editeprofile,页面,点击Update并使用burp抓包。

由于在admin_auth_check.php源码中有判断role是否等于1,所以尝试在数据包中添加一个role=1。


Forward发送数据包后可以发现配置文件已经被更新。

刷新后多了一个AdminPanel,说明越权成功。

访问后多了一个文件上传的页面。


3.文件上传

先读读avatar_uploader.php的源码,发现没有什么限制。

因为有了之前的文件包含漏洞我们只需要上传一个图片马,然后包含一下就可以使用。我们不知道的东西可能就是文件上传的名称。


从代码中可以知道,文件上传的路径已经有了。然后需要文件名是个分句uniqid()和time()值拼接后取md5值加上“_文件名.jpg”,这个可以用代码实现。


先运行php脚本:

while (true){echo date("D M j G:i:s T Y"); echo " = " ; echo md5('$file_hash' . time());echo "\n";sleep(1);}



 脚本不要停,然后再上传文件,这里就很符合题目的意思(Timing)。


在php脚本中找到对应的时间输出的值就是文件名。


4.文件包含

直接文件包含漏洞来包含上传的图片马。

http://10.10.11.135/image.php?img=images/uploads/251dfe5087c642010121c2f3eba8c0c4_sherl.jpg&a=phpinfo();



5.提权(aaron)

查看权限后发现为服务器权限,怪不得之前读不到aaron用户的flag。


先getshell。通过蚁剑发现有网站备份文件。


打开后发现.git文件夹。需要用工具分析其中版本更替的内容。


使用工具后查看到修改前的密码。


尝试用于ssh连接。


连接成功,读取flag。


提交。


03

提权


使用sudo -l,来查看哪个文件使用sudo运行而不需要密码。


文件的内容是执行一个jar包。


既然可以用sudo执行那就执行一下。


发现有FTP和HTTP两种请求方式。所以需要搞清楚,这两种方式使用的工具是啥。

开启一个nc监听可以看到HTTP是使用Axel工具来下载文件的。


介绍:Axel是一个轻量级下载程序,它和其他加速器一样,对同一个文件建立多个连接,每个连接下载单独的文件片段以更快地完成下载,并且下载下来的文件所属于root用户。


所以是不是可以把ssh的公钥写入到服务器中后用密钥来连接。那么也是需要.axelrc配置文件来决定写入的文件文件与命名。


同理研究FTP。由于FTP本身是无法下载文件的,需要借助wget来使用FTP协议下载文件。而同理wget可以由用户家目录的.wgetrc配置文件决定。那么就会有两个解法。


解法一(http)

生成ssh密钥对。


下载器会识别文件名为index.html的内容,所以修改公钥的文件名为index.html。


由于本靶机上没有.axelrc配置文件所以需要上传一个上去。


查看一下,使用试需要把#号去掉,并且前面不能有空格。


开启http服务。


使用工具下载ssh公钥。


使用ssh密钥连接服务器,成功。


解法二(FTP)

修改wget的配置文件。


使用FTP文件下载ssh公钥。


指定密钥连接root用的ssh。


提交flag。


04

加固建议


php文件包含漏洞

过滤目录穿越的字符如:../ ./

闭allow_url_fopen 和 allow_url_include两个php配置项


git信息泄漏

删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。


linux越权

做好linux服务器的安全基线检查需要检查是否存在除root之外UID为0的用户。

排查是否有低权限用户能免密执行sudo的文件而引发的越权问题。


—  往期回顾  —




关于安恒信息安全服务团队安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存