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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:7 A( l8 C( u+ n- N
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open7 L6 E  L$ g' {6 C  [
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
    3 R# @8 k7 M6 f1 o" H: l7 b
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    8 j# p# [: s/ D* V; W; I* r" V
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令
( _4 ^+ W2 \0 l) U- ^' I6 b- a
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码
1 @  \, t! S# Y+ g6 V  x3 w9 z' z
这样就能搜索出来 文件中包含关键词的文件
( k+ q% f& A( J5 B7 S3 s–color是关键词标红  f  g8 p* l0 L1 a2 ~! X7 f2 z2 [) P, K
-i是不区分大小写
: H1 p, Q( o4 a2 y-r是包含子目录的搜索4 k& b3 k% k1 y; ?. _' L2 t6 ~
-d skip忽略子目录( o6 ]2 ]' E; d$ I: t# K
可以用以上命令查找网站项目里的带有挂马的文件- N" m) i" ^  a* E1 D5 N. U
4 q9 ]3 Y$ ~, p& {1 y% G
三 .两个查后门的实用linux命令:6 {! f8 U# g) C* S
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php
    0 v# |- L  P3 I
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

3 P# A1 E- R7 ]! [5 V, z% T- J四  例如  注入漏洞eval(base64_decode0 Q: P: e! S! |; P2 n
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的7 y$ S5 S9 f( F4 k1 Z5 X. D+ w
五:实用查找PHP木马命令:
7 [3 A5 d4 D8 i9 x* ]查找PHP木马
/ a2 Z6 N8 ?8 l9 L: R
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt5 C& c6 m! y1 e5 U. J% n+ B
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt6 [2 D" a# F: G# Y' s
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt$ e+ b; v9 T0 i, ]+ 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
    , D( z) i3 w+ B0 V- k9 o
  5. 2 _+ G- `% @8 d+ W1 r
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt5 L0 T2 |2 C6 [% l! f/ E9 v
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt
    " N! L$ r+ t: z3 o6 ]* l* p; x4 y
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    ) S, u9 s( g; [6 {
  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文件
: L* P: e0 K* {( ]! u" z6 V2 R" c
  1. #   find -mtime -1 -type f -name \*.php
    7 j) z& f1 X3 o1 t. H
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限4 z: O' ?, w% h% x0 F' m; D6 f
  1. # find -type f -name \*.php -exec chmod 444 {} \;
    0 r. P! K8 L! @3 g' o; s
  2. # find ./ -type d -exec chmod 555{} \;5 P1 P$ U! }6 l( v) V
  3. # find -type f -name \*.php -exec chmod 444 {} \;! h( I9 ?/ I; k# p  W% P: D
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
* x! ^5 H4 ^2 ]- b4 x. A; ?
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system3 j  n# o* G# V! U" E
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    9 j5 s6 i5 p" h2 D7 s: j
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    + ^) `* W" ?3 m, [( \8 t. h7 H
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    / e$ q+ T" d7 }8 X
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    2 P% o1 V0 I+ I6 ]6 \, x' o# Z' [
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    ) F7 H6 c8 F0 [
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
. e0 {/ @; H, P4 U0 w5 i一句话查找PHP木马
$ u& A1 e! z! g- J( `* Y
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    . Y8 ~+ w+ d4 i7 O
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt7 W- U" a. A2 m; C7 d8 D
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt, ?, }7 g+ B* z- k* W/ p0 b
  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
    ) u$ k8 d2 A0 H' Y
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    + T5 m+ I% R3 _' v9 u
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt; K' c4 v; v' V3 ^
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt5 K" K4 l6 y2 Z+ q9 T% \8 N! c
  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
复制代码

. V  A# Q& F- |0 }0 T% D查找最近一天被修改的PHP文件( R- N( H) }, j3 \
  1. # find -mtime -1 -type f -name *.php
复制代码
; C7 b+ Y$ P$ G8 k" c
六 以下其实是多余的操作了其实,但是还是有值得看的地方( q# A: @8 t( `: Q$ _* N
- k) M# R- b. q/ o; T+ a, y4 G
检查代码。- T& B1 o4 H) v; f5 x2 O8 T  R9 A
1 _* O3 o1 H/ R) R
肯定不是一个文件一个文件的检查,Linxu有强悍的命令7 b. p* s4 T* ]6 D, b, q$ J; n
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。) k1 G: v6 l( Z% h6 S1 \4 L. {( V3 P
关于eval,请自行google一句话php代码。+ c7 O' C. c' ~% G

! h8 h/ ~& U! I4 u6 k2,查看日志。  f- }6 ]  G7 c+ n, N/ w& h- i
不到这个时候不知道日志的可贵啊。
8 d, S1 D, i/ `还是以grep命令为主。
* W' B7 M, ?% l1 P$ C思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。
1 F/ r3 F, f) bcat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
8 z0 e4 M9 d; [4 M3 Y1 J1 D$ _$ S8 S- t
(这里不建议用cat,用tail可以追加一个文件来看)
% y5 s" M8 f& p: n
. I/ a0 L! u/ k/ P7 H, [$ k. V这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。
$ X; y7 J) u6 V% d$ S+ c
! }6 g0 I, o; i9 O7 V" J3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。, z9 W, C- m" N$ O. ^/ n
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。
; ~1 j; _% N4 O  _( v
9 U/ Z7 z, j$ j* x; `0 j5 \8 g' X( q& {8 l) M

" {0 ^1 T+ @0 E. B" m1 F9 _
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2025-12-7 14:43

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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