网站建设

简单修复360安全检测提示的发现robots文件漏洞

Jager · 7月22日 · 2016年 · 11436次已读

很久没看过 360 的站长平台了,于是在 360 搜索中 site 了一把,发现居然安全评分是 99,而不是 100。好奇点进去看了下,发现下面这个大奇葩:

简单修复360安全检测提示的发现robots文件漏洞

呐尼?发现 robots.txt 文件?这也算漏洞?继续看了下解释:

漏洞类型:
信息泄露
所属建站程序:
其他
所属服务器类型:
通用
所属编程语言:
其他
描述:
目标 WEB 站点上发现了 robots.txt 文件。

1.robots.txt 是搜索引擎访问网站的时候要查看的第一个文件。

- 收起
2.robots.txt 文件会告诉蜘蛛程序在服务器上什么文件是可以被查看的什么文件是不允许查看的。举一个简单的例子:当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存 robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。同时 robots.txt 是任何人都可公开访问的,恶意攻击者可以通过分析 robots.txt 的内容,来获取敏感的目录或文件路径等信息。

危害:
robots.txt 文件有可能泄露系统中的敏感信息,如后台地址或者不愿意对外公开的地址等,恶意攻击者有可能利用这些信息实施进一步的攻击。
解决方案:
1. 确保 robots.txt 中不包含敏感信息,建议将不希望对外公布的目录或文件请使用权限控制,使得匿名用户无法访问这些信息

2. 将敏感的文件和目录移到另一个隔离的子目录,以便将这个目录排除在 Web Robot 搜索之外。如将文件移到“folder”之类的非特定目录名称是比较好的解决方案: New directory structure: /folder/passwords.txt/folder/sensitive_folder/

New robots.txt: User-agent: * Disallow: /folder/

3.     如果您无法更改目录结构,且必须将特定目录排除于 Web Robot 之外,在 robots.txt 文件中,请只用局部名称。虽然这不是最好的解决方案,但至少它能加大完整目录名称的猜测难度。例如,如果要排除“admin”和“manager”,请使用下列名称(假设 Web 根目录中没有起始于相同字符的文件或目录): robots.txt:

User-agent: *

Disallow: /ad

Disallow: /ma

原文地址:http://webscan.360.cn/vul/view/vulid/139

大概是懂了,就是 robots 会泄漏网站后台或其他敏感地址,我之前遇到不想让人通过 robots 知道的地址,我也会使用上述解决办法中的第 3 条,只写局部字符串。

但是,这些完全是掩耳盗铃的做法,明眼人都能轻松识别博客是 WordPress 还是其他建站程序,什么敏感目录根本没法隐藏,当然隐藏了也没啥用。

不过,看到不是 100 分就不爽,所以我也掩耳盗铃的解决一下吧!

我的思路很简单,对于非蜘蛛抓取 robots.txt 行为一律返回 403,也就是 robots.txt 只对蜘蛛开放。实现非常简单,在 Nginx 配置中加入如下代码即可:

#如果请求的是 robots.txt,并且匹配到了蜘蛛,则返回 403
location = /robots.txt { 
    if ($http_user_agent !~* "spider|bot|Python-urllib|pycurl") {
        return 403;
    }
}

加入后 reload 以下 Nginx,然后再到浏览器访问 robots 地址,应该能看到禁止访问 403 了。

随即去 360 扫描了一把,结果并不意外:

简单修复360安全检测提示的发现robots文件漏洞

哦了,问题就简单的解决了,仅仅只是为了这句“神马黑客都是浮云,网站安全比肩 360,实在是给力!”,呵呵呵。。。挡一挡网络上的匿名扫描还行,其他的就真的只是浮云了。

