本帖最后由 Grav1ty 于 2022-5-1 02:38 编辑
九维团队-红队(突破)| HackThebox-Timing靶场渗透记录
Timing为HackTheBox靶场的中等靶机,由图可知目标ip为10.10.11.135。

01 信息收集
1.nmap端口扫描
- sudo nmap -F 10.10.11.135
复制代码

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

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

从上到下依次访问: css:

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

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



其余访问后都是跳转到登录页面。
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的文件而引发的越权问题。
|