Vulnhub实战-prime1

前言

VulnHub 是一个面向信息安全爱好者和专业人士的虚拟机(VM)漏洞测试平台。它提供了一系列特制的漏洞测试虚拟机镜像,供用户通过攻击和漏洞利用的练习来提升自己的安全技能。本次,我们本次测试的是prime1。

一、主机发现和端口扫描

  1. 查看Vmware中靶机的MAC地址,方便与之后nmap扫描出来的主机的MAC地址进行对比,选择nmap与靶机MAC地址相符的主机,其IP地址即为靶机的IP地址。

    这里我已知目标使用了NAT模式。

  2. 使用nmap进行网络扫描

    复制代码
    nmap -sP 192.168.1.0/24

    -p(ping)

    -O(operation)

    除了使用Nmap的命令之外,还可以使用命令对目标的IP地址进行扫描。

    arp-scan -l //IP地址和MAC地址的映射

    netdiscover -i eth0 -r 192.168.1.0/24 //扫描这个网段下当前还存在的网络

  3. 使用nmap进行端口扫描

    复制代码
    nmap -p 1-65535 -A 192.168.1.129


    由上图可知,nmap扫描出来22和80两个端口,并且把其他的一些指纹信息例如操作系统类型、Apache版本等都扫描出来了。

  4. 访问目标

二、目录扫描

  1. 进行网页目录扫描

    复制代码
    dirb http://192.168.1.129

    也可以使用参数-X指定扫描的文件

  2. 然后访问一下目标目录下的secret.txt文件,结果如下图

  3. 有提示,看来location.txt是一个特殊文件,但直接访问之后没有什么特殊的,这个文件可能是某个参数的值

三、FUZZ和LFI

  1. 使用wfuzz工具测试一下,找url中可能存在的参数

    复制代码
    wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.129/index.php?FUZZ

    FUZZ模糊测试,功能:

    • 找参数

    • 目录扫描

    • 密码暴力破解

    • 找出被过滤的关键字

    • 压力测试

  2. 大多数都一样,使用hw命令过滤一下不一样的条目

  3. 可以看出这一条和其他的不一样,可以试着加上payload去访问一下,结果如下图所示

    给出了错误提示,但却也告诉了我们一些信息,那就是file是网页中中存在的一个文件参数,接下来我们就可以利用这一点了。

  4. 结合之前我们看到的提示,将location.txt作为file的参数值,然后再访问

  5. 有效果了,让我们试一下secrettier360参数,我试了一下没什么反应,后来我是把index.php改为image.php才有反应,image.php之前有扫描出来,但是没留意,不知道有什么用处,因为它和index.php的界面没什么区别

  6. 因为这是一个Linux操作系统,其中的敏感文件有/etc/passwd,我们可以试着将其作为参数参给secrettier360,结果如下图

    找到要登录Linux的提示了。

在Linux中,/etc/passwd中的密码使用x代替,不显示出来,而在/etc/shadow中则是通过MD5加salt加密,是显示出来的。

  1. 按照提示在url中输入相关参数

  2. 得到一个密码follow_the_ippsec,不知道是不是登录Linux操作系统的密码,我尝试了一下,结果不是,看来还得从其他方面入手,我之前对目标目录进行了扫描,扫到了一个wordpress的目录

四、WordPress漏洞扫描

  1. 目标网站使用wordpress搭建的,这是一个CMS,曾经存在++文件上传漏洞++,我访问了它的wordpress目录,其中有一个用户名和一个登录链接。

  2. 已知一个用户名,尝试使用之前从password.txt中获得的密码follow_the_ippsec尝试一下是否能够进行登录。

  3. 结果成功进入后台界面,如下图所示。

  4. 现在可以尝试上传webshell了,先寻找上传点,我在Appearance的Theme Editor选项里面的secret.php中找到了上传点。

  5. 使用MSF来反弹shell,方便快捷,在MSF生成一个shell.php,建立监听。

  6. 将最前面的注释去掉,复制到secret.php中,然后上传。

  7. 使用MSF建立监听,然后访问secret.php。

在wordpress中,secret.php其实是位于wordpress/wp-content/themes/twentynineteen目录下的,因此我们通过访问该目录下的secret.php即可反弹shell,即访问http://192.168.1.129/wordpress/wp-content/themes/twentynineteen/secret.php

  1. 成功拿到shell,此时我们可以尝试一些命令获取目标更多的信息。

五、Linux内核漏洞提权

  1. 我们已经拿到目标的shell了,但我们还没达到root权限,要拿到root权限就得在目标的操作系统上提权。我在meterpreter中使用了sysinfo命令查看了目标的相关信息。

  2. 接下来搜索该Linux系统或系统内核是否存在过漏洞。

    看来存在,Linux内核在4.13.9之前的版本存在漏洞,我们找到45010.c的路径并将其编译为可执行程序。

如果在目标系统中编译的话可能出问题,因为目标操作系统可能没有gcc编译器,不具备C语言程序的编译环境。

  1. 将编译好的45010.exe上传至目标的/tmp/目录下。

上传到其他文件中可能没有权限,可以上传到目标的/tmp目录。

  1. 上传成功之后,我查看了一下,/tmp/目录下存在45010的程序,但是没有可执行权限。

  2. 执行一个shell脚本使其获得可执行权限。

    复制代码
    shell
    cd /tmp
    ls
    chmod +x 45010
    ./45010
    whoami

    在shell中执行./45010时出现了一个错误:

    ./45010: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./45010)

    换一个旧版本的Kali,例如Kali2021.4也行,安装好之后在重复上述一些列不走之后再执行whoami命令,结果显示root,说明提权成功。

相关推荐
Narutolxy8 分钟前
Ubuntu 下 Docker 企业级运维指南:核心命令与最佳实践深度解析20250309
运维·ubuntu·docker
明明跟你说过30 分钟前
在【k8s】中部署Jenkins的实践指南
运维·ci/cd·云原生·容器·kubernetes·jenkins
酥暮沐33 分钟前
K8S 集群搭建——cri-dockerd版
linux·容器·kubernetes
a_j5836 分钟前
k8s面试题总结(十)
云原生·容器·kubernetes
美好的事情总会发生1 小时前
SDIO(Secure Digital Input Output)详解
linux·嵌入式硬件·硬件工程
liuyunluoxiao2 小时前
进程(上)【Linux操作系统】
linux
w23617346012 小时前
每周一个网络安全相关工具——MetaSpLoit
安全·web安全·metasploit·msf6
琪琪花2 小时前
sshfs 将远程服务器上的文件系统挂载到本地目录
linux·运维·服务器
元气满满的热码式2 小时前
网络安全之端口扫描(一)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
Yuanymoon2 小时前
【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】
java·docker·jenkins·harbor·devops