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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:
0 l, \3 z$ w* J5 F9 F
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open8 A6 J" X* b" x3 B) X
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
    , Q4 f3 ^  x2 G7 \* \
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    7 B! @9 N4 c3 I; y
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令9 Y( `* N/ u6 z1 e( q
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码
0 u2 d  k7 b0 _  \% W4 X
这样就能搜索出来 文件中包含关键词的文件
9 q1 R- ]$ Y( I5 p6 T, z–color是关键词标红
7 p( {, T: i; W! ?. v' X-i是不区分大小写, ]7 A% `( `3 y( T7 ^6 F
-r是包含子目录的搜索
# n; `6 y) u( E0 g0 g  v-d skip忽略子目录9 q" Q8 s( v* `/ Q, d
可以用以上命令查找网站项目里的带有挂马的文件, z2 @, `; W1 H: o' S, B

( n) P& k7 u/ Q  e. u: K2 G# W# b三 .两个查后门的实用linux命令:
9 x$ f# ~& ~$ O  m
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php, Z; A3 j& }1 |- R4 H0 t- j* X( l, x
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码
; K& h- A% U" h. j" S' G+ P
四  例如  注入漏洞eval(base64_decode% P! D7 ?1 o/ r3 U) Z% c6 Y$ C' s
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的) a" }+ W" Z* `
五:实用查找PHP木马命令:
0 ^" z5 I+ O& C' E$ h4 m查找PHP木马
9 Q1 U5 B6 L! I" K+ ^+ o' D% }1 p
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    4 E% e: i3 D4 V/ m
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt8 T( r( R! a9 z5 L' T1 P
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt6 }! T% R) j# A& P& g' r# r: O
  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
    , N) `4 @! n1 s7 o; {# h

  5. 1 p; ]8 e5 g1 m6 r2 a4 |
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt" E3 |. |# j1 _5 x& u/ n' k  Y8 T
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt7 {8 t7 k; `4 O/ T+ @
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt8 v5 T4 }( x% D/ F
  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文件+ Z( {: \! F$ o1 T0 b
  1. #   find -mtime -1 -type f -name \*.php/ {! j) ^& y5 Y' k4 ~* b; A
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限
1 F/ u: a) q# ~+ j! ]* w% L3 x, [
  1. # find -type f -name \*.php -exec chmod 444 {} \;' U2 @9 p- L- e/ b9 E/ `* N
  2. # find ./ -type d -exec chmod 555{} \;) `! f: Q1 p% b
  3. # find -type f -name \*.php -exec chmod 444 {} \;2 \. T! t; A  c: \
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
2 Y4 v( P& K8 X3 v
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system7 ~2 [5 f8 c! ~8 t) T4 H/ b' K. p
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more3 |, F7 i, @% I- R( Y7 Z, }( c
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    % D1 J" @3 Z2 k# b) x% i& H. k' ]$ u
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    " x$ O; E+ @  {+ y  z5 F3 M$ S( l
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more: G1 K4 ^' Z% ~3 d( A$ t
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more5 }. O4 a6 ~" h' G5 S
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下. x9 u. m, v4 g1 s9 d
一句话查找PHP木马
) V4 `7 {$ F9 y3 n
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt- z# E3 N6 w% D0 G( r5 s
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    - ~  W7 Q/ y; _
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt! f. r' |7 O, [8 S% {" @7 _! F
  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! R- y! q4 ^: ~+ s% P1 ^( n
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    ( n2 x2 Q( C" Z, x2 _" @' a
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    / i* P% t3 V, ?$ \9 r
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    7 T1 h+ Z; g0 Y2 t
  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
复制代码
& i* |  w7 z+ ~) `3 r# y
查找最近一天被修改的PHP文件
- B! y: ^' m+ {. j
  1. # find -mtime -1 -type f -name *.php
复制代码

: Y0 h0 V& V% ?! L( G/ p六 以下其实是多余的操作了其实,但是还是有值得看的地方2 X7 t5 A8 X& ]- [: f

9 I# C7 T, H) A" N' u9 i; K7 g" H检查代码。1 z8 M& `- g& J8 v

4 v5 }* ?( d* D) n) `1 d肯定不是一个文件一个文件的检查,Linxu有强悍的命令
9 y% G2 B$ G3 v% w" }# U1 dgrep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
3 W! T" h; I. L; N1 J1 L$ H关于eval,请自行google一句话php代码。
) g: R  O5 i2 f6 n  J! p; Y/ D
1 V  L$ ^6 @' }/ l2,查看日志。  n1 a: Z- Y. y7 w7 y: p1 R$ }; P0 N  e
不到这个时候不知道日志的可贵啊。
2 r) Q0 O( V" h  P) N' y  `4 q还是以grep命令为主。, o! C  o6 e$ t& k( k. I# s' z
思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。& ~8 q2 y6 p5 S% V+ a  `* q* f
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。- N) D, Y' D2 ~, k
* A3 ~7 \  N7 q; h* D  |
(这里不建议用cat,用tail可以追加一个文件来看)6 }( j) u4 \  p, _/ z
1 A' C' {: l  x/ P2 Q
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。% W9 V0 s6 [1 l! I0 t; u  O
% p) C- g* h+ g9 s
3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。' @5 f, V* i) o' o. I( D
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。
  c' n3 V  s! B. n1 y; i7 F/ R" ^: j/ z0 U# Z1 y% g
! D: K; Z) a# w+ N( U, P+ c. B7 a

# ?; s# L  t) n
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2026-6-13 21:30

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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