53 条回应
  1. 龙笑天 2016-7-22 · 14:02

    几乎没关注过这些~~

  2. Koolight 2016-7-22 · 15:17

    360也是奇葩,看来是100分网站太多了,需要降低名额了。

  3. 教你免费申请网站 2016-7-22 · 17:08

    不知道我的免费网站支不支持robots的修改,楼主大神啊

  4. 成航先森 2016-7-22 · 19:26

    之前我也注意到这个问题了,可能不知道怎么解决。张哥,虚拟主机怎么办?

  5. Seon 2016-7-22 · 21:28

    这个6,哈哈哈 :grin: 话说我都换头像很久了,咋你博客这儿还没更新缓存,噗

  6. 一曲长歌辞烟雨 2016-7-23 · 8:28

    Jager你好~ 按照你的方法,我去nginx.conf 里添加了你提供的代码,确实返回了403.但是当我去百度站长平台更新robots.txt时,却提示了:您的robots文件设置了重定向跳转,暂时无法查看。 这该怎么办呢?

    • avatar
      Jager 2016-7-23 · 21:04

      1、使用百度抓取诊断试下能否抓到robots内容
      2、点击更新robots的时候查看nginx日志查看抓取信息

  7. 一曲长歌辞烟雨 2016-7-23 · 8:31

    Jager你好~按照你的方法,我去nginx.conf添加了你的代码。但是当我到百度站长平台更新robots.txt时,却提示了:您的robots文件设置了重定向跳转,暂时无法查看。 这该怎么办呢?

  8. 邢台网站建设 2016-7-23 · 12:45

    谢谢分享,正好测试一下头像吧。
    还有就是发现只要输入了邮箱,就能获取到头像了,挺好。
    审查元素的时候出现了个错误哦 是https那个

    • avatar
      Jager 2016-7-23 · 21:02

      没看到报错信息。。下次看到请粘贴下地址

      • 邢台网站建设 2016-7-23 · 21:30

        Font from origin 'http://res.zgboke.com' has been blocked from loading by Cross-Origin Resource Sharing policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://zhang.ge, https://zhang.ge', but only one is allowed. Origin 'https://zhang.ge' is therefore not allowed access.

        就是本页,图就不发了

        • avatar
          Jager 2016-7-24 · 8:01

          知道了,个别节点缓存了老的head规则,慢慢就会更新。

  9. 帅气小琦琦 2016-7-24 · 23:06

    这个 好吧 确实是一种自己骗自己的方法 但是也不会有谁去在意啊

  10. benen005 2016-7-25 · 11:50

    确实不错

  11. 任务易 2016-7-25 · 14:37

    这么多老司机在下面评论,我也来一个

  12. 开拓者博客 2016-7-28 · 8:50

    谢谢分享! :roll: :roll: :roll: :roll: :roll:

  13. 天涯SEO自学网 2016-7-28 · 10:45

    我的也提示这个,强迫症的我跟你一样只想看到100分!

  14. 个人博客 2016-7-28 · 16:19

    感谢张哥分享

  15. 微信投票管理系统 2016-7-29 · 17:44

    没有百分百的实力,写上一百分,也是自我欺骗(⊙o⊙)?

    • avatar
      Jager 2016-7-30 · 8:57

      没话找话说

  16. 尤克里里谱 2016-7-30 · 17:44

    大神就是大神 哈哈

  17. 易淘金股票博客 2016-7-30 · 22:29

    谢谢分享 懒得检测

  18. 叶子 2016-7-31 · 12:25

    360挺搞笑的。。。。

  19. 叶子 2016-7-31 · 12:26

    估计也就是骗骗小白的站长,像张老师这样的明眼人一样就看破了。360真奇葩。

  20. 松松软文发布 2016-8-3 · 13:18

    感谢楼主的分享呀,今天来收货不错,继续潜水

  21. 素梅好翔博客 2016-8-4 · 11:28

    360的检测没什么卵用

    • avatar
      Jager 2016-8-4 · 20:47

      没人说它有用。

  22. 伪极客 2016-8-6 · 16:40

    去查了下 还真是这样。。

  23. 微信公众号报名投票 2016-8-8 · 15:33

    谢谢楼主的分享,很多专业的帖子。会常来看看。 :oops:

  24. 松松软文发布 2016-8-15 · 15:11

    还真是不怎么清楚这个呢

  25. 杨泽业 2016-8-18 · 20:20

    好牛逼啊,我也学学

  26. song 2016-9-8 · 21:44

    Jager你好,请教一下,服务器是win2008 R2 IIS7.5的话需要如何修改呢?

  27. 似水流年 2016-9-21 · 13:25

    阿里虚拟主机怎么禁止

    • WingsBlog 2016-10-8 · 15:32

      同问,虚拟主机怎么禁止

  28. 菊部 2016-10-12 · 13:03

    感谢分享

  29. OtwoCn 2016-11-24 · 10:48

    我按您的方法加到配置里,nginx怎么也启动不了。各种位置都测试了,而且发现只加第一段都启动不了,肿么破~~~~我的nginx版本是1.11.5

    • avatar
      Jager 2016-11-24 · 13:15

      启动肯定有个报错信息,不贴出来我怎么知道?我文章都是测试可用的。
      另外,简化了下:

      location = /robots.txt { 
          if ($http_user_agent !~* "spider|bot|Python-urllib|pycurl") {
              return 403;
          }
      }
      • OtwoCn 2016-11-25 · 9:48

        对部署这块是小白~~~~我只是看任务管理器的进程里面没有nginx的进程~~~~
        优化的代码我也试过了,也是启动不了。大虾提示一下在哪看报错信息吧 :!:

        • avatar
          Jager 2016-11-25 · 13:47

          windows服务器就算了,当我没说

          • OtwoCn 2016-11-25 · 14:56

            我的天。。。。我刚找到错误信息,楼主竟然这么打击我。。。。
            2016/11/24 09:13:40 [emerg] 4496#5036: unknown directive "if($http_user_agent" in C:/nginx-1.11.5/conf/nginx.conf:73

            • avatar
              Jager 2016-11-26 · 11:09

              if($http_user_agent
              if 和括号之前需要有空格,我文章中明明是有空格的。

              • OtwoCn 2016-12-5 · 9:47

                加了空格可以启动了,但360检测还是99分 :sad:

  30. 杨小杰 2016-12-5 · 21:14

    博主你好,kangle是没有nginx的,那该如何修复呢?

    • avatar
      Jager 2016-12-8 · 17:13

      kangle 这个不熟悉,但原理是一致的

  31. someone 2016-12-20 · 18:35

    大哥,robots就是给蜘蛛用的,你这样配置下还不如删除robots文件

    • avatar
      Jager 2016-12-21 · 9:36

      麻烦不要误导读者好吧,文章的做法就是只给蜘蛛抓取robots.txt,普通用户不给看。不仔细看文章就瞎BB,还不留邮箱,你真的是来交流的?

  32. 小菜 2016-12-21 · 9:17

    请问apche服务器的htaccess应该如何写代码

  33. boke112导航 2017-3-10 · 14:39

    方法挺好用的,今天我的站点360评分太低,已经搞定,终于100分了,谢谢分享。

  34. 1080福利 2017-4-15 · 23:43

    我是lnmp的搭建的,改成了location ~ /robots.txt 就返回403
    =和~有什么不一样吗, :roll:

    • avatar
      Jager 2017-4-17 · 21:30

      没事,好好补下课再自己改造。
      ~ 表示匹配,支持正则,小数点表示所有字符, location ~ “^/robots\.txt” {
      = 表示完全等于。

  35. 叨声依旧 2017-7-18 · 20:42

    请问博主,Apache如何进行让网友无法看到robots.txt,而让搜索引擎能爬去这个文件,谢谢。

  36. 夜不眠 2017-8-16 · 16:08

    为什么输入了没有效果,还是可以访问