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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:
& t+ F* W  K4 H4 x5 I$ [
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open7 n0 }) p1 a1 ~/ i* _% r+ M
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot137 A1 d* x9 u; G# c7 n' i5 q
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite6 a3 z, _/ }# P" b
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令! |+ V) s& F0 e  }& s
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

% O% ?  }, c2 g' ~# U) P这样就能搜索出来 文件中包含关键词的文件
3 P* h. e5 N* E# q1 S/ S–color是关键词标红
' N$ ]* a! X& ^-i是不区分大小写
: ^# t3 K& h: P( W  M; g* ^+ q-r是包含子目录的搜索5 _! T3 z+ m$ F
-d skip忽略子目录
9 O3 O9 x, O! j7 J; {可以用以上命令查找网站项目里的带有挂马的文件
! O* O4 t1 L/ s, A7 |4 \5 @3 h
& N8 F9 H8 r* `2 b6 G三 .两个查后门的实用linux命令:
2 f& V6 s9 Y3 T+ x7 A) u2 n, y4 ~
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php( I! o  P' H( J6 P+ W
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码
3 `3 B9 M, h: o0 W/ Z4 F# K
四  例如  注入漏洞eval(base64_decode
- {$ Z0 z. m; g' [1 y8 F
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的1 i. s2 `8 h/ Z1 T4 Z; c
五:实用查找PHP木马命令:
7 d6 T. q5 k# c, {* N+ X/ W! t查找PHP木马
! U& a6 c2 E7 ^% E( r* g
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt0 m/ w' X9 W+ S& F
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt7 O  o* J, i& B' f8 v
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    8 n$ Y! @. g+ V$ r$ ~3 W( o0 ~$ P
  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
    8 m, B$ ^5 P5 `9 M

  5. ) ~/ o. k( ~1 T. A+ k3 D4 m
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
      ]* ]5 b$ u  l& G# @0 v9 F
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt; |% s( ?  a: ?+ V" N5 J# K
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt$ ]/ z  ]2 a, Y
  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文件% J  Z6 M5 _/ P
  1. #   find -mtime -1 -type f -name \*.php3 g, \5 }% j6 o& I
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限
" G+ E$ G8 D5 E; R0 E. v. H+ N
  1. # find -type f -name \*.php -exec chmod 444 {} \;
    3 g+ T# p0 f) `/ M
  2. # find ./ -type d -exec chmod 555{} \;. i# R2 r' _# E6 N" v- T; N6 `
  3. # find -type f -name \*.php -exec chmod 444 {} \;
    ; \" c$ t! A! s: ~) Z! y/ d
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:7 G' U  L" K% S/ ]/ T1 Z2 t
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system
, A6 I! c( A8 G9 A) ?8 T
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more- n' S8 H& m. J
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more1 I5 o; ]1 \  n' A" n4 B3 z
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    $ A) e4 l6 R9 ?! d) e" B: L: x% a, U
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more3 ^+ P- |" n( h1 h
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    ) b% f: z8 S4 U/ D9 `+ S
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
) K' ^1 D3 y3 D" @一句话查找PHP木马9 R% B3 T- j* J: [7 f
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    1 H& p. C0 G( a- _/ v7 y
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    4 q5 a4 _4 ?8 w' g
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt$ V7 x0 V3 \# ~1 h
  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# J. x4 H* |& D& o9 }+ R: {) X) \* ?
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt) \' E5 q$ i3 c
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    # D. h$ E4 X6 o- [' @  V" v
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    ; @* I2 p/ Y+ v
  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
复制代码
+ u2 Y' m0 x* `# o, A1 {) I
查找最近一天被修改的PHP文件# f5 O2 Z# [2 l6 Z1 ]8 k  f
  1. # find -mtime -1 -type f -name *.php
复制代码
, S0 U: \% G4 \2 H% j8 z
六 以下其实是多余的操作了其实,但是还是有值得看的地方, f/ }# V7 ^! ]* O( f' z
* b% S5 `' Z9 Q8 U/ z
检查代码。) |) M2 S) u, y' L) z, Z
, O% R/ n; P9 z$ t
肯定不是一个文件一个文件的检查,Linxu有强悍的命令
/ \, ^/ ~, B, l  ~& S. R7 Q4 K& Zgrep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。1 Y# u% A$ j0 L4 B0 x$ V
关于eval,请自行google一句话php代码。
& H( y. D" E+ d
5 [+ S* z* x. I' E* _2,查看日志。5 k7 R% q5 m5 D1 n: z
不到这个时候不知道日志的可贵啊。; P% Z; V' E0 _& ^
还是以grep命令为主。* {" |, Y! w) x: ~( m1 F
思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。- t1 f* n& D0 V$ f( z
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。  D8 i1 _, ]& T- n" q
$ S' Q" U3 p( K3 \$ Q
(这里不建议用cat,用tail可以追加一个文件来看)
3 E+ x" A6 H- j7 W3 g9 _, p' [. T6 R/ x4 h! ]6 X$ O, @2 M
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。* N. Q" ^3 X1 B; O) t

* i. A0 d+ C. H* B- v- r' t3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。% Q+ A" p6 O- B0 e( o% T" r0 I. ^% r: X
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。
  x& H- `" Y+ \4 i+ k: d$ @9 {
! {% w4 b$ U& O  I; _: {9 N  U( _- ~2 f& m

  q, K( D4 _2 c9 D1 X# m
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2026-7-8 08:42

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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