本帖最后由 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的文件而引发的越权问题。
|