触发
phar无unserialize()反序列化
利用条件:
- 一个上传点
- 一个可控的文件操作函数:
1
fileatime、filectime、file_exists、file_get_contents、file_put_contents、file、filegroup、fopen、fileinode、filemtime、fileowner、fileperms、is_dir、is_executable、is_file、is_link、is_readable、is_writable、is_writeable、parse_ini_file、copy、unlink、stat、readfile、md5_file、filesize
Hpdoger师傅的四个实例递进php反序列化漏洞理解
Blackhat议题解读 | phar反序列化
session反序列化
利用条件:
- session解析引擎可控(在同一网站能同时出现两种不同的session配置方式)
$_SESSION
值可控
修改session存储方式可以通过session_start()
函数,给其传入serialize_handler=php_serialize
参数即可。
具体见:
LCTF 2018 Babyphp’s revenge
php原生类利用
Soapclient
利用条件:
- 需要有soap扩展
- 需要有一个能实例化对象的点
- 需要调用一个不存在的方法触发其
__call()
函数
参考:LCTF 2018 Babyphp’s revenge
危害:盲打SSRF:可以结合Soapclient自身的CRLF漏洞,带上各种heade头参数。
参考: 反序列化之PHP原生类的利用