找回密码
 入住遨海湾
搜索
网站解决方案专享优惠-3折上云
查看: 1003|回复: 0

查出Linux下网站哪些文件被挂马的办法

[复制链接]
发表于 2019-9-17 08:05:03 | 显示全部楼层 |阅读模式

登录后查才能浏览下载更多咨询,有问题联系QQ:3283999

您需要 登录 才可以下载或查看,没有账号?入住遨海湾

×
php后门木马常用的函数大致上可分为四种类型:
! ~7 G) n6 ]  S' m+ v9 d! D4 y1 F
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
    % s5 d7 O- p" I/ s
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13  q" ^  D  E- n3 w
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    2 k1 V% }9 x# K1 s7 \/ b  Y
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令
% y! z+ y" |; d4 B3 d7 r6 _
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码
0 D) D4 _" H) R- m. v8 ]
这样就能搜索出来 文件中包含关键词的文件5 H* i" ?, T+ b! U
–color是关键词标红
2 W+ }2 n' i) m9 j8 K5 m-i是不区分大小写
% f! X; |/ R4 _) \-r是包含子目录的搜索
9 P& j6 k0 h1 P2 T8 B4 T-d skip忽略子目录
* d/ e, h; O' j) K可以用以上命令查找网站项目里的带有挂马的文件
2 C' f% C# A/ T9 [2 W9 x. l1 B6 O" m' X7 G/ J' J) C* |9 b
三 .两个查后门的实用linux命令:# a" V* Z0 _3 k. H" A
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php4 b( s3 g& K2 R& i
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

6 w* f1 |7 a6 c9 ^9 Z/ m+ v四  例如  注入漏洞eval(base64_decode
) O) t8 ?7 s7 Z
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
; k0 v" _0 G* ]; h: h五:实用查找PHP木马命令:  L. u# C  z" X! k6 s. g
查找PHP木马
7 U, f) j" c7 m+ j* Q6 C
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    - w6 a1 i7 ?7 K+ A- b* L
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt7 p6 I' C$ S: K3 X+ B- t& e
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    # Z. U3 c& J/ l4 J
  4. # 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- E: ]9 ?3 F3 {* K2 ^; v( I& n

  5. 6 M) m" e6 j$ l! {2 s6 E; F
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt- V* v/ j- c! b9 e4 @- w
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt
    2 w" l. j. K% Y+ g1 x+ p& {
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt* R: r( I. `( @( O/ [
  9. # 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文件
" T! g, N6 L0 h) f; o# I! u
  1. #   find -mtime -1 -type f -name \*.php
    - w2 Q( v7 {* z9 ^, Q; T
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限$ M9 t. O8 R8 W7 }
  1. # find -type f -name \*.php -exec chmod 444 {} \;7 `- i( V$ D, H# D
  2. # find ./ -type d -exec chmod 555{} \;* R2 H: p/ O" B
  3. # find -type f -name \*.php -exec chmod 444 {} \;
      L2 |) |+ e: Y/ H# m+ v
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:+ l, H! q* l0 U; y
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system
/ r- w1 V( G9 Y/ N
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more7 S7 M% v3 X) \1 r+ Z
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    ) Z' z) x& o. m, Q( I% T+ {5 ~) [7 h
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    + F! I  u7 O* G" h" n- M% o4 h; E6 {
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    0 L( F1 D8 J! @+ V8 n% c5 {
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    / ^  ]( J9 Y0 ]2 d  U
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下0 q& W2 ^9 I: i+ C
一句话查找PHP木马
, ]8 }. M/ Y" d- S+ Z+ Q
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt) m! |. E$ u& p8 ^& e
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt  l2 s/ d3 O8 p
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt* Q7 y1 a7 ?' C. w& X; E
  4. # 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
    5 `+ O8 z7 g3 }6 t
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    & W; M0 R- l% y
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt. U# M! c' Y7 I5 n! G3 g
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt' @8 o% W1 ]5 e" O; B
  8. # 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
复制代码

: u1 S: E7 e' e+ {* r: Q; q" t1 Z% i查找最近一天被修改的PHP文件
7 s, v4 L% P% Z' ~: U
  1. # find -mtime -1 -type f -name *.php
复制代码
# W3 h, y& \  X2 G2 k. A5 i
六 以下其实是多余的操作了其实,但是还是有值得看的地方( j' k0 |8 e4 j; k3 W* h
3 s. m! p& B" ?9 ]  Q: d
检查代码。
+ n/ |) R3 Q* H  R
2 }) P! H) w. I- S. K# |) N. F, H肯定不是一个文件一个文件的检查,Linxu有强悍的命令
7 z% L) O6 q8 P8 Ogrep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
8 l/ M: c6 O  i关于eval,请自行google一句话php代码。
, Z0 c/ X3 n7 K! t' n" @  q2 ]" G) H3 F7 X% K+ l
2,查看日志。
7 w$ e2 e8 v7 t% e; X8 |不到这个时候不知道日志的可贵啊。
7 ?9 L9 o6 C7 m还是以grep命令为主。
& H* u6 E# @, w/ m/ p( k$ L* J思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。
$ N6 p) K5 v$ {, e- _cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
; ~. B: x& H0 T% g
. \0 ]/ p. u* g( X(这里不建议用cat,用tail可以追加一个文件来看)$ m3 E. j! J; n) n

& o# y4 k4 d# c+ L& M$ d; X" K这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。
6 J8 |0 T8 t: Q7 |; q' Q
+ A# j! J4 p8 j4 \1 B3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。
+ X. H: `& d* F; G综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。: B+ B% X: F* D. n" f/ a1 y

. u* J/ C, S9 H+ e- S( B: W% k- V$ {/ m/ {

5 ^( g) V' D" K1 {4 L2 r( d3 S3 e- N
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云

QQ|手机版|小黑屋|遨海湾超级社区

GMT+8, 2025-1-19 03:19

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表