声明:

本文由博主首发于:阿里先知 https://xianzhi.aliyun.com/forum/read/441.html

如需要转载,请先联系先知技术社区授权;未经授权请勿转载。

先知技术社区投稿邮箱:Aliyun_xianzhi#service.alibaba.com

写在前面:

过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面。

但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会有收获,但是个人水平有限,可能您觉得文章水平过低,或者并无太大营养。但是跳出文章本身,无论何种技术,重在交流,分享与总结。

另外,希望年轻人不要有太多戾气,更多的是需要保持一个谦逊态度对待技术,尤其是这个浮躁的安全界。

以上是我的开场白(没办法,这是我的一贯风格)

写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)过狗,滥用菜刀。

那么下面两篇文章会分别从后门构造篇与数据传输篇来阐述过狗的来龙去脉。

其实狗狗还是很可耐的额。