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

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

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

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

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

×
php后门木马常用的函数大致上可分为四种类型:
  o: s' `! q1 o5 u) }; u; t! p( e: q
  1. 1. 执行系统命令: system, passthru, shell_exec, exec, popen, proc_open
    * [& O5 q) W$ n
  2. 2. 代码执行与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13) C! M) \: O7 P  k8 N3 o. B6 H; k
  3. 3. 文件包含与生成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite! Q* W. Q( Z, v) p+ Q0 N
  4. 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file
复制代码
二  想找一个 关键词是“hellow word” 在哪些文件中有,我们用grep命令) G' w; }+ Z! w$ i- [
  1. grep –color -i -r -n “hellow word”  /data/www/
复制代码
7 u. u# e4 J3 L: V( a0 A* W/ a5 k
这样就能搜索出来 文件中包含关键词的文件
* W' D, W' ?/ b& W–color是关键词标红! P1 [7 R) u: k8 ]
-i是不区分大小写
$ ~$ @  I; _% h2 q3 R' Z-r是包含子目录的搜索4 U6 ]+ q! ?4 Q1 p* j7 h
-d skip忽略子目录4 J" m! z7 x4 R" Q" s4 N6 V* \
可以用以上命令查找网站项目里的带有挂马的文件
1 C5 i; f/ x  E6 x/ F" E$ I' t6 v7 l4 f8 i4 x7 }* U7 a
三 .两个查后门的实用linux命令:
* y" R2 [2 Y' U1 a, J
  1. find /data/web/website/ -iname *.php -mtime -35 找出/data/web/website/目录下 35分钟前新建的php( d9 {; E2 C& l
  2. find /data/web/website/ -name “*.php” | xargs grep “eval($_POST[” 找出/data/web/website/ 里面源码包含eval($_POST[的php文件
复制代码

  G. |: W) @( j( M7 K! Y四  例如  注入漏洞eval(base64_decode
" ~$ y) e) h$ c& {/ q  W
  1. grep –color -i -r -n “eval”  /data/www/   找出来对比以前正常的代码,看是否正常。然后用stat查看这个木马文件的修改时间,最后去寻找WEB日志,找
复制代码
出木马从哪里进来的
; ~5 P! F6 W( t1 r9 C: K五:实用查找PHP木马命令:
2 q  {# u8 C1 f8 E$ K7 W6 w查找PHP木马2 S( F) |! u5 [8 F6 K
  1. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt& ], H+ u0 o: x, B" H! Z
  2. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt! i5 D3 |! _4 }1 C; _
  3. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    0 }1 `- K1 B$ Z7 h
  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
    + P8 y2 V* N7 P

  5. 0 L9 n) S$ j* X# d
  6. # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decoolcode|spider_bc"> /tmp/php.txt- U8 h9 T; x. j( z6 o
  7. # grep -r --include=*.php  '[^a-z]eval($_POST' . > /tmp/eval.txt* f& m9 r- L6 N7 o$ q$ h
  8. # grep -r --include=*.php  'file_put_contents(.*$_POST\[.*\]);' . > /tmp/file_put_contents.txt
    4 O6 p; _7 K4 V$ V" |' O
  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文件% k  \* R! o* i. N  }
  1. #   find -mtime -1 -type f -name \*.php# |7 v! F4 t) s
  2. #   find -mtime -1 -type f -name \*.php
复制代码
修改网站的权限
3 e! F2 M$ H* x
  1. # find -type f -name \*.php -exec chmod 444 {} \;
    0 a# _0 P$ ~& ~8 \
  2. # find ./ -type d -exec chmod 555{} \;
    $ Z$ {% R# ]) }
  3. # find -type f -name \*.php -exec chmod 444 {} \;
    4 M5 g6 t' u9 }
  4. # find ./ -type d -exec chmod 555{} \;
复制代码
假设最后更新是10天前我们可以查找10天内生成的可以php文件:9 |: H4 F- p6 y* T7 m8 c- J0 j
  1. find /var/www/ -name “*.php” -mtime -10
复制代码
也可以通过关键字的形式查找 常见的木马常用代码函数 eval,shell_exec,passthru,popen,system
" }& C8 V. o/ ]# A1 r) O7 }& K
  1. #find /var/www/ -name “*.php” |xargs grep “eval” |more
    ' p$ D; @  O/ C- i9 a1 B! A' @
  2. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more
    ' e+ a% V! A) U# Z+ }2 Y/ y
  3. #find /var/www/ -name “*.php” |xargs grep “passthru” |more1 R* r9 X% {" V) i' X
  4. #find /var/www/ -name “*.php” |xargs grep “eval” |more9 l" q1 C1 W2 Z2 T- f! T9 C9 [. l) d, D! ]
  5. #find /var/www/ -name “*.php” |xargs grep “shell_exec” |more: h. c0 }9 g# P1 r* b
  6. #find /var/www/ -name “*.php” |xargs grep “passthru” |more
复制代码
还有查看access.log 当然前提是你网站的所有php文件不是很多的情况下/ X& Z3 m( f, u1 E
一句话查找PHP木马
3 X, _+ B$ U8 G! U/ Z9 F
  1. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    3 g7 j" L$ A- p- X- |& p% e; R
  2. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt
    ( w9 j4 U: {& |2 X( Z
  3. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt- D. g5 ^: N. r) y6 E
  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( a6 R- A- r8 E
  5. # find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decode|spider_bc”> /tmp/php.txt
    ! _5 f; u0 G9 v8 {
  6. # grep -r –include=*.php ’[^a-z]eval($_POST’ . > /tmp/eval.txt5 X  [8 o8 R0 c3 c" z
  7. # grep -r –include=*.php ’file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt7 ~# p! O/ A, i
  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
复制代码

- k. l, c# n; d# T查找最近一天被修改的PHP文件: o5 |9 K+ L3 o0 ^
  1. # find -mtime -1 -type f -name *.php
复制代码

3 N/ n  p2 |6 p/ d2 t" f六 以下其实是多余的操作了其实,但是还是有值得看的地方
3 Y% o9 ?; w; b5 d9 g+ E8 y$ M- T3 R% K7 R$ S4 C
检查代码。9 e9 D5 A% ]4 E7 [
5 T  @0 V5 w$ ]
肯定不是一个文件一个文件的检查,Linxu有强悍的命令& I3 r" d3 Z: @
grep ‘eval’ * -R 全盘搜索当前目录所有文件(包含子目录)中带有eval的文件,这条可以快速查找到被挂马的文件。
  ^. P0 W/ M5 x2 g9 u关于eval,请自行google一句话php代码。
: L! N( k  |5 [/ a6 `4 {$ J
8 s* s8 t; p2 `# t) m  W. W: T! a2,查看日志。3 D3 Y+ v2 i( x; ~$ y; X# `
不到这个时候不知道日志的可贵啊。
6 c1 t% @) H; M: A还是以grep命令为主。- ~+ P0 S! f  b/ l5 Y
思路:负责的站点是Linux,只开了2个端口,一个22和80,外部的执行命令是由从80端口进来,Selinux报httpd访问/boot文件,确认被挂马。而所有的命令执行必须POST提交给执行的文件。所以,查找日志中所有的POST记录。; f2 v3 }* j! @" w7 o, X& G! x
cat access_log_20120823.log | grep ‘POST’ | grep -v ‘反向查找’ | less,通过grep -v排除正常post,egrep也支持正则,但是太复杂了,看懂不知道怎么运用。
4 ~- K$ H& ^1 ?2 H
3 n- ~0 D; w- e' {% H/ M8 }- L(这里不建议用cat,用tail可以追加一个文件来看)7 l+ L, t( N- v8 {3 S" [) y
( h( V. x/ W, l7 Z6 H
这可以防患于未然,防止不知道哪天又被人黑进来了。每天看一眼日志。3 Q- `+ \% R# \: h: p! L$ E$ Q
* B3 h( D0 y9 ?0 n& r$ R- z. f
3,对于网页目录,只给apache用户rx权限,不要给w权限,目录设置要加上rx,不要给w,个别文件除外。所以,配合2使用,Linux下可以快速过滤刷选出来不规则的POST请求。
+ A5 j, D- {1 G5 P3 {6 X综合1,2其实就可以快速查找被黑的页面,被修改的文件替换干净的代码。5 q0 d, z. z1 _8 F

* x- Z9 N- ?$ i: P# |* ^7 v% n- F; }6 D0 f( D+ Q
# H  m- r( P) `) V* z+ P% m
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2024-11-21 20:34

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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