PHP后门隐藏与维持技巧

0×00前言

在一个成功的测试后,通常会想让特权保持的更久些。留后门的工作就显得至关重要,通常布设的后门包括但不限于数据库权限,WEB权限,系统用户权限等等。此文则对大众后门隐藏的一些思路做科普。



 

以PHP-WEBBACKDOOR为例,抛砖引玉

一个最常见的一句话后门可能写作这样或这样

当然,这仅是调用的函数不同,关于PHP禁用的函数请在php.ini: disable_functions 中寻找。

但是运维直观寻找我们shell的方式也有很多,如

◆通过文件名/修改时间/大小,文件备份比对发现异常

◆通过WEBSHELL后门扫描脚本发现,如Scanbackdoor.php/Pecker/shelldetect.php以及各种扫描器等等

◆通过Access.log访问日志发现后门所在

◆又或者,我们的测试一句话还要被WAF拦一下,再来个警告日志,等等

针对常见的检测方式,总结以下七常用手法对shell进行隐藏

0×01规避

看看各种扫描后门的代码就知道,留一个众人皆知,人人喊打的关键词在shell中是万万不能的



 

常见的关键词如:

◆系统命令执行: system, passthru, shell_exec, exec, popen, proc_open

◆代码执行:eval, assert,  call_user_func, base64_decode,  gzinflate, gzuncompress, gzdecode, str_rot13

◆文件包含: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

过去有朋友机智的使用$_POST[0]($_POST[1])来执行命令,可惜现在也难逃扫描器法眼,但万象变化,构造方法是无穷的

tudouya 同学在FREEBUF上给出[一种构造技巧](http://www.freebuf.com/articles/web/33824.html)利用

构造生成,当然,嫌太直观可以写作这样

然后再填充些普通代码进行伪装,一个简单的”免杀”shell样本就出现了



 

执行无误,且绕过普通扫描器,也可依赖之写新的临时shell



 

0×02特性

借助语法特性执行命令亦不失为有趣的手法。借用php在处理变量时的语法特性,会分析双引号中的数据是否含有变量(并解析其值)

eg。:

${@eval(phpinfo())}

{}可解析双引号内的变量内容,@保持出错后继续执行

然后就可以大摇大摆的开始构造隐藏后门了,但此处构造欲再借力于函数引起的命令执行,没错,就是preg_replace

这玩法显然已经进了扫描器黑名单,简单修改下

(。+?)<\/title>/ies", 'funfunc("\1")', $_POST["cmd"]); ?>

执行了,没有被发现



 

执行的方式显而易见,正则匹配后的{${phpinfo()}}传入funfunc时引起了代码执行

funfunc("{${phpinfo()}}")

另一种方法



(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部