目录扫描的介绍
目录扫描可以让我们发现这个网站存在多少个目录,多少个页面,探索出网站的整体结构。通过目录扫描我们还能扫描敏感文件,后台文件,数据库文件,和信息泄漏文件等等
目录扫描有两种方式:
•使用目录字典进行暴力才接存在该目录或文件返回200或者403;•使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。
常见敏感文件或目录
通常我们所说的敏感文件、敏感目录大概有以下几种:
•robots.txt•crossdomain.xml•sitemap.xml•后台目录•网站安装目录•网站上传目录•mysql管理页面•phpinfo•网站文本编辑器•测试文件•网站备份文件(.rar、.zip、.7z、.tar、.gz、.bak)•DS_Store文件•vim编辑器备份文件(.swp)•WEB-INF/web.xml文件
robots.txt
robots.txt是什么?
robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被搜索引擎访问的部分,或者指定搜索引擎只收录指定的内容。当一个搜索引擎(又称搜索机器人或蜘蛛程序)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。
robots.txt的作用?
•引导搜索引擎蜘蛛抓取指定栏目或内容•网站改版或者URL重写优化时候屏蔽对搜索引擎的不友好的链接•屏蔽死链接、404错误页•屏蔽无内容、无价值页面•屏蔽重复页面,如评论页、搜索结果页•引导蜘蛛抓取网站地图
robots.txt的语法?
•User-agent: (定义搜索引擎)示例:
User-agent: * (定义所有搜索引擎)
User-agent: Googlebot (定义谷歌,只允许谷歌蜘蛛爬行)
User-agent: Baiduspider (定义百度,只允许百度蜘蛛爬行)
不同的搜索引擎的搜索机器人有不同的名称,谷歌:Googlebot、百度:Baiduspider、MSN:MSNbot、Yahoo:Slurp。
•Disallow: (用来定义禁止蜘蛛爬行的页面或目录)示例:
Disallow: / (禁止蜘蛛爬行网站的所有目录"/"表示根目录下)
Disallow:/admin (禁止蜘蛛爬取/admin目录)
Disallow: /abc.html (禁止蜘蛛爬去abc.html页面)
Disallow: /help.html (禁止蜘蛛爬去help.html页面)
•Allow:(用来定义允许蜘蛛爬取的页面或子目录)示例:
Allow: /admin/test/ (允许蜘蛛爬取admin下的test目录)
Allow: /admin/abc.html (允许蜘蛛爬去admin目录中的abc.html页面)
img
crossdomain.xml
跨域,顾名思义就是需要的资源不在自己的域服务器上,需要访问其他域服务器。跨域策略文件是一个xml文档文件,主要是为web客户端(如Adobe Flash Player等)设置跨域处理数据的权限。打个比方说,公司A部门有一台公共的电脑,里面存放着一些资料文件,专门供A部门内成员自己使用,这样,A部门内的员工就可以访问该电脑,其他部门人员则不允许访问。如下图:
img
A部门的员工可以任意访问A部门的公共电脑,但是不能直接访问B部门的公共电脑。有一天,B部门领导觉得他们的资料非常有用,想要与A部门分享,于是就给A部门一个令牌,这样A部门的员工也可以访问B部门的公共电脑了。A部门可访问B部门设置访问权限,这个权限设置就是跨域策略文件crossdomain.xml存在的意义。
crossdomin.xml 示例文件如下,重点查看allow-access-from
字段获取网站目录信息
img
sitemap.xml
Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
img
源代码泄露
.git源代码泄露
Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
利用工具:GitHack
项目地址:https://github.com/BugScanTeam/GitHack
扫描目录:
img
使用GitHack工具成功恢复代码
img
.cvs源代码泄露
CSV是一个C/S系统,多个开发人员通过中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。主要是针对CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。
返回根信息:http://www.example.com/CVS/Root
返回所有文件的结构:http://www.example.com/CVS/Entries
漏洞利用工具:dvcs-ripper
项目地址:https://github.com/kost/dvcs-ripper.git
运行示例:
代码语言:javascript复制rip-cvs.pl -v -u http://www.example.com/CVS
.svn源代码泄露
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要地方源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露在外网环境,可以使用.svn/entries文件,获取到服务器源码。
漏洞利用工具:
Seay SVN漏洞利用工具
img
SvnExploit
项目地址:https://github.com/admintony/svnExploit/
扫描站点存在/.svn/entries目录
img
成功恢复代码
img
.hg源代码泄露
Mercurial是一种轻量级分布式版本控制系统,使用hg init的时候会生成.hg。
漏洞利用工具:dvcs-ripper
项目地址:https://github.com/kost/dvcs-ripper.git
运行示例:
代码语言:javascript复制rip-cvs.pl -v -u http://www.example.com/.hg/
.DS_store文件泄露
.DS_store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_store上传部署到服务器,可能造成文件目录结构泄露,特别是备份文件、源代码文件。
漏洞利用工具:ds_store_exp
项目地址:https://github.com/lijiejie/ds_store_exp
运行示例:
代码语言:javascript复制ds_store_exp.py http://xxx.com/.DS_Store
网站备份文件泄露
管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。常见的备份文件后缀:.rar
、.zip
、.7z
、.tar.gz
、.bak
、.txt
、.old
、.temp
SWP文件泄露
swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为.filename.swp。
WEB-INF/web.xml泄露
WEB-INF是Java的Web应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含以下文件或目录:
•WEB-INF/web.xml:Web应用程序配置文件,描述了servlet和其他的应用组件及命名规则•WEB-INF/database.properties:数据库配置文件•WEB-INF/classes/:一般用来存放Java类文件(.class)•WEB-INF/lib/:用来存放打包好的库(.jar)•WEB-INF/src/:用来存放源代码
通过找到 web.xml 文件,推断 class 文件的路径,最后直接下载 class 文件,再通过反编译 class 文件,得到网站源码。
敏感目录收集方式
网页中寻找
•在robots.txt中看能否发现敏感目录•F12源代码链接处•通过查看一些图片的属性路径,运气好会发现很多隐藏的目录 结合域名 目录,用御剑进行扫描,当然也可以手动输入一些常见的后台管理地址进行访问。
其他端口中寻找
有时候网站的不同端口中有一些便是专门的后台管理地址。根据经验总结,很多网站8080、8081端口是网站的管理地址。
例如:http://www.xxx.com:8080
网站分目录下寻找
有的时候网站会把管理地址放在一个分目录下,有的时候一个网站比较大,后台管理页面也比较多,就要分目录的去找,
例如:http://www.xxx.com/test/admin/manage.php
你可以通过一些方式获取到网站的目录,然后在这个目录下进行扫描。当一个网站你扫描根目录没有任何收获时,这个时候通过分析网站的目录结构,然后扫描域名 目录,就能找出它的后台管理地址。
子域名下寻找
有的时候网站的管理地址会放在子域名下,所以主站什么都找不到的情况下,如果发现子域名,就通过这些方法去子域名下找一下吧。
例如:http://admin.xxx.com/login
Google Hacking
Google Hacking 一般是做为黑客在入侵时的一个手段.在入侵过程中有时需要查找后台的登陆口就需要用到Google Hacking。有时猜解密码的时候谷歌也是提供查找管理员资料的有效平台。是一种社会工程学获取目标信息的手段。可以用于跟踪某对象在网络上的各种踪迹(如交友平台、微博等)。
有关谷歌语法的介绍可参考第一章的第一节:1.开源情报与搜索引擎
网站爬虫
通过awvs,burpsuite的爬行功能,可以拓扑出网站的目录结构,有的时候运气好能在网页的目录结构中找到好东西,不过爬行一般会结合工具扫描,比如你构造域名 目录,然后扫描这个。
burp spider爬行
img
扫描工具
御剑后台扫描工具
御剑是一款针对网站目录及后台管理地址进行扫描的工具。该工具的开发思路其实是非常简单的,而工具里目录或者后台管理地址等的扫描用例才是一个黑客多年经验的结晶。
img
DirBuster
DirBuster是OWASP(Open Web Application Security Project)开发的一款专门用于探测Web服务器目录及隐藏文件的,功能十分强大的工具。DirBuster最擅长目录的暴力猜解,因此,DirBuster一般都会发现一些目录浏览、目录遍历及目录穿越等漏洞,甚至还会发现一些后台管理地址等。
3b2fca51126d0f343b1cb86a1085d9a9.png
wwwscan
wwwscan是一款网站后台扫描工具,简单好用又强大。它有命令行和图形界面两种。
e22f74eaee18b731c5453b0e79f8e294.png
dirb
Kali Linux内置工具
dirb是一个基于字典的web目录扫描工具,会用递归的方式来获取更多的目录,它还支持代理和http认证限制访问的网站。
运行示例:
代码语言:javascript复制dirb http://www.baidu.com
dirmap
一个高级web目录扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑
项目地址:https://github.com/H4ckForJob/dirmap
运行示例:
代码语言:javascript复制python3 dirmap.py -i https://target.com -lcf
Cansina
Cansina是用python写的一款探测网站的敏感目录和内容的安全测试工具
项目地址:https://github.com/deibit/cansina
运行示例:
代码语言:javascript复制python3 cansina.py -u http://baidu.com
dirsearch
dirsearch是一个python开发的目录扫描工具,目的是扫描网站的敏感文件和目录从而找到突破口。
项目地址:https://github.com/maurosoria/dirsearch/
运行示例:
代码语言:javascript复制python3 dirsearch.py -u http://www.baidu.com -e php,js --exclude-status 403,401
weakfilescan
基于爬虫,动态收集扫描目标相关信息后进行二次整理形成字典规则,利用动态规则的多线程敏感信息泄露检测工具。
项目地址:https://github.com/ring04h/weakfilescan
运行示例:
代码语言:javascript复制python wyspider.py http://wuyun.org php