信息收集概述
信息收集一般都是渗透测试前期用来收集,为了测试目标网站,不得不进行各种信息收集。信息收集要根据不同目标进行不同方向收集,工具部分会在下节课程进行讲解,根据个人渗透测试经验总结文章。本文只是抛砖引玉,希望可以给大家一个好的思路。如果文章中有环境搭建部分,靶场后续会在公众号中发布。视频在关注公众号以后,回复我要视频,管理员会在最快时间进行回复。
首先公开上一节中一张图,开始今天主题讲解。
信息收集思维导图
信息收集
1、robots.txt
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt
,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
robots.txt
基本上每个网站都用,而且放到了网站的根目录下,任何人都可以直接输入路径打开并查看里面的内容,如http://127.0.0.1/robots.txt ,该文件用于告诉搜索引擎,哪些页面可以去抓取,哪些页面不要抓取。
为了让搜索引擎不要收录admin
页面而在robots.txt
里面做了限制规则。但是这个robots.txt
页面未对用户访问进行限制,可任意访问,导致可通过该文件了解网站的结构,比如admin目录、user目录等等。
怎样即使用robots.txt
的屏蔽搜索引擎访问的功能,又不泄露后台地址和隐私目录呢?
有,那就是使用星号(/*)作为通配符。举例如下:
代码语言:javascript复制User-agent:*
Disallow: /a*/
这个设置,禁止所有的搜索引擎索引根目录下a开头的目录。当然如果你后台的目录是admin
,还是有可以被人猜到,但如果你再把admin
改为adminzvdl
呢?
2、网站备份压缩文件
管理员在对网站进行修改、升级等操作前,可能会将网站或某些页面进行备份,由于各种原因将该备份文件存放到网站目录下,该文件未做任何访问控制,导致可直接访问并下载。可能为.rar、zip、.7z、.tar.gz、.bak、.txt、.swp
等等,以及和网站信息有关的文件名www.rar、web.rar
等等
3、Git导致文件泄露
由于目前的web
项目的开发采用前后端完全分离的架构:前端全部使用静态文件,和后端代码完全分离,隶属两个不同的项目。表态文件使用 git 来进行同步发布到服务器,然后使用nginx
指向到指定目录,以达到被公网访问的目的。
在运行git init
初始化代码库的时候,会在当前目录下面产生一个.git
的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git
这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码
4、DS_store导致文件泄露
.DS_Store
是Mac
下Finder
用来保存如何展示文件//文件夹的数据文件,每个文件夹下对应一个。
由于开发/设计人员在发布代码时未删除文件夹中隐藏的.DS_store
,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。
我们可以模仿一个环境,利用phpstudy
搭建PHP
环境,把.DS_store
文件上传到相关目录。
然后利用工具进行相关检测
工具下载地址:https://github.com/lijiejie/ds_store_exp
为了让实验更真实,我们在本地搭建环境,然后建立一个文件夹为admin和一个hello文件夹,利用该工具运行完以后,查看工具文件夹查看有什么结果。
此文件和我们在一个文件夹内,如果是苹果用户,把文件copy到相关服务器目录以后,都会默认带一个文件.DS_Store
。首先访问test.php
文件,查看环境是否成功。
环境搭建成功
我们利用工具进行测试,运行完如上图,运行完以后我们可以到工具目录进行查看
这是一个.DS_Store
文件泄漏利用脚本,它解析.DS_Store
文件并递归地下载文件到本地。
5、SVN导致文件泄露
Subversion
,简称SVN
,是一个开放源代码的版本控制系统,相对于的RCS、CVS
,采用了分支管理系统,它的设计目标就是取代CVS
。互联网上越来越多的控制服务从CVS
转移到Subversion。
Subversion
使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion
仓库,另一端是Subversion
的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)
的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH
等,或本地文件的方式来对仓库进行操作。
SVN漏洞在实际渗透测试过程中,利用到也比较多,由于一些开发管理员疏忽造成,原理类似DS_Store漏洞。我们这里不再进行搭建环境,给大家推荐工具,利用方法如下:
1) 漏洞利用工具:
Seay SVN
漏洞利用工具 2) 添加网站url
在被利用的网址后面加 /.svn/entries,列出网站目录,甚至下载整站
下载地址:https://pan.baidu.com/s/1jGA98jG
6、WEB-INF/web.xml泄露
WEB-INF
是Java
的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中 /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件 /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。 /WEB-INF/database.properties:数据库配置文件
原因: 通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取
6.1、环境搭建
我们需要利用jsp源码给大家进行示范,所以前提需要下载一个jsp环境,这里我们选取jspstudy进行示范。下载地址:http://www.phpstudy.net/phpstudy/JspStudy.zip
另外一种方法就是直接下载webgoat然后执行文件中webgoat.bat文件即可
下载地址:http://sourceforge.net/projects/owasp/files/WebGoat/WebGoat5.2/
6.2、访问页面
访问地址:http://localhost/,
进入此页面,证明我们tomcat已经启动,我们查看一下web.xml目录在哪里,你可以练习此靶场,靶场在后续会进行讲解。这里我们只讲解此web.xml信息泄露漏洞。如果让用户设置权限不严格,造成一些目录列出,结果是非常严重,我们通过访问web.xml文件,可以查看一些敏感信息,如下图
6.3、扫描
利用工具扫描,我们得知此目录下面有一些敏感文件,我们尝试去访问
6.4、验证结果
首先是一些tomcat登录信息,我们尝试去访问一些其它文件,通过不断尝试目录,有发现了一个sql文件和xml文件。
7、Zoomeye搜索引擎使用
ZoomEye
支持公网设备指纹检索和 Web 指纹检索
网站指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据库等。
设备指纹包括应用名、版本、开放端口、操作系统、服务名、地理位置等
7.1、搜索规则
首先,我们讲解下相关的快捷键,提高使用效率
- Shift //: 显示快捷帮助
- Esc: 隐藏快捷帮助
- Shift h: 回到首页
- Shift s: 高级搜索
- s: 聚焦搜索框
7.2、搜索技巧
在设备和网站结果间切换
ZoomEye 将默认搜索公网设备,搜索结果页面左上角有公网设备和 Web 服务两个连接。因此您可以快速切换两种结果。
在输入关键字时,自动展开的智能提示下拉框最底部有两个指定搜索的选项。用方向键选定其中一个,回车即可执行搜索。
ZoomEye
使用 Xmap
和 Wmap
:两个能获取 Web 服务 和公网设备指纹的强大的爬虫引擎定期全网扫描,抓取和索引公网设备指纹。
同样zoomeye也存在一个高级搜索,只需填写你想查询的内容即可,这里不在做过多的介绍。
7.3、实战搜索
我们今天主要讲下如何使用他的语法规则去高级搜索,搜索有用信息。
- 主机设备搜索组件名称
app: 组件名 ver: 组件版本
例1:搜索使用iis6.0主机:app:"Microsoft-IIS" ver"6.0"
,可以看到0.6秒搜索到41,781,210左右的使用iis6.0的主机。
例2:搜索使weblogic主机:app:"weblogic httpd" port:7001
,可以看到0.078秒搜索到42万左右的使用weblogic的主机。
- 端口
port: 开放端口
搜索远程桌面连接:port:3389
下面我们搜索下开放ssh功能的服务器:port:22
例1:查询开放3389端口的主机:port:3389
同理查询22端口开放主机:port:22
- 操作系统
os: 操作系统
。
例:os:linux
,查询操作系统为Linux系统的服务器
同样,可以查看与Linux相关的漏洞
- 服务
service: 结果分析中的“服务名”字段。
完整的“服务名”列表,请参阅 https://svn.nmap.org/nmap/nmap-services
例1:公网摄像头:service:”routersetup”
- 位置
country: 国家或者地区代码。 city: 城市名称。
完整的国家代码,请参阅: 国家地区代码 - 维基百科
例1:搜索美国的 Apache 服务器:app:Apache country:US
- IP 地址
ip: 搜索一个指定的 IP 地址
例:搜索指定ip信息,ip:121.42.173.26
- CIDR
CIDR(无类别域间路由,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来, 使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
例1:IP 的 CIDR 网段。CIDR:114.114.114.114/8
- Web应用搜索
这里只讲解Web应用的查询方法
site:网站域名。
例子:查询有关taobao.com域名的信息,site:taobao.com
title:标题中包含该字符的网站
例:搜索标题中包含该字符的网站,title:weblogic
keywords: <meta name="Keywords">定义的页面关键词。
例子:keywords:Nginx
desc: <meta name="description">定义的页面说明。
例子:desc:Nginx
8、bing搜索引擎使用
filetype:仅返回以指定文件类型创建的网页。
若要查找以PDF格式创建的报表,请键入主题,后面加filetype:pdf
inanchor:、inbody:、intitle: 这些关键字将返回元数据中包含指定搜索条件(如定位标记、正文或标题等)的网页。为每个搜索条件指定一个关键字,您也可以根据需要使用多个关键字。 若要查找定位标记中包含msn、且正文中包含seo和sem的网页,请键入
例:inanchor:msn inbody:seo inbody:sem
site:返回属于指定网站的网页。若要搜索两个或更多域,请使用逻辑运算符OR对域进行分组。
您可以使用site:搜索不超过两层的Web域、顶级域及目录。您还可以在一个网站上搜索包含特定搜索字词的网页。
url:检查列出的域或网址是否位于Bing索引中。
请键入url:sec-redclub.com
9、Fofa搜索
下面我们讲下另一款搜索引擎:Fofa 地址:https://fofa.so/
首先我们了解下他的语法
可以看到有许多查询语法,这里我们只介绍几个常用的语句
引用:该专题分为数据库专题模块与工控专题模块。在数据库专题模块,包含了检索大部分的数据库服务与协议的规则;在工控专题模块,提供了在世界上广泛使用的工业控制协议的介绍与检索。在模块内部您可以通过点击相关链接的方式进行协议或服务的快速查询。
protocol="https"
,搜索指定协议类型
app="phpinfo"
搜索某些组件相关系统
hos/t="sec-redclub.com/"
搜索包含有特定字符的URL
title="powered by" && title!=discuz
搜索网页标题中包含有特定字符的网页
title="powered by" && os==windows
搜索网页标题中包含有特定字符并且系统是windows的网页
10、站长工具
10.1、站长工具Whois
使用站长工具Whois可以查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)
http://tool.chinaz.com/
10.2、seo综合查询
seo综合查询可以查到该网站各大搜索引擎的信息,包括收录,反链及关键词排名,也可以一目了然的看到该域名的相关信息,比如域名年龄相关备案等等,及时调整网站优化等等。
http://seo.chinaz.com/
10.3、站长工具tool
可以看到有些加密/解密功能,例如MD5、url、js、base64加解密等等
1、whois查询网站及服务器信息
如果知道目标的域名,你首先要做的就是通过Whois数据库查询域名的注册信息,Whois数据库是提供域名的注册人信息,包括联系方式,管理员名字,管理员邮箱等等,其中也包括DNS服务器的信息。
默认情况下,Kali
已经安装了Whois
。你只需要输入要查询的域名即可:
利用以上收集到的邮箱、QQ、电话号码、姓名、以及服务商,可以针对性进行攻击,利用社工库进行查找相关管理员信息,另外也可以对相关DNS服务商进行渗透,查看是否有漏洞,利用第三方漏洞平台,查看相关漏洞。
2、Dig使用
可以使用dig命令对DNS服务器进行挖掘。
Dig命令后面直接跟域名,回车即可
Dig常用选项
- -c 选项,可以设置协议类型(class),包括IN(默认)、CH和HS。
- -f 选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:
- -4 和-6 两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。
- -t 选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型,来一个例子:
- -q 选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。-q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:
- -x 选项,是逆向查询选项。可以查询IP地址到域名的映射关系。举一个例子:
跟踪dig全过程
dig非常著名的一个查询选项就是 trace
,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来
精简dig输出
使用 nocmd
的话,可以节省输出dig版本信息。
Dig可以用来查域传送漏洞,前面介绍了dig的使用,若将查询类型设定为axfr,就能得到域传送数据。这也是我们要用来测试DNS域传送泄露的命令.
3、Nslookup用法
nslookup
是站长较为常用的工具之一,它甚至比同类工具dig的使用人数更多,原因是它的运行环境是windows,并且不需要我们再另外安装什么东西。dig是在linux
环境里运行的命令,不过也可以在windows环境里使用,只是需要安装dig windows版本的程序。
Nslookup
命令以两种方式运行:非交互式和交互式。
本文第一次提到“交互式”的概念,简单说明:交互式系统是指执行过程中允许用户输入数据和命令的系统。而非交互式系统,是指一旦开始运行,不需要人干预就可以自行结束的系统。因此,nslookup
以非交互式方式运行,就是指运行后自行结束。而交互式,是指开始运行后,会要求使用者进一步输入数据和命令。
类型
- A 地址记录
- AAAA 地址记录
- AFSDB Andrew文件系统数据库服务器记录
- ATMA ATM地址记录
- CNAME 别名记录
- HINFO 硬件配置记录,包括CPU、操作系统信息
- ISDN 域名对应的ISDN号码
- MB 存放指定邮箱的服务器
- MG 邮件组记录
- MINFO 邮件组和邮箱的信息记录
- MR 改名的邮箱记录
- MX 邮件服务器记录
- NS 名字服务器记录
- PTR 反向记录
- RP 负责人记录
- RT 路由穿透记录
- SRV TCP服务器信息记录
- TXT 域名对应的文本信息
- X25 域名对应的X.25地址记录
例如
1.设置类型为ns
2.下面的例子查询baidu.com使用的DNS服务器名称:
3.下面的例子展示如何查询baidu.com的邮件交换记录:
4.查看网站cname值。
5.查看邮件服务器记录(-qt=MX)
6.同样nslookup也可以验证是否存在域传送漏洞,步骤如下:
代码语言:javascript复制nslookup 进入交互式模式
Server 设置使用的DNS服务器
ls 命令列出某个域中的所有域名
4、fierce工具
在进行了基本域名收集以后,如果能通过主域名得到所有子域名信息,再通过子域名查询其对应的主机IP,这样我们能得到一个较为完整的信息。除了默认使用,我们还可以自己定义字典来进行域名爆破。
使用fierce
工具,可以进行域名列表查询:fierce -dns domainName
输出结果表明,程序首先进行了域传送测试,域传送通过一条命令就能获取服务器上所有的域名信息。如果一次就能简单获取服务器上所有记录域名信息,就不再暴力破解。
但从结果上看,“Unsucessful in zone transfer
”,
域传送测试是失败了。接着执行暴力破解,测试的数量取决于字典中提供的字符串数量,上例中没有指定字典,在默认情况下在Kali中使用/usr/share/fierce/hosts.txt
。
一个内部网络的DNS域名服务器可以提供大量信息,这些信息可以在以后评估网络漏洞。
5、theHarvester的使用
theHarvester
是一个社会工程学工具,它通过搜索引擎、PGP服务器以及SHODAN数据库收集用户的email,子域名,主机,雇员名,开放端口和banner信息。
- -d 服务器域名
- -l 限制显示数目
- -b 调用搜索引擎(baidu,google,bing,bingapi,pgp,linkedin,googleplus,jigsaw,all)
- -f 结果保存为HTML和XML文件
- -h 使用傻蛋数据库查询发现主机信息
实例1
theHarvester -d sec-redclub.com -l 100 -b baidu
实战2
输出到html文件中,可以更清晰的看到搜索的网站信息的模型。
theHarvester -d sec-redclub.com -l 100 -b baidu -f myresults.html
6、DNS枚举工具DNSenum
DNSenum
是一款非常强大的域名信息收集工具。它能够通过谷歌或者字典文件猜测可能存在的域名,并对一个网段进行反向查询。它不仅可以查询网站的主机地址信息、域名服务器和邮件交换记录,还可以在域名服务器上执行axfr请求,然后通过谷歌脚本得到扩展域名信息,提取子域名并查询,最后计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。
本小节将介绍使用DNSenum工具检查DNS枚举。在终端执行如下所示的命令:
输出的信息显示了DNS服务的详细信息。其中,包括主机地址、域名服务地址和邮件服务地址,最后会尝试是否存在域传送漏洞。
使用DNSenum工具检查DNS枚举时,可以使用dnsenum的一些附加选项,如下所示。
- --threads [number]:设置用户同时运行多个进程数。
- -r:允许用户启用递归查询。
- -d:允许用户设置WHOIS请求之间时间延迟数(单位为秒)。
- -o:允许用户指定输出位置。
- -w:允许用户启用WHOIS请求。
7、subDomainsbrute二级域名收集
二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称;在国家顶级域名下,它是表示注册企业类别的符号。
我国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。
在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共7个,包括用于科研机构的ac;国际通用域名com、top;用于教育机构的edu;用于政府部门的gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。
以上为工具默认参数,如果是新手,请直接跟主域名即可,不用进行其它设置。
Python subDomainsbrute.py sec-redclub.com
就可以直接运行,等待结果,最后在工具文件夹下面存在txt文件,直接导入扫描工具就可以进行扫描了。
8、layer子域名检测工具
layer子域名检测工具主要是windows一款二级域名检测工具,利用爆破形式。
工具作者:http://www.cnseay.com/4193/
域名对话框直接输入域名就可以进行扫描了,工具显示比较细致,有域名、解析ip、cnd列表、web服务器和网站状态,这些对于一个安全测试人员,非常重要。如下操作:
会显示大部分主要二级域名。
9、Nmap
Nmap
是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
功能
- 主机发现
- 端口扫描
- 版本侦测
- OS侦测
部署方式
- Kail集成环境
- 单独安装(使用yum、apt-get工具直接安装)
- PentestBox环境
- Windows版等等
Nmap使用
Nmap的参数和选项繁多,功能非常丰富。我们先来看一下Nmap的通用命令格式:Nmap<扫描选项><扫描目标>
(详细教程及下载方式参见:http://nmap.org/)
主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK
报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO
包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
主机发现的基本用法
- -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
- -sn: Ping Scan 只进行主机发现,不进行端口扫描。
- -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
- -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
- -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
- -PO[protocollist]: 使用IP协议包探测对方主机是否开启。
- -sP: Ping 指定范围内的 IP 地址
- -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
- --dns-servers <serv1[,serv2],...>: 指定DNS服务器。
- --system-dns: 指定使用系统的DNS服务器
- --traceroute: 追踪每个路由节点
扫描局域网192.168.80.1/24
范围内哪些IP的主机是活动的。命令如下:nmap –sn 192.168.80.1/24
由图可知:192.168.80.1
、192.168.80.254
、192.168.80.166
三台主机处于存活状态。
扫描局域网192.168.80.100-200
范围内哪些IP的主机是活动的。命令如下:nmap –sP 192.168.80.100-200
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:
- open:端口是开放的。
- closed:端口是关闭的。
- filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
- unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
- open|filtered:端口是开放的或被屏蔽。
- closed|filtered:端口是关闭的或被屏蔽。
端口扫描方面非常强大,提供了很多的探测方式:
- TCP SYN scanning
- TCP connect scanning
- TCP ACK scanning
- TCP FIN/Xmas/NULL scanning
- UDP scanning
- 其他方式
- -sS/sT/sA/sW/sM: 指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
- -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
- -sN/sF/sX: 指定使用
TCP Null
,FIN
,and Xmas
scans秘密扫描方式来协助探测对方的TCP端口状态。 - --scanflags <flags>: 定制TCP包的flags。
- -sI zombiehost[:probeport]: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
- -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
- -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
- -b <FTP relay host>: 使用FTP bounce scan扫描方式
- -p: 指定端口扫描
在此,我们以主机192.168.80.166为例。命令如下:nmap -sS -p0-65535 -T4 192.168.80.166
参数-sS
表示使用TCP SYN方式扫描TCP端口;-p0-65535
表示扫描所有端口;-T4
表示时间级别配置4级;
扫描特定端口是否开放:nmap -p21,80,445,3306 192.168.80.166
简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:
- 首先检查
open
与open|filtered
状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。 - 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件
nmap-services-probes
中Probe TCP NULL q||
对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner
与nmap-services-probes
中NULL
probe中的签名进行对比。查找对应应用程序的名字与版本信息。 - 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
- 如果是UDP端口,那么直接使用
nmap-services-probes
中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。 - 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
- 如果探测到应用程序是SunRPC,那么调用
brute-force RPC grinder
进一步探测具体服务。 - -sV: 指定让Nmap进行版本侦测
- --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
- --version-light: 指定使用轻量侦测方式 (intensity 2)
- --version-all: 尝试使用所有的probes进行侦测 (intensity 9)
- --version-trace: 显示出详细的版本侦测过程信息。
对主机192.168.80.166
进行版本侦测。命令如下:nmap -sV -p0-65535 -T4 192.168.80.166
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
- -O: 指定Nmap进行OS侦测。
- --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
- --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。
命令:nmap –O 192.168.80.166
- -vv: 详细显示扫描状态
nmap -p21,80,445,3306 -vv 192.168.80.166
- --script: 使用nse脚本,也可自行编写nse脚本,nmap有580多个脚本
nmap --script=auth 192.168.80.166
- --script=brute: 对弱口令进行暴力破解
nmap --script=brute 192.168.80.166
- --script=default: 使用默认nse脚本搜集应用的信息
nmap --script=default 192.168.80.166
- --script=vuln: 检测常见漏洞
nmap --script=vuln 192.168.80.166
优劣势
优势:
- 功能灵活强大,支持多种目标,大量计算机的同时扫描;
- 开源,相关帮助文档十分详细;
- 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
劣势:
- Nmap参数众多,难以一一记忆;
10、DirBuster
DirBuster是一款路径及网页暴力破解的工具,可以破解出一直没有访问过或者管理员后台的界面路径。Java运行环境 DirBuster程序包
- 双击运行
DirBuster.jar
- 在URL中输入目标URL或者主机IP地址
- 在
file with list of dirs/files
栏后点击browse,选择破解的字典库为directory-list-2.3-small.txt
- 将File extension中填入正确的文件后缀,默认为
php
,如果为jsp
、asp
、aspx
页面,需要填入jsp
、asp
、aspx
- 同样可以选择自己设置字典,线程等等
- 其他选项不变,点击右下角的start,启动目录查找
- 观察返回结果,可点击右下角的report,生成目录报告
优点:
- 敏感目录发掘能力强
- OWASP安全机构极力推荐
缺点:
- 探测目录依赖字典文件