bash type php,Linux Bash Shell 寻找PHP(网站)挂马,后门
一.php后門木馬常用的函數(shù)大致上可分為四種類型:1. 執(zhí)行系統(tǒng)命令: system, passthru, shell_exec, exec, popen, proc_open
2. 代碼執(zhí)行與加密: 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
二.想找一個(gè) 關(guān)鍵詞是“hellow word” 在哪些文件中有,我們用grep命令grep –color -i -r -n “hellow word” /data/www/
這樣就能搜索出來 文件中包含關(guān)鍵詞的文件–color是關(guān)鍵詞標(biāo)紅
-i是不區(qū)分大小寫
-r是包含子目錄的搜索
-d skip忽略子目錄
可以用以上命令查找網(wǎng)站項(xiàng)目里的帶有掛馬的文件
三.兩個(gè)查后門的實(shí)用linux命令:
找出/data/web/website/目錄下 35分鐘前新建的phpfind /data/web/website/ -iname *.php -mtime -35
找出/data/web/website/ 里面源碼包含eval($_POST[的php文件find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[”
四.例如注入漏洞eval(base64_decode
grep --color -i -r -n "eval" /data/www/ 找出來對(duì)比以前正常的代碼,看是否正常。然后用stat查看這個(gè)木馬文件的修改時(shí)間,最后去尋找WEB日志,找出木馬從哪里進(jìn)來的
五:實(shí)用查找PHP木馬命令:
查找PHP木馬# find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
# grep -r --include=*.php '[^a-z]eval($_POST' . > /tmp/eval.txt
# grep -r --include=*.php 'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
# find ./ -name "*.php" -type f -print0 | xargs -0 egrep "(phpspy|c99sh|milw0rm|eval\(gzuncompress\(base64_decoolcode|eval\(base64_decoolcode|spider_bc|gzinflate)" | awk -F: '{print $1}' | sort | uniq
查找最近一天被修改的PHP文件# find -mtime -1 -type f -name \*.php
修改網(wǎng)站的權(quán)限# find -type f -name \*.php -exec chmod 444 {} \;
# find ./ -type d -exec chmod 555{} \;
假設(shè)最后更新是10天前我們可以查找10天內(nèi)生成的可以php文件:find /var/www/ -name “*.php” -mtime -10
也可以通過關(guān)鍵字的形式查找 常見的木馬常用代碼函數(shù) eval,shell_exec,passthru,popen,system#find /var/www/ -name “*.php” |xargs grep “eval” |more
#find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
#find /var/www/ -name “*.php” |xargs grep “passthru” |more
還有查看access.log 當(dāng)然前提是你網(wǎng)站的所有php文件不是很多的情況下
一句話查找PHP木馬# find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
# grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
# grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
# find ./ -name “*.php” -type f -print0 | xargs -0 egrep “(phpspy|c99sh|milw0rm|eval(gzuncompress(base64_decode|eval(base64_decode|spider_bc|gzinflate)” | awk -F: ‘{print $1}’ | sort | uniq
查找最近一天被修改的PHP文件# find -mtime -1 -type f -name *.php
六.以下其實(shí)是多余的操作了其實(shí),但是還是有值得看的地方
1.檢查代碼。
肯定不是一個(gè)文件一個(gè)文件的檢查,Linxu有強(qiáng)悍的命令
grep ‘eval’ * -R 全盤搜索當(dāng)前目錄所有文件(包含子目錄)中帶有eval的文件,這條可以快速查找到被掛馬的文件。
關(guān)于eval,請(qǐng)自行g(shù)oogle一句話php代碼。
2.查看日志。
不到這個(gè)時(shí)候不知道日志的可貴啊。
還是以grep命令為主。
思路:負(fù)責(zé)的站點(diǎn)是Linux,只開了2個(gè)端口,一個(gè)22和80,外部的執(zhí)行命令是由從80端口進(jìn)來,Selinux報(bào)httpd訪問/boot文件,確認(rèn)被掛馬。而所有的命令執(zhí)行必須POST提交給執(zhí)行的文件。所以,查找日志中所有的POST記錄。
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通過grep -v排除正常post,egrep也支持正則,但是太復(fù)雜了,看懂不知道怎么運(yùn)用。
(這里不建議用cat,用tail可以追加一個(gè)文件來看)
這可以防患于未然,防止不知道哪天又被人黑進(jìn)來了。每天看一眼日志。
3.對(duì)于網(wǎng)頁(yè)目錄,只給apache用戶rx權(quán)限,不要給w權(quán)限,目錄設(shè)置要加上rx,不要給w,個(gè)別文件除外。所以,配合2使用,Linux下可以快速過濾刷選出來不規(guī)則的POST請(qǐng)求。
綜合1,2其實(shí)就可以快速查找被黑的頁(yè)面,被修改的文件替換干凈的代碼。
總結(jié)
以上是生活随笔為你收集整理的bash type php,Linux Bash Shell 寻找PHP(网站)挂马,后门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django 时区
- 下一篇: flume linux环境搭建,linu