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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:
" n6 d! U3 O  X; g  g$ I4 K
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
    , n3 E# F, }" e3 d& V; z6 ^: _
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13
    6 E; a5 U# A! o! o  a! U
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite
    ) G/ H% Q8 |+ |1 C4 W7 n/ O
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令
: L( s: ?# r, _! M
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码

/ ?. [4 w( y) M# Q+ R' T这样就能搜索出来 文件中包含关键词的文件
1 n& n9 @1 C: M: I7 h0 D! X–color是关键词标红4 W8 x1 b) a& M( a* x
-i是不区分大小写3 R/ e8 U  q- A+ v8 k6 f
-r是包含子目录的搜索
- @5 {2 R+ X4 t4 [" ~-d skip忽略子目录
" n0 j- f# i0 h5 A, e2 k; l可以用以上命令查找网站项目里的带有挂马的文件) T  {+ F. V" X  a9 q* L
$ v% E, Y" C* u8 u% n
三 .两个查后门的实用linux命令:
* r4 q% z* o, t8 v
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php
    ! d. B  t  H! d4 L( T! d
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码
0 h3 r8 _# N$ ~3 w+ v' Z
四  例如  注入漏洞eval(base64_decode  g! Q+ I" \& e* r
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
/ g1 F! u! B) x; c0 ^5 n+ F五:实用查找PHP木马命令:) \! h- [0 P% @, r+ Y# \% q
查找PHP木马% S! n. [, B$ x- A
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt
    ) m: X, f0 S, Z" E( s0 ?
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt
    - q6 n, K1 j: M; l( @# [
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    ! S4 {+ S# a9 b) L7 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* u2 T: H) @: H* J. k* I
  5. , ~( q' u+ I* y9 A; @: I
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt& [' ^1 I9 u# o; k" o
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt
    ; A1 v% ^+ s  c2 L
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    & k/ G% S, c; \  N
  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文件' B6 B3 {5 w" n. n: K& q
  1. #   find -mtime -1 -type f -name \*.php
    : K/ D) z$ T& d: t6 j
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限
# N% n/ y( E( p! t$ A
  1. # find -type f -name \*.php -exec chmod 444 {} \;7 o/ }( p  c( L3 u' E" ]
  2. # find ./ -type d -exec chmod 555{} \;
    ) ]+ x4 P6 o0 W4 K( k
  3. # find -type f -name \*.php -exec chmod 444 {} \;+ R4 ~% g  M2 _+ p1 ~4 i
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:
3 \2 ]6 q5 v9 h3 K8 \( @% K* T
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system& a0 _' A: v  C! m2 ?$ f9 T
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more( s1 \  b( X" x+ g' X: ^
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more; [- V0 {( P$ A" {( C/ N# ^
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
    ; E6 c% M/ d$ {* \( P! o* ~- e
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    4 A# D: G. V( S! w- D
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    # r5 K1 m5 {1 e6 @
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下
$ S0 o, T: _9 Q2 Y5 b. ^; ]6 j* M& x一句话查找PHP木马
0 O* w# a( p& P) v+ F( b, e
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt! _: x9 `4 s8 ?; k  c2 S) k
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    % ?; [' c+ S4 a" B" |/ j% H
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    ' g# w: B7 i8 O& ^- y
  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
    ( T( f* H* p) P; T; P# V# h
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    2 B- k' X  r* K' U5 a3 C4 f
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt8 n+ b4 l" Y" B8 @5 {( v
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
    - D6 |/ Q. f+ m$ L. I+ h# 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 d: L9 p9 S! D4 d查找最近一天被修改的PHP文件+ u7 w* [% A; R6 ]% E
  1. # find -mtime -1 -type f -name *.php
复制代码
  j* g' u/ N7 z  k- x4 v
六 以下其实是多余的操作了其实,但是还是有值得看的地方
% R) w! Q; k4 a: D: {- a2 z4 F7 A% d7 b6 ]9 @' {, w" T: {1 ?
检查代码。
$ C" A$ D6 T" i. z
+ b4 `  U$ Y% o* a( Z肯定不是一个文件一个文件的检查,Linxu有强悍的命令9 I! G6 l* j: w7 i' S) Q
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
' X& A0 z2 X' g- z% J. h关于eval,请自行google一句话php代码。
9 d% ]. k0 {( v2 ?0 m
: `+ B% r3 U/ A$ [3 X0 e2,查看日志。
$ S4 \! x) w( c0 O# o: I) v6 @不到这个时候不知道日志的可贵啊。
( K) [$ @" a' @还是以grep命令为主。
& R% v& ]9 j& I* I% b& ^( u) T) h% G, i思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。2 ~! G( b. H5 z1 _. ~$ i7 N
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。8 J- `/ z5 D: `4 c- W; F8 D

! G# q$ [0 ~# U: Z( E& N(这里不建议用cat,用tail可以追加一个文件来看)  t9 Q- \! t9 u+ f0 n( Y) i# `
6 c  {% I# F' \; W
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。
& d) O( p! I8 ]5 _$ ~# h- @) a* s, T" f2 V& {9 p
3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。; w  R5 P  {2 h. `! a5 N
综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。9 M% R2 q; a: q2 g' P& }
2 s4 D+ T+ T1 q9 @; o

1 Y* ^- Y- c7 g
' i( p* E+ J0 W
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2025-4-4 06:24

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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