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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:/ T" ]2 e0 M  v  E  t0 B+ l
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open! u$ g7 A3 R: h. h" i
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13$ N( t& \/ n- n# J
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    - G: L3 @8 T  ]  A
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令6 H: W* w% k! Z7 C. q$ q
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

4 D! x8 t3 _) e, U+ q, Y这样就能搜索出来 文件中包含关键词的文件- c8 ?( G, y! @" [) t
–color是关键词标红
+ S. Y  n4 s% h-i是不区分大小写
3 f+ K/ U  o6 R4 ^. A-r是包含子目录的搜索
6 j4 J3 K  r( T/ [-d skip忽略子目录) W( s2 u( H2 S$ P+ O/ c
可以用以上命令查找网站项目里的带有挂马的文件$ x2 w! j9 n5 S3 d* X# `5 L0 J) c

" ~! q$ i/ C6 N) h4 {7 T0 S三 .两个查后门的实用linux命令:, n# f: w$ b; Z. a
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php
    : V2 U: c) }' F: c* E! J; J/ V
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

4 Q( u: Q! b: A$ d/ H* [四  例如  注入漏洞eval(base64_decode! V! l1 a% g7 ]( W- ~& o& F
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
" F. L7 P2 _' f五:实用查找PHP木马命令:5 ^: [; J1 }7 D4 F$ Y( n) Y
查找PHP木马
! B3 y) u" f. g8 H
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt$ a* j0 {( b! y; Q/ j4 r
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt9 ~" f0 }6 S2 g7 V. R) A
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    6 X* I6 {, A6 C% r
  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$ i0 I+ I8 L& U8 `
  5. % ?3 O  i$ Z! O+ h4 w& R( C) D/ M1 d
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt- p. ^, a4 l( g8 O/ A
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt+ p; f2 s* M  R
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    ; B0 _( q* Y1 b( V: ?
  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文件) h; ?+ @1 l" @' A) Z; U
  1. #   find -mtime -1 -type f -name \*.php
    0 X" ]9 j) T# }* u. l0 s; B
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限6 K( X  K1 a! B$ I8 k
  1. # find -type f -name \*.php -exec chmod 444 {} \;0 t: r3 c: P* j
  2. # find ./ -type d -exec chmod 555{} \;
    2 L  H. v4 J! Y* L% C9 G4 Q1 ?
  3. # find -type f -name \*.php -exec chmod 444 {} \;: ]+ X( Y' P! T( D* A4 x
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
. q2 v9 Y. y5 R" `
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system3 N# D4 x: Z+ T2 P0 r- u- d% |
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more; n) o0 _9 Y8 K+ G) p3 ]7 ^4 H
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more9 s+ ~/ A- n0 i- O' `
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more6 d$ y3 w0 H' x! C
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    * `- m, T/ @& c& \, l- f) [
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    - `; U- h1 u2 K
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下  H2 g3 D- M) Q8 ?& v% t
一句话查找PHP木马+ ?) E) p6 V9 s/ n! R7 n7 C) J
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    3 F: A9 j& B8 }% R$ I3 Y0 n2 B
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    : u0 W6 q) h6 ~8 z% ?+ D
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt. z7 T8 G* N, ^
  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
    ( m+ t4 C1 p: ^% t
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt' D7 }  I# G) P3 z: `
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    $ s# |; O; {7 u" T' q' Z  ]% M
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    % K  X; L1 N  O7 r
  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
复制代码
0 {% s' ^# R) \
查找最近一天被修改的PHP文件7 ^/ q, B' X: u
  1. # find -mtime -1 -type f -name *.php
复制代码

$ m- {# H* |& a0 m0 c3 q六 以下其实是多余的操作了其实,但是还是有值得看的地方
4 H+ q/ A7 [5 P+ ^5 N
+ T, ?& d; }6 e! Q5 s/ y, ?3 \3 \检查代码。
8 j. L! A2 g" {- D+ P" O8 [5 A* s$ O# h& c$ a2 w
肯定不是一个文件一个文件的检查,Linxu有强悍的命令# J+ r& J# }5 `: u- B
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。* T: n  w7 {* Z; P7 B9 C. |5 e
关于eval,请自行google一句话php代码。
8 `, {( D: m* _0 K! A* X, s7 K8 d3 Y0 C) d* l4 _, H0 a
2,查看日志。
  R! w  I( w' F$ a5 a不到这个时候不知道日志的可贵啊。9 P: u6 r6 O3 Q! L; R, [- u
还是以grep命令为主。
2 n" Y; ~$ _0 o  \: O思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。
$ O  @5 H$ q4 J6 \1 p2 _; e5 Rcat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
6 J/ y& z8 a8 b* k; W: n: z
- p# o' F6 J' `. ~2 H7 Z+ x! D$ E(这里不建议用cat,用tail可以追加一个文件来看)8 }3 J1 c6 R( r2 U( F

: U7 A- {; R/ A! d8 L; p# i这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。
  |; `' R$ c& C8 p: v1 p* j# S; G  z# h
4 R4 m# h" C+ S% k* n3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。
/ @3 m% u7 ]) J" @综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。
, W/ X5 l# `; t& i" l6 E# j9 h6 t
% v, }/ q5 \# l- s- q
6 F6 s; B5 [" P1 H4 }& N
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2026-9-25 05:32

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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