欢迎光临散文网 会员登陆 & 注册

网安干货 | PHP反序列化基础利用链

2023-07-07 15:04 作者:蜗牛学苑  | 我要投稿

一、准备漏洞代码

二、 准备POC代码

将上述POC进行简化:

三、执行漏洞利用

四、变量存在访问修饰符的利用

1、为漏洞代码添加修饰符

2、构造存在修饰符的POC

3、事实上的输出

上述输出中包含了多个不可见字符,即%00字符,所以需要使用URL转码使用。

4、进行URL转码后利用

(1)修改uspoc.php中输出反序列化字符串的代码为:

(2)在浏览器中访问usdemo.php并传参为:

http://192.168.112.188/security/unserial/usdemo.php?code=O%3A5%3A%22Woniu%22%3A1%3A%7Bs%3A4%3A%22%00%2A%00a%22%3BO%3A3%3A%22Vul%22%3A1%3A%7Bs%3A9%3A%22%00Vul%00data%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3B%7D%7D

五、反序列化的常用手段

1、反序列化的常见起点:

(1)__wakeup 一定会调用

(2)__destruct 一定会调用

(3)__toString 当一个对象被反序列化后又被当做字符串使用

2、反序列化的常见中间跳板:

(1)__toString 当一个对象被当做字符串使用

(2)__get 读取不可访问或不存在属性时被调用

(3)__set 当给不可访问或不存在属性赋值时被调用

(4)__isset 对不可访问或不存在的属性调用isset()或empty()时被调用,形如$this->$func();

(5)__call 调用不可访问或不存在的方法时被调用

3、反序列化的常见终点:

(1)call_user_func 一般php代码执行都会选择这里

(2)call_user_func_array 一般php代码执行都会选择这里

(3)执行指令、文件操作、执行代码等敏感操作

4、常用的函数调用方式



网安干货 | PHP反序列化基础利用链的评论 (共 条)

分享到微博请遵守国家法律