遨海湾超级社区

 找回密码
 入住遨海湾

QQ登录

只需一步,快速开始

扫描二维码登录本站

搜索
网站解决方案专享优惠-3折上云
查看: 576|回复: 0

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

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

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

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

x
php后门木马常用的函数大致上可分为四种类型:' e0 J* P/ l$ Q! p
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
    ! F3 ~2 A- T( T2 i/ b
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot137 a0 [: T' U5 V/ I  J4 n, r
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    : M. f% d* t6 W+ S/ c$ V  b
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令8 |& [4 \- Q' m7 R; _( [% _! k4 |
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

5 a6 [2 n. |) G8 h" N) O* ~这样就能搜索出来 文件中包含关键词的文件. H; H- c, }$ h1 u8 z! y
–color是关键词标红$ I/ W9 z$ U: D, F. s0 o
-i是不区分大小写& F9 C8 P6 C4 _# h8 Z. p9 @/ T% {
-r是包含子目录的搜索/ b9 [9 v0 y* S2 ?6 Y/ Q& l
-d skip忽略子目录" z- K$ l. M: v
可以用以上命令查找网站项目里的带有挂马的文件- ]: [8 t# `, N  H- R2 \
8 X& |/ O$ `. s. a: q0 D
三 .两个查后门的实用linux命令:
9 q! D! h( Y; [' S0 P0 e% B
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php( K# D( O' y$ K) ]2 T
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

" f, j: y* @1 Q( f. J; A) g四  例如  注入漏洞eval(base64_decode* b5 ^# `  U% q" b+ _4 ^
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的+ R) \5 g  K- A. u8 e3 I! L' H* @+ {
五:实用查找PHP木马命令:
- ^: v( `) I# W# z$ p# D查找PHP木马
1 H, R  ?+ e$ n# z: Q' P
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    4 e. M% M$ M8 r: U2 y4 b
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt" E7 R4 V0 d3 }8 S
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt* q* O2 L8 @" E- d9 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
    $ l1 C$ A. ?/ \$ w$ @, Y

  5. / B0 o. N. R) v, z" D, c
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt- ~. W) h8 S& g  @' k9 k! w" u
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt# C! ~* A1 D4 E8 X, x. p( @8 H
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt: s) z$ s1 h1 R, H1 G' u
  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文件
! c  |, K1 M( S' I
  1. #   find -mtime -1 -type f -name \*.php
    0 j' ^. F8 C! Y# }+ I( v
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限  k, y6 q6 h" r$ n( p6 t2 D% a
  1. # find -type f -name \*.php -exec chmod 444 {} \;
    ! E, _5 D- A6 f
  2. # find ./ -type d -exec chmod 555{} \;& r; W/ r+ r: A/ ^7 F* J0 z- g
  3. # find -type f -name \*.php -exec chmod 444 {} \;
    0 `( L+ s' e# O! \4 {( N% a
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:4 D' v4 f4 z6 S9 J8 R- h
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system
& ~8 O0 r% }6 r! E, D/ K# P5 l
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    5 n# c- }) M2 L* k  `) o
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    , }4 Z( _. k9 w, I; z( S
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    % ^+ l+ }: s1 e2 u$ A
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more& t% z- w# t5 U4 N
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more. G! H4 [6 y# p" M! m; Q' I
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
8 L( j+ R( d3 _  X8 b  s' m: H1 p一句话查找PHP木马
- W  E9 J" j9 K, h4 n
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt# ~4 W* i6 n' W) [% y1 `( z% o4 x( q
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    . i& u7 N1 V/ T' I. n  c6 X
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt. I1 J( ~: w& |) `& l
  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 | uniq8 g4 p" n; m2 R- v
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    + a9 R% Y6 }  w5 b- S( d; V
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt. T; x9 x+ J/ h" E) i3 Q
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    , ]/ Z) E# C% e2 c/ _* G. L
  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
复制代码
8 R1 M- |; \6 L! k. x( q" w
查找最近一天被修改的PHP文件
! j: B) X3 E9 C' E
  1. # find -mtime -1 -type f -name *.php
复制代码

/ G, K7 u% R' ~0 D4 n: [六 以下其实是多余的操作了其实,但是还是有值得看的地方
, e  y- {$ F( q2 y4 k! ~5 o3 D0 `) f7 ]$ [- H+ Y1 [$ @/ C
检查代码。
% c  l9 O! B% O, g% N- u$ y* Q1 B5 P7 a
肯定不是一个文件一个文件的检查,Linxu有强悍的命令
6 W- _9 i6 {; m& _- v1 U$ M' B1 wgrep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。% V$ Y% l# k3 d+ n/ x
关于eval,请自行google一句话php代码。
1 J) v$ a) K1 ~
  P# v' R  \# X/ ~! g2,查看日志。
  Z/ o7 p. k  x& `8 f1 o. R6 M不到这个时候不知道日志的可贵啊。: j! U+ {! e: v8 s. m) K) T. X
还是以grep命令为主。
" s2 Z4 m$ H3 C& i1 f5 m思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。$ L( m; `& F( ]
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
' Y( g& \- \. f! Q, `( N2 {4 I1 G
" x; L, v( N  m" ]' [(这里不建议用cat,用tail可以追加一个文件来看)
1 ~8 \* G4 z, [/ d4 C# S3 X
* F4 R/ A* K6 p: p这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。* O9 y: H, V6 U

% P7 @' u, O& `, J8 t$ u3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。
2 ~$ O& A* v' N% O综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。8 q; \5 m8 Q) S7 j
! I  E8 w- j& p! g8 F8 }

, u5 K* n+ F( @: H+ k) }8 u/ U: G+ G6 I; l. s" Q
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云
快速回复 返回顶部 返回列表