危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2306 浏览20582294

PHP后门讲解大杂烩

前几日无事就在GOOGLE上搜索了一下“inurl:.php”和“inurl:.asp”,搜索的结果很出人意料,曾经的ASP早已经风光不再,而依托于Linux自由、免费、共享的开发平台,再加上LAMP的黄金组合,因此php的风靡也就不难想像了。正因为如此,大家们对于php的学习就更加刻不容缓了,本文我就带领大家来学习一下php的各类后门以及常见的后门加解密方法,很多朋友对于asp的后门非常熟悉,比如一句话木马、diy小马及大马等,这些在php的后门中,也是同样存在的。

一、Webshell大马

在众多的webshell中,angel开发的phpspy堪称经典,不管是页面的外观还是功能和稳定性上都非常的强大,比如文件的上传、下载、打包,数据库的管理,数据的下载等,都极大的方便了广大小黑。在这里我主要介绍一下webshell中的命令执行,这对于获取服务器信息、提升权限尤其重要。首先给大家介绍一下在php中执行命令的三个函数,以下是我从网上找到的资料。

在php中,用来执行命令的三个函数分别是system()、exec()和passthru()。system()函数的原型是string system (string command[,int return_var]),system()函数和其它语言中的差不多,用来执行指定的命令,输出和返回结果,它的第二个参数是可选的,作用是得到命令执行后的状态码。给出一个使用实例:

Exec()函数的原型是string exec (string command[,string array[,int return_var]),exec()函数与system()类似,也是执行指定的命令,但却不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但使用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处,所以如果array不是空的,在调用之前最好使用unset()把它清掉。只有指定了第二个参数时,才可以使用第三个参数,用来取得命令执行的状态码。给出一个例子:

passthru()函数的原型是void passthru (string command [,int return_var]),passthruo函数只调用命令,不返回任何结果,但会把命令的运行结果原样的输出到标准输出设备上,所以passthru()函数经常用来调用类似pbmplus (UNIX下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序,同样它也可以得到命令执行的状态码。也给出—个例子:

在Windows环境下运行phpspy,用来执行命令的页面分别有Phpfunc、wscript、proc_open三种选择,但在Linux环境下却没有任何选项,这又是为什么呢?原来在Windows环境中,PHP还可以使用COM函数来创建系统组件用于实现某些功能,比如执行任意命令、创建文件对象模型等,所以其执行命令的方式更具灵活与多样性。

下面我们就来看看具体实现的机理,执行命令的相关代码如下:

以下是定义的execute函数,这个函数就是通过调用上文所介绍的PHP中的命令函数来执行命令的。

从以上的代码中我们可以看出,对于不同的系统环境,phpspy执行命令的方式会有些差异,但无论是通过什么方式执行命令,其权限都是继承IIS或Apache的运行用户权限的。

二、DIY小马

严格说来,它并不能称之为木马,只是能上传任意类型的文件而已,当我们的webshell大马被服务器管理员或杀毒软件查杀后,通过它我们就可以快速的上传webshell,它的代码短小精悍,如下所示:

三、一句话木马

由于它的代码只有一句,因此才被称为了一句话木马,代码一般为“<?php eva]($ POST[cmd]);?>”,连接的密码为cmd。它与diy小马有些区别,diy小马用来实现中转,上传任意文件,而一句话木马则可以执行由客户端提交的命令。一句话木马的客户端有很多种,常用的是asp+php两用webshell管理器。一般的,一句话木马也是作为后门隐藏,在需要对目标服务器进行信息收集,数据下载或权限提升时,通过它来提交大马。

为了方便大家的使用,我修改了一句话木马的提交端,将一句话木马的地址与连接密码填写好后,点击提交,就会上传phpspy了,上传成功后页面就会自动跳转到phpspy的url上。其原理就是将大马代码与执行写文件命令的语句发送出去,一句话木马接收后,执行写文件的命令,将大马写入文件中,再通过跳转到大马的url上。

四、后门的加解密

PHP拥有强大的函数支持,所以其加解密可以通过函数来轻松实现,稍微处理后就能逃过杀毒软件的查杀了,以下就是经常用来加密的几个函数:

文章最后,我再来介绍一下对webshell的加密。

1、将webshell保存为webshell.txt。

2、在同级目录下将下面的代码保存为encode.php。

3、运行encode.php,将会生成fjhhshell.php,这就是加密过的大马。至于其解密过程恰好相反,在此就不再赘述了。

和其它语言比较起来,PHP脚本语言灵活又多样,其功能也非常强大,因此大家们还是赶紧来学习一下吧!