目录
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.202.134)
靶 机:linux4.19.0-17-amd64 #1 SMP Debian 4.19.194-3(2021-07-18) x86_64(192.168.202.140)
2、使用工具/软件
Kali:nmap(信息搜集)、gobuster(扫描目录)、ffuf(爆破参数)、john(爆破ssh私钥的key)、ssh(连接靶机)
测试网址:http://192.168.202.140
靶机下载地址:https://www.vulnhub.com/entry/evilbox-one,736/
二、测试目的
靶机属于基础型的,用于培养渗透思路,拓展思路。
通过vulnhub-EvilBox---One的web站点的文件包含漏洞和系统存在的/etc/passwd文件可写入的系统漏洞,先后拿到两个flag和一个普通用户权限并提权root用户。
三、操作过程
1、信息搜集
①主机探测
探测主机,IP为:192.168.202.140
arp-scan -l
arp-scan 是一个网络工具,用于在局域网中发现主机。
-l 选项通常用于扫描本地网络。
②端口和服务探测
扫描主机端口和服务,发现开启了22端口和80端口,分别是ssh登录端口和web端口,下一步就渗透web网页
nmap -A -sT -p- 192.168.202.140
Nmap是常用的强大网络扫描工具,进行端口扫描、操作系统检测、服务版本信息
-A 启用高级扫描,包括操作系统检测、版本检测、脚本扫描和 traceroute。
-sT TCP全连接扫描
-p- 扫描所有端口
工具页面解析:
开放端口:
22/tcp:SSH 服务开放,运行 OpenSSH 7.9p1,允许使用 SSH 进行远程登录。
80/tcp:HTTP 服务开放,运行 Apache 2.4.38,显示 Debian 默认的网页。
主机信息:
MAC 地址:表明主机可能是虚拟机(VMware)。
设备类型:一般用途的设备。
操作系统:Linux 内核版本 4.15 - 5.8。
网络:
网络距离:主机距离扫描机器只有 1 跳,说明在同一网络或非常接近。
TRACEROUTE:
RTT:响应时间 0.31 毫秒,表示网络延迟很低。
③扫描目录
扫到目录后一定将子目录也扫一遍,防止漏信息
针对web资源进行寻找,扫到: robots.txt 目录:secret
gobuster dir -u http://192.168.202.140/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
Gobuster进行目录和文件爆破是一种高效和可靠的选择。有以下几个优势:go语言编写的,性能很高;支持自定义字典和文件拓展名;命令行选项设计简洁;通过 DNS 爆破进行子域名爆破,发现子域名;占用系统资源少;可拓展性
-u 指定爆破的url
-w 指定爆破字典
-x 指定爆破的文件后缀名
工具界面解析:
URL: 目标网站的地址。
method: HTTP 请求方法,此处为 GET。
threads: 线程数,并发请求的数量,为 10。
wordlist: 字典文件,包含待测试的目录和文件名的列表。
Negative status codes: 负面状态码,表示忽略返回 404 状态码的响应。
User agent: 用户代理,HTTP 请求的用户代理字符串。
extensions: 拓展名,测试的文件扩展名。
timeout: 超时,每个请求的超时时间。
对secret/目录继续扫,evil.php的size为0是空白页,没有目录了,那就爆破参数试试
gobuster dir -u http://192.168.202.140/secret/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
2、进行渗透
①渗透网页
主页是个apache的默认网页
那就找找刚刚爆破的目录和文件试试
robots.txt文件 H4x0r可能是个用户名,暂时不知道如何利用
②渗透空白页
针对空白页通常是进行参数爆破,找寻有无测试人员遗留下的可利用参数
使用工具ffuf
Fuzz一个可接收的参数
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.202.140/secret/evil.php?FUZZ=../index.html -fs 0
Ffuf是一个高效的目录和文件爆破工具,广泛用于Web应用程序安全测试。它支持通过各种方式进行模糊测试和发现隐藏路径。
-w 指定字典
-u 指定url,支持包括FUZZ 占位符在内的url,用于进行模糊测试
-fs 排除所有响应大小为 0 字节的结果
尝试命令执行,命令执行不成功
工具界面解析:
Method : 请求方法,这里是get
url : 是测试的url,这个和参数中的 -u 指定的url相同
wordlist : 字典文件,是指字典,字典将在FUZZ位置处爆破
follow redirects : 跟随重定向,这里是false,服务器响应重定向(如 301 或 302 状态码),ffuf 将不会自动请求重定向目标。
calibration : 校准,这里不进行校准
timeout :超时,每个请求的超时时间为 10 秒。
Threads : 线程数,使用 40 个并发线程来加快测试速度。
matcher:response status : 指匹配的响应状态码
filter : 指过滤掉特定大小的响应包,这里是0就是空页面
文件包含成功,发现一个参数command
③测试evil.php的文件包含
尝试包含/etc/passwd成功,发现一个用户mowree,这样就可以尝试ssh登录了
?command=../../../../../../etc/passwd
3、Getshell
①查看ssh是否支持私钥登录
思路是可以包含文件的话,包含私钥也许可行,不行的话就只有爆破了。
尝试ssh登录,-v查看一下登录的方式有没有私钥登录
ssh [email protected] -v
-v参数显示详细信息
发现支持私钥和密码两种登录方式
②获取私钥进行登录
如果目标主机在本机上生成ssh的公钥和私钥,公钥会存在本机上的,若目标主机没有将私钥进行删除,那么私钥仍在本机。
默认情况下ssh公钥和私钥保存位置(ssh-keygen生成的私钥和公钥):
公钥:~/.ssh/id_rsa.pub
私钥:~/.ssh/id_rsa
结合网页存在的文件包含漏洞,尝试包含ssh的私钥文件进行下载
http://192.168.202.140/secret/evil.php?command=../../../../../../home/mowree/.ssh/id_rsa
成功包含
将私钥文件网页导出,重命名id_rsa并赋权限600(600是ssh私钥的权限设置,不是这个权限私钥文件就无法使用);(复制的私钥使用不了,可以看下面正常的私钥,发现网页显示出来的格式不正确)
vim id_rsa
chmod 600 id_rsa
登录发现私钥登录时候需要key,这样就只能爆破了
③John爆破ssh私钥的key(第一个flag)
John是kali自带的一款强大的密码破解工具
爆破ssh私钥文件之前需要先使用ssh2john.py文件将私钥文件id_rsa转换为john可识别的脚本
/usr/share/john/ssh2john.py /root/id_rsa > /root/hash
John使用字典爆破,key为 unicorn
john /root/hash --wordlist=/usr/share/wordlists/rockyou.txt
成功登录并得到第一个flag:56Rbp0soobpzWSVzKh9YOvzGLgtPZQ
4、提权
①尝试常规方法
提权可以先查看计划任务、sudo配置、系统版本漏洞有没有不合理的设置,有没有可利用的地方,这个靶机没发现。系统漏洞打了一下,也没什么收获
crontab -l
sudo -l
uname -a
②Find命令查找可利用文件
没有的话可以用find命令寻找可利用的文件,如suid文件、Sgid文件、可写入的文件都是可利用的
找suid文件命令
find / -perm -4000 2>/dev/null
找sgid文件命令
find / -perm -2000 2>/dev/null
Find查找有写入权限的文件时,发现/etc/passwd竟然可写入
find / -writable 2>/dev/null
查看一下,果然是真的,那就可以利用了
③修改root密码提权(第二个flag,root权限)
/etc/passwd文件存的是账号信息,密码没有显示,但是在这个文件中可以指定密码。指定新密码后,/etc/shadow中的密码就会失效,这样就成功改密码了。
如上图, x的位置就是密码的占位符,将修改后的密码的密文放在此处并保存,即可完成修改密码
生成密码的密文方法:
使用openssl生成基于 MD5 的密码散列值(即 MD5 哈希值),创建加密的密码散列
openssl passwd -1
将生成的密文密码,放在/etc/passwd中root那行的x位置
成功登录root用户并在root目录下找到第二个flag:36QtXfdJWvdC0VavlPIApUbDlqTsBM
四、结论
渗透web网页时,扫描目录扫到的子目录也要扫一遍,不漏掉子目录的信息。渗透size=0的空白页面时主要是进行参数的爆破,空白页面可能是开发人员遗留的测试页面没有删除。因为空白页面没有什么数据,所以考虑有没有参数可以利用,主要是远程命令执行和文件包含,这里的漏洞点就是文件包含。
Ssh生成的公钥和私钥在本机是有默认目录保存的,这里的漏洞点是启用了私钥登录,但本地的私钥仍然留着,没有删除,恰好有文件包含的漏洞可以包含到这个文件,于是ssh私钥就泄露了。
Getshell后查看文件发现/etc/passwd文件是有可写入权限的,这样是可以利用的,利用这个系统文件可以更改密码,达到提权的目的。
标签:文件,私钥,登录,..,EvilBox,---,vulnhub,爆破,ssh From: https://blog.csdn.net/2301_79698171/article/details/142631558