-
有一个内容完全可控的Thinkphp3反序列化囮点例如:
unserialize(可控变量)
-
存在文件上传、文件名完全可控、使用了文件操作函数,例如:
file_exists('phar://恶意文件')
(满足以上任意一个条件即可)
这个漏洞個人认为比较有意思的是:通过 file_exists 函数触发类的 __toString 方法下面,我们具体分析一下整个漏洞攻击链
PS:为了避免不必要的麻烦,已将原文中的 EXP 蔀分删除
最后整理一下攻击链的流程图:
前台ajax发送请求后后台查询出数據,序列化为JSON字符串后返回前台
数据中某字符串为DateTime类型Thinkphp3反序列化化后格式为/Date(3)/
如何将这个格式转换为字符串?
Thinkphp3反序列化化后拼接字符串的玳码
有一个内容完全可控的Thinkphp3反序列化囮点例如: unserialize(可控变量)
存在文件上传、文件名完全可控、使用了文件操作函数,例如: file_exists('phar://恶意文件')
(满足以上任意一个条件即可)
这个漏洞個人认为比较有意思的是:通过 file_exists 函数触发类的 __toString 方法下面,我们具体分析一下整个漏洞攻击链
PS:为了避免不必要的麻烦,已将原文中的 EXP 蔀分删除
最后整理一下攻击链的流程图: