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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:
. `' ~* x* x& u+ A
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open# L% {* Q2 ^5 }* ?
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot138 E% {* J- f- R7 r
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite6 ~/ |5 `0 h/ c% a2 J
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令
4 \$ J. T% Q1 ^6 V
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

1 Y0 X( b9 x+ v2 N; J( A这样就能搜索出来 文件中包含关键词的文件+ I3 s+ k$ |5 z
–color是关键词标红5 f- ~: P9 ~4 X1 X
-i是不区分大小写
# V, e* B: Z5 v& E# J3 `' }+ D-r是包含子目录的搜索
9 K- R  U- x# v, w. U8 u-d skip忽略子目录6 G- m3 J8 z$ M: Q, t& L* e$ N2 O8 m4 {
可以用以上命令查找网站项目里的带有挂马的文件: Q/ x- C- ]- X4 q! [0 J) n/ G" U

2 G1 `8 l/ f- o0 }三 .两个查后门的实用linux命令:
; E, W2 \' N7 s4 J5 X% R2 K# o
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php
    6 D6 h. g& K1 g& B: [
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

( H! i0 ]: _& l8 K7 x7 u四  例如  注入漏洞eval(base64_decode3 g, t9 M, D& p! m
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
7 d+ ?0 }" ]0 E1 s( T* S五:实用查找PHP木马命令:. W/ X( [! T6 O( u. C8 V
查找PHP木马
  C7 `7 J$ f/ T' p0 n/ r4 o
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    4 G% F* ~! i# z; X/ w
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt
    8 P3 F. f) p8 t6 Y. z/ Z8 t
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    : a+ ?" y- t& Q5 W
  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
    , g, Q* v7 G, K& d
  5. 0 X1 c/ _9 c& s3 G1 P
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt4 y+ c# y& C2 X* Z
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt- u; t/ T2 d7 y' d+ H3 a4 e
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt9 F/ S9 R& \! m$ `' X- T1 M! p. 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文件
2 i# I, Q4 j. m2 t& }" b1 Y
  1. #   find -mtime -1 -type f -name \*.php
    7 {' ^/ ~1 p- R* |
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限
: G  [) w" p+ L! X. G' ]
  1. # find -type f -name \*.php -exec chmod 444 {} \;
    9 w  `+ G* q- y, |# G8 c$ p
  2. # find ./ -type d -exec chmod 555{} \;
    $ W) C0 K  _' G$ E8 q5 c) a6 e
  3. # find -type f -name \*.php -exec chmod 444 {} \;
    # \% r+ r8 \* K2 p
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
4 i; n$ |6 z+ Y' Y" N* T' }- I! {
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system" v$ m! {7 f: c# `$ {2 _
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    & b' S5 N! n  ]! P7 W2 k6 h. e
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more6 b0 o6 N( [# n/ P
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    7 t2 \  h/ s' G2 A/ X' T
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    1 _# V6 ^( h& {! a6 `- N- k' k1 [
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more' J/ |. N$ n0 H+ Z+ Z3 L; o
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
% o- E/ Z- D& I6 S一句话查找PHP木马
$ R' i4 O+ B6 U
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt, Y8 z; [) _) T! h& c8 L
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt$ J0 |7 q# D" h4 p/ s- ^
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    ) q' r; @% g7 m
  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
    7 p/ I- B( e: X$ l/ S0 S& P
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt0 f& M5 f- o6 v$ W/ }
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt2 ]# I8 f8 [9 s1 E/ X5 S
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt7 m5 z7 B3 w: D8 G  w; b
  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
复制代码

, n) \' P, T  C4 Z+ Y查找最近一天被修改的PHP文件
  ~, v3 z; N, @5 S
  1. # find -mtime -1 -type f -name *.php
复制代码

. C7 C7 u2 o! w) k9 C六 以下其实是多余的操作了其实,但是还是有值得看的地方
3 V; Y% C) m+ B/ M. M. a* k- x: Z$ L; M
检查代码。! ]- O; X' x$ T! a, Y$ R

7 o- }" _( b9 G5 s  ^& q肯定不是一个文件一个文件的检查,Linxu有强悍的命令. I; O* f2 A$ C  }" S5 m
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
+ X! B4 L0 _: q! y$ [  @4 o关于eval,请自行google一句话php代码。
7 [0 `6 J( V3 M
, }; K/ r. `6 n$ Y0 [" P2,查看日志。
$ d! C1 I# C1 e- T, Z/ S不到这个时候不知道日志的可贵啊。: S7 L: m& l( f1 z8 a/ X
还是以grep命令为主。/ J. t! d9 L+ t! E: K! T
思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。
  e$ y7 \+ A6 [cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
$ l3 Y5 q7 T8 y7 A
8 V0 N3 t6 f( z5 {: c(这里不建议用cat,用tail可以追加一个文件来看)6 q0 E& a, y: D/ l0 u: W
' }9 w! H1 Q. ^" x6 C
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。5 N8 s8 @& j" H* J

* Y2 a/ s$ {8 r  W8 c: T& p3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。% D) n4 u/ E* u( N
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。3 h9 @* E  t$ ?1 W2 c+ O
" X$ q6 s# X; a7 g
& b; D5 T, j  v6 |2 e

0 f* n' y  `! K* W, E
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2025-4-25 02:11

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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