一:漏洞名称:
Robots文件信息泄露、Robots.txt泄露
描述:
搜索引擎可以通过robots文件可以获知哪些页面可以爬取,哪些页面不可以爬取。Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯,如果robots.txt文件编辑的太过详细,反而会泄露网站的敏感目录或者文件,比如网站后台路径,从而得知其使用的系统类型,从而有针对性地进行利用。
检测条件:
Web业务运行正常。
Web中存储敏感的robots文件。
检测方法:
- 检测形式多样,工具爬虫扫描得到敏感文件的路径,从而找到robots文件,
- 手工挖掘,直接在域名后输入/robots.txt进行查看。
漏洞修复:
安全建议或者修复方案:(可根据实际情况,进行如下对应的修复)
- User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符
- Disallow: / 这里定义是禁止爬寻站点所有的内容
- Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
- Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
- Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
- Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
- Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
- Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
- Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
- Allow: /tmp 这里定义是允许爬寻tmp的整个目录
- Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
- Allow: .gif$ 允许抓取网页和gif格式图片
- Sitemap: 网站地图 告诉爬虫这个页面是网站地图。
其他补充说明:
来自:robots协议Disallow和Allow后带斜杠/和不带的区别
1、 User-Agent
User-Agent是指定搜索引擎种类的,且User-Agent:后面要有一个空格。
如果只想指定百度搜索引擎,就这样写
Markup
User-Agent: Baiduspider
如果既想指定百度,又想指定谷歌,就像这样写
Markup
User-Agent: Baiduspider User-Agent: Googlebot
如果还要指定其他搜索引擎,直接再添加一条User-Agent记录,但想指定多个则继续添加多个User-Agent记录,可这样重复添加显得很繁琐,遇见这种情况,我们只需要用星号*代替,就可以表示指定所有搜索引擎,这样我们就只需要写一条记录即可,写法如下:
Markup
User-Agent: *
2、Disallow
Disallow用来说明不允许搜索引擎蜘蛛抓取的URL路径。
例如:Disallow: /index.php 禁止搜索引擎抓取index.php文件
3、Allow
Allow用来说明允许搜索引擎蜘蛛爬行的URL路径
例如:Allow: /index.php 允许搜索引擎抓取index.php文件
4、通配符*
用星号*来做通配符,表示0个或任意多个字符!
例如:Disallow: /*.jpg 网站所有的jpg文件被禁止抓取。
5、结束符$
用美元符号$来做结束符,表示以它前面的字符为结束的url。
例如:
Disallow: /?$ 禁止抓取所有以问号?结尾的文件;
Allow: .html$ 允许抓取所有以.html为后缀的文件。
注意事项:
一、在“/robots.txt”文件中,至少要有一条Disallow记录,允许收录优先级要高于禁止收录.
例如,我们希望所有搜索引擎只抓取a目录下的b.html这个页面,但在a目录下除b.html以外的所有文件和页面都被禁止抓取,写法如下:
Markup
User-agent: * Allow: /a/b.htm Disallow: /a/
以上协议规则表示所有搜索引擎可以抓取a目录下b.htm,该a目录下其他文件都被禁止
二、重点:robots.txt文件屏蔽目录带不带/斜杠的区别 :
首先,我们来看下面两条记,一个带斜杠/,而另一个不带斜杠:
Markup
Disallow: /admin Disallow: /admin/
根据robots协议写法规范,区别如下:
1、不带/斜杠的Disallow: /admin表示屏蔽admin这个名字开头的所有目录。如:/admin1、/admin2、/admina或者/admin/以下的所有目录都是被屏蔽的。
2、带/斜杠的Disallow: /admin/表示屏蔽/admin/这个目录下的所以内容。如:/admin/abc、/admin/gsd/或者是/admin/4gy6/1df等,/admin/以下的目录都是被屏蔽的。但是它并不屏蔽本目录的内容,如:/admin还是允许抓取的。