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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:0 z' d% E6 j3 V) V. }# e
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
      h* M0 u9 C  R4 q* d* B) ]. J
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
    5 w* O6 c2 A2 y
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite7 k' h$ M; I/ q) u
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令) {6 s% t. S! Z9 E3 K
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

5 g8 q; ?6 r8 K7 P0 @. Y1 z$ |这样就能搜索出来 文件中包含关键词的文件
, w, {3 \+ _' ^! C& I5 `3 ]+ z! i7 e! W–color是关键词标红* b* V4 h( ^4 d' B1 G0 t$ f8 p
-i是不区分大小写
: b6 J6 x2 [! P. G; u2 R9 @: a4 ]-r是包含子目录的搜索
9 G9 I6 ~3 T' r-d skip忽略子目录
* @- H/ E" Y: A- a; z+ x可以用以上命令查找网站项目里的带有挂马的文件
, M: p, d5 s+ E3 c
  B2 E) Q" r& r) c, V1 b三 .两个查后门的实用linux命令:
& D- ~/ O+ o! \* q, G+ g; |& J& N
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php9 I0 L$ s; h# K* y" z$ |2 G: c/ M
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码
0 o+ r' i- R9 s- y+ p0 k& }
四  例如  注入漏洞eval(base64_decode8 F9 M; j( O4 d: o$ ?
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
$ D4 N! ]% ~4 x  ^0 \五:实用查找PHP木马命令:
3 t" t, U7 o: _查找PHP木马
* Y4 @: w, K& c3 |- m1 `9 w2 X
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    3 T! u; K' H" D( L6 Z
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt4 L3 S' I4 T2 l5 a8 U, a
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    3 }/ v2 A, n/ Y( ~
  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 | uniq2 e9 F" C$ e' p2 m, l+ u
  5. " [  g2 u5 W, _6 e; e+ `
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt: R$ q: I6 K9 @
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt% Z* F) N0 O; i$ W
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt( W) G  y2 A/ Q& S) |; S: B
  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文件
1 n2 [" W5 y8 m, ?: O& K
  1. #   find -mtime -1 -type f -name \*.php# g* U1 n$ c3 U# m( K
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限& B! R4 F9 a0 F& D8 v  e# l
  1. # find -type f -name \*.php -exec chmod 444 {} \;6 a3 R7 r# G$ N2 p) F: @8 }1 Y
  2. # find ./ -type d -exec chmod 555{} \;
    5 h5 v! E0 a/ k; Q, g& [
  3. # find -type f -name \*.php -exec chmod 444 {} \;7 k3 ^; ^; P6 T+ B7 C
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
" q7 j# |# B5 v9 @. R+ D% E. h  M
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system
3 _5 H2 U6 q2 {& z% d+ e7 h# T+ q4 A
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    # R: U8 V$ N; e. m) J& h# ~8 g
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more; v1 M0 o0 w2 r* ~4 m
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more+ m+ v( R3 |5 ]& ]9 F1 f6 @& @1 H
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    8 _% t& ?. C% ]' v' |1 C
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more4 u3 u* \/ Q! w: [' d# v, c
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
# _. r; k; \. S  e, E) |  \7 h一句话查找PHP木马
4 {, A$ `! g- t3 {  J0 p8 A
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt/ y( ?9 ~. k9 e$ i
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt5 ]2 B- ^+ y* j* H1 m
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    ! V+ I% }2 t8 L% g5 F: V! t9 O
  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
    + ^2 [1 v: j3 H9 x8 D7 J3 k
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    ) `$ O3 A4 W: x" b
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt( p4 d& j1 {9 {: P6 n/ S+ _* b
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    * Y5 Z# N' I/ N
  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
复制代码

! }9 j& s0 d8 M& M# q0 b8 u1 ^# n查找最近一天被修改的PHP文件
6 E/ [- C" J$ [' ?# M$ ]* Q& h* }
  1. # find -mtime -1 -type f -name *.php
复制代码
* _; B2 o! m+ W! ?$ y8 x
六 以下其实是多余的操作了其实,但是还是有值得看的地方
0 ]  C% g( U* B7 L% f& D; b- S, `; ?+ i  \
检查代码。7 ~8 ]0 W' G) T) w6 J2 m

( w( L5 ^! C* {/ q/ p: _肯定不是一个文件一个文件的检查,Linxu有强悍的命令2 r0 M( L7 ^/ {1 s  P1 p0 ]$ D
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
& o( |5 L: o1 ]6 A关于eval,请自行google一句话php代码。
. i5 M2 P# y0 V9 D! x5 \7 k0 b1 j' O+ u' n5 G5 d. {
2,查看日志。+ T6 e, A7 ]" n6 ^/ _/ `
不到这个时候不知道日志的可贵啊。" i1 r' \& \/ z1 d, G( D& @
还是以grep命令为主。
1 G( Y2 E: \+ ~5 K思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。
! F0 F. H+ w0 U, h$ \; r. R6 ^cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
8 V7 q( H8 o  g( w" f, e, w: C' n8 z
(这里不建议用cat,用tail可以追加一个文件来看)
" k! }6 J% A8 n( S; D7 e+ D( M# x2 `; H7 t8 j& v$ y
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。
- @3 U* {! B5 C: y, E  Z( R3 g+ y' r
3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。6 |" t/ m3 O- f; X6 Q: z  L
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。
6 D) Y& J1 t! @$ C: e) s4 ^) l
- n! [( e0 p8 o3 p3 ^+ y  b- }6 C7 m( n/ j* P+ i2 F
% z6 W: R7 @, Z% [6 W1 H
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2024-12-4 02:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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