0x01 靶机介绍 & 环境配置
0x01-1 靶机基本信息
靶机链接:https://www.vulnhub.com/entry/w1r3s-101,220/ 靶机介绍:您被雇用在 W1R3S.inc (Leetspeak)个人服务器上进行渗透测试并报告所有结果。他们要求您获得 root 访问权限并找到标志(位于/root目录中),这是一个易受攻击的 Ubuntu 环境,给你一些真实的世界的场景,让我想起了 OSCP 实验室
0x01-2 环境配置
-
下载靶场环境,导入虚拟机(VMware)
-
将 Kali Linux 与 w1r3s 靶机都开启 NAT 模式
-
在 Kali Linux 中测试是否与靶机通信正常,先使用
ip a
探测 Kali Linux 所在网段,与本机 IP192.168.44.129
-
使用
nmap
扫描网段下所有存活主机
sudo nmap -sn 192.168.44.0/24
#sudo 命令:暂时使用 root 权限执行命令
#-sn :no port scan/发现主机后不进行端口扫描,用于主机探测
这里只针对靶机 IP 做针对性端口探测的原因是为了引起更小的注意,对所有网段 IP 进行端口探测的扫描强度远大于对某个 IP 进行端口探测
对比靶机网卡 MAC 地址,确定靶机 IP192.168.44.131
0x02 信息搜集
在执行所有信息搜集时,建议使用-oA
命令,以全格式输出到文件夹中,方便随时取用
0x02-1 TCP 扫描
使用nmap
对靶机进行详细扫描
sudo nmap --min-rate 10000 -p- 192.168.44.131
# --min-rate:nmap将尝试将发送速率保持在每秒10000个数据包或以上
# -p-:port,指定端口范围为1到65535(默认为常用1000端口)
-sS 和 -sT 的区别?-sS 是默认值,利用 TCP 的 SYN 标志位(只建立 TCP 连接的第一步)来探测目标主机上的开放端口,收到目标主机的 SYN 包和 ACK 回复则表明端口打开,-sT 是用三次握手过程判断开放端口,对于使用 SYN 过滤机制的防火墙有绕过的作用
当遇到看不懂的 shell 命令可以使用https://explainshell.com/
进行快速查询
可以看到靶机开放了21、22、80、3306,这里随即就遇到了一个优先级的问题,可以再做一个详细的扫描再下定论,使用nmap
对已知端口做一个详细扫描
sudo nmap -sT -sV -sC -O -p21,22,80,3306 192.168.44.131
# -sT:TCP扫描
# -sV:版本检测
# -sC:使用默认脚本集执行脚本扫描(--script=default)
# -O:启用操作系统检测
结果如下:
0x02-2 UDP 扫描
nmap 有多个协议一起扫描的语句写法,但因为表现的攻击面是不同的,所以建议分开扫描,也是为了方便查看
sudo nmap -sU --top-ports 20
#-sU:指定以UDP协议进行扫描
#--top-ports 20:常用的20个端口
结果如下,因为 UDP 协议的特性,扫描过程会非常的快,这里扫描出来的结果都是疑问状态,没有明确开放的
0x02-3 漏洞脚本扫描
vlun 的全称是 vulnerabilities,译为漏洞
sudo nmap --script=vuln -p21,22,80,3306 192.168.44.132
扫描结果如下,比较有价值的是可以确定 80 端口使用了 Wordpress,DOS 漏洞没有太高的利用价值
0x03 渗透测试
0x03-1 FTP 服务(21)
这里看到 FTP code 为 230(用户已登录,继续进行),同时nmap
回显出现文件,猜测可能存在 FTP 未授权访问漏洞,也称匿名登录漏洞
根据详细扫描提示Anonymous FTP login allowed
,故尝试 anonymous(FTP 的匿名登录都是 anonymous),发现用户名正确,密码直接尝试空值(直接按回车),故登录 FTP 服务成功
成功登录 FTP 服务后,首先输入binary
切换到二进制模式,这样可以有效避免下载下来的可执行文件是损坏的
之后使用ls
命令,列出 FTP 服务中的文件夹,发现有 content、docs、new-emloyees 三个文件夹,先cd
到 content 目录下,看到有三个 txt 文件
在下载文件时,先使用prompt
命令关闭交互式 Shell,再使用mget *.txt
下载所有 txt 文件,后面就是把文件夹中的所有内容按照这种方式下载,这里就不再赘述
之后我们使用cat *.txt
命令读取我们刚才下载的所有文件
我们可以看到文档中有一段 MD5 01ec2d8fc11c493b25029fb1f47f39ce
,如果不确定加密类型,可以使用 Kali 自带的 hash-identifier 进行识别
对 MD5 进行解密后显示 This is not a password,说明这里没有可以进一步的线索了
文档中还有一段 Base64 SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==
,这里只能靠经验和特征来进行判断,没有太好的工具,解码后显示 It is easy, but not that easy..,也不是有用的信息
识别 Base64 的方法?
看特殊字符,只能出现 + / = 0-9 a-z A-Z = 只在文末出现,最多两个
再往下看有一个员工列表(employee list)暂时不知道有什么用,先做保存
最后一项是一个倒置的信息,我们可以用截图后调整图片得到信息,第一句直接平面翻转即可
第二句是一个倒置的倒序,使用https://www.upsidedowntext.com/
进行处理,这里的信息依然意义不大
至此,FTP 中的信息基本已经物尽其用,没有发现太有价值的信息,故尝试其他攻击向量
0x03-2 Mysql 服务(3306)
对于 Mysql 来说,我们基本没有相关的信息,所以只能尝试用户名为 root 密码为空,尝试不成功
0x03-3 Web 服务(80)
打开后发现是 Ubuntu 的默认页面,没有太有价值的信息,之前在信息搜集环境发现的 Wordpress 路径也无效(跳转到https://localhost/wordpress/
,修改 host 文件后依然无法访问)
使用 gobuster 进行目录扫描
sudo gobuster dir -u http://192.168.44.132 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
这里扫描出唯一有价值的信息就是/administrator
目录,打开后是 Cuppa CMS 的 Installation 页面,这里没有其他方法,只能执行 Next
此时我们目的是想要一个可以进行登录的页面,故尝试对系统进行安装,发现缺少管理员权限,无法进行安装
下面我们用 SearchSploit 对 Cuppa CMS 的漏洞进行搜索,SearchSploit 是Exploit-db的离线版,在 Kali 中已预安装,先使用searchsploit cuppa/cuppa cms
进行漏洞检索,发现存在25971.txt
,使用-m
参数镜像到本地
根据漏洞详情可以看出,这是一个文件包含漏洞,给出了配合文件上传和本地读取两种 Payload 构造方式,目前没有发现上传点,故我们选择本地读取,详情中给出的路径如下
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd
但访问这个路径时发现无效,/alerts
目录一定存在(Github 源码),故猜测安装目录名称不为 cuppa,猜测为 administrator,成功得到回显,但是没有有效信息
这里我们需要回头对漏洞点进行进一步的查验,在漏洞详情中找到的漏洞点如下,漏洞路径为alerts/alertConfigField.php
<?php include($_REQUEST["urlConfig"]); ?>
我们可以使用关键词在 Github 中匹配这段代码,在 77 行找到类似的代码,发现我们需要构造 POST 请求来对漏洞进行利用
使用 Curl 进行漏洞利用
使用--data-urlencode
参数可以以 POST 方式以 URL 编码发送数据,命令如下
curl --data-urlencode urlConfig=../../../../../../../../../etc/shadow http://192.168.44.132/administrator/alerts/alertConfigField.php
最终成功获取到 passwd 的内容,每个用户数据的第二段都是 x,代表密码是以哈希的方式存在了 shadow 文件中的
所以我们再次尝试获取 shadow 文件
/etc/shadow,是 Linux 系统中的重要系统文件,用于存储加密的用户密码,并且只有系统管理员 root 用户可以访问,防止未经授权的用户查看或者修改该文件,格式如下
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
使用 BurpSuite 进行漏洞利用
使用 BurpSuite 对利用点进行抓包,因为请求方式默认是 Get,需要右键后点击 Change request method 改为 POST 请求
最终只保留三条存在 Hash 的账密(Vim i 开启编辑模式,Esc 退出编辑模式,进入 Shell 模式,:wq
保存退出)
之后交给 john 工具进行破解,成功破解两个密码,分别是 www-data 和 w1r3s,root 账户的密码没有被破解出来(有些 WP 说不能把 root 放入 john,会导致破解卡住,我觉得这个说法是错误的,只需加上-show
参数显示出成功的破解即可)
0x03-4 SSH 登录 & 提权(22)
之后使用 w1r3s 用户登录 SSH,这里首先选择 w1r3s 是因为 www-data 是 Debian/Ubuntu 上运行默认服务的用户,发现可以成功登录
sudo ssh [email protected]
先使用uname -a
查看内核版本,这里也可以确定靶机是 Ubuntu 的
之后通过id
命令查看此用户的权限,发现此用户有sudo
命令的权限,故我们尝试提权
使用sudo -l
查看当前用户有哪些系统级权限,这里看到有全部权限
之后的提权手法有很多,简单总结如下
# 以root权限启动一个新的bash shell
sudo /bin/bash
# Ubuntu默认的root密码是随机的(每次开机都是一个新的root密码),以root权限修改默认密码
sudo passwd
sudo passwd root
# 无密码进入root(先使用sudo提升权限,再使用su切换到root)
sudo su
提权后在根目录下找到 Flag,整个靶机到这里就结束了
原文始发于微信公众号(靶场手记):【Vulnhub】w1r3s 靶机复盘
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论