二、主动信息收集
(一)服务器信息收集
1.获取IP地址
(1)cmd命令
nslookup domain
ping domain
注:访问网站时,我们会发现可能存在多个IP地址给出回应,这与CDN技术有关,CDN技术是被动信息收集转向主动信息收集的重要的一环。
(2)CDN技术
2.CDN技术——以智慧树网站为例 www.zhihuishu.com
概念:内容分发网络,内容缓存加速技术,对于icp来说是增益作用,但是对于渗透测试人员,会形成干扰。
原理:如果一个网址的服务器在北京,那么广州的用户访问肯定会比北京的用户慢,用户体验感不好,且服务器的压力过大。所以可以将内容缓存在ICP中,服务器的压力变小,用户加载速度变快。
因此,对于渗透测试,我们需要对CDN进行处理,绕过CDN来查找真实IP。
(1)CDN检测
站长之家:使用其在各地的服务器向域名发出ping请求,根据响应的消息的IP来判断是否有多个服务器。https://ping.chinaz.com
爱站网:网站测速工具_超级ping _多地点ping检测 - 爱站网 (aizhan.com)
有的时候可能会不好使,不好使的时候换一个。
(2)绕过CDN,获取真实IP
子域名查询:子域名可能跟主站在同一个服务器或者同一C段网络,CDN加速的是域名,不是IP,子域名没有进行CDN,子域名的IP暴露了,主域名的IP也暴露了。
查询域名的历史DNS解析信息:分析哪些IP不在现在的CDN解析IP里面,就有可能是之前没有加CDN加速时的真实IP。IP History - ViewDNS.info
注:没有一种绕过CDN的方法是一击即中的,要通过多种方法尝试和对比,才能找到真实的IP。
SSL证书寻找真实IP :打开要查询的网址,然后点击url前面锁头型标,选择连接安全,查看右上角证书,复制证书,然后放入证书查询网站里。Hosts Search - Censys
网址需要注册一下,才能查看。我们查看ssl证书的主要目的是寻找和主站使用同一套证书的旁站,通过旁站来判断主站的IP。
国外主机解析域名:因为CDN技术需要很大的资金,对于大部分只在国内使用的网站来说,使用国外网站去ping,一般是没有进行CDN加速的,所以我们可以尝试使用国外主机ping地址查看IP。可以选一些比较冷门的城市,太热门的国外城市也有可能会有CDN技术存在。 https://www.nodecook.com/zh
然后我们发现,国外ping之后,还是有很多来源,看来智慧树在国外也是用了CDN技术,那么我们首先就能排除IP地址在国外的了,它的真实IP地址不可能在国外,说明国外IP都是经过CDN技术处理过的。
然后我们回看一下,发现他的CDN运营商是阿里云,然后查看他的ip历史,发现有一个杭州阿里巴巴服务,所以可以合理怀疑一下,那个是否是他的真实IP。
注:这里只是合理猜测,每个人的猜测方式不同,想法不同,可以通过多测尝试和排查找出规律,没有绝对可以的绕过CDN的方式。
第三方接口查询:Get Site IP - Find IP Address and location from any URL (get-site-ip.com)
这里的地址给出是杭州,与我们之前猜测,服务器有可能在杭州结果一致,但是地址不同,所以我们还需要继续分析一下。
配置不当导致绕过:例如有些网站可以使用www.example.com访问,同时使用example.com/ m.example.com也都可以访问,但是这时候其实只有www.example.com使用了CDN技术,那么我们一下子就能找到它的真实IP。
邮件反馈查询:很多网站都会提供练习我们,以邮件的方式,二邮件系统应该是他们服务器下的子系统,当我们给他们发送消息时,他们会回应邮件给我们,我们可以借机查看一下邮件的IP地址,有可能和网站在同一c段网下甚至同一台主机上。
漏洞泄露:文件上传漏洞、SQL注入漏洞,获取到服务器的信息,这些信息中就有服务器的真实 IP。
DDos攻击:以量打量,CDN的数量是有限的,我们不停的发申请使其资源耗尽,不能再使用CDN技术,只能使用真实IP发送消息。注意!!这种行为是犯法的,只要发起DDos攻击就是违法行为,所以不要尝试。
最后:还是没有一种方法可以直接使用,绕过CDN获得真实IP,都是需要相互验证的,需要基于被动信息收集做辅助,也需要经验积累和自我分析,多次尝试。
3.旁站查询
如果旁站和主站是在同一内网中,拿下旁站,就能拿下主站。如果不在同一内网,可以尝试内网渗透。
同IP网站查询,C段查询,IP反查域名,在线C段,旁站工具 - WebScan
4.C段查询
C段是指IP地址的第三个字节(比如说:192.168.1.x或者10.0.0.x),通常来说是包含256个不同ip地址。也有可能是A/B段查询,有些大公司可能使用B/A网段服务器。
C段就是和目标服务器在同一个网段的其他服务器。通过对C段中的所有IP地址进行扫描和探测,可以发现与目标服务器相关的其他服务器和服务。
查看我们之前怀疑的两个地址的旁站和C段,发现它使用的是阿里云的服务器,可能不太好找,阿里云的IP地址有很多。
然后我们通过查询他们网站信息发现他们的总部在上海,而之前历史记录查询有一个上海的IP地址,可以查询一下。
发现是上海教育网,有可能这是智慧树的真实IP。
5.获取端口信息、服务信息、漏洞信息
(1)思路
IP存活扫描,即主机扫描,查看主机是否存活—>端口扫描,检测目标主机开放了哪些服务—>服务扫描,检测服务的具体信息(版本/指纹)—>漏洞扫描,检测目标服务存在哪些漏洞。
信息收集的目的就是为了寻找漏洞,进行漏洞检测进而修复漏洞。
但是注意!我们下面说到的工具,不要随便扫别人的主机,只要涉及到扫描,且下面的手段属于恶意扫描,会占用服务器的资源,属于违法行为,所以,如果想测练习可以扫描自己的虚拟机,或者和你的同伴互相扫描。
(2)软件 使用我的虚拟机为例:IP为192.168.213.137
nmap
安装可以上网上搜一下教程,这里就不说明了。然后他有两种操作方式,一种是图形化界面,另一种是终端,在文件夹搜索框搜索cmd,进入终端。
特点:可以进行任何扫描,包括端口扫描、服务扫描、ping扫描以及漏洞扫描等任何扫描,功能比较全;但是它的扫描特征也十分明显,很容易被发现。
下面我们具体看一下使用语句:
C段扫描:nmap -sP ip/24 (-oN result.txt) 这里的ip指的是后缀为0的,扫描这个网段,括号内的内容可以不写,也可以写,意思是将结果存在result文件中。
-sP/ -sn:不进行端口扫描 ping扫描
-p:指定端口扫描,1-65535是全部端口号
-sV:显示服务的详细版本
-Pn:不做ping的扫描 因为有的服务器可能禁止ping行为,如果使用ping可能一个主机都找不到。
漏洞扫描:nmap -sV --script vuln -min-rate=2000 X.X.X.X --script vlun为调用script中的漏洞模块;-min-rate为扫描速度。
使用-sP查看192.168.213.0网段存在的主机,然后发现我的虚拟机137,接着查看它开放的端口号。
发现5个端口开放,可以尝试扫描一下这五个端口是否有漏洞。
扫描漏洞的时候,显示他的风险因素为high,说明可能存在漏洞攻击点,后续可以尝试。
我们介绍很多软件的原因是每个软件都有自己的特色和优势,在真正的漏洞测试以及攻防演练中,我们不可能只使用一种工具nmap,nmap有自己的致命的缺点——扫描特征太明显,很容易被发现,所以其实实战过程中常用的是以下几个。
masscan https://github.com/robertdavidgraham/masscan
同样,安装可以上网上搜一下教程,这里就不说明了。然后他的操作方式,在文件夹搜索框搜索cmd,进入终端。
特点:快速、高性能的开源端口扫描工具。扫描速度快,专门扫描端口,支持多种扫描模式,多线程处理,异步扫描。且因为是免费开源工具,用户可以根据需求查看和修改源代码,进行二次开发,更好的符合自己的使用。
基本扫描参数:
-p:指定扫描的端口范围
-P:设置目标主机的端口范围
-iL:从文件中读取目标主机IP地址
扫描速度和性能:
--rate:设置扫描速度,默认500数据包/秒
--max-rate:最大扫描速度 --min-rate:最小扫描速度
--randomize-hosts:随即扫描目标主机
输出格式:
-oL:以普通文本格式输出结果
-oJ:以json格式输出结果
-oG:以Grepable格式输出结果
网络探测:
--ping:ping扫描,检测存活主机。
--banners:获取主机服务的横幅信息。
基本配置:
--adapter:选择网络适配器
--router-mac:指定路由器的mac地址。
输入扫描语法,然后它显示too complex,后来仔细检查,发现输出文件格式的大小写有问题,应该注意是oL而不是OL;粗心导致的。
然后重新输入扫描语句,开始扫描。
然后查看一下result文件,查看到192.168.213.137主机开了五个端口。
fscan
也是一个扫描工具,但是需要基于go语言环境搭建,想要尝试的可以尝试一下。
御剑-后台扫描工具
图形化界面,整体没有前面几个工具好用,可能会存在漏扫或者扫描结果不准确等情况。我就是扫描了半天我的虚拟机,一个端口都没扫出来,大家可以试一试。
6.漏洞扫描
(1)xray_windows
下载:GitHub - chaitin/xray: 一款完善的安全评估工具,支持常见 web 安全问题扫描和自定义 poc | 使用之前务必先阅读文档
工具文档:开始扫描 - xray Documentation
工具文档中有使用的具体语法,有各种扫描的介绍,按照自己的需求操作即可。
证书配置:对https进行扫描需要对电脑或者浏览器配置证书。下载证书语句,终端运行一下即可:.\xray_windows_amd64.exe genca 。然后点击证书,按照步骤即可将证书导入电脑;Firefox浏览器证书导入在设置—>隐私与安全—>下翻有查看证书导入即可。
xray还有图形化界面的版本,喜欢图形化界面操作的可以看一下,没有终端好用,但是会更利于理解扫描原理。
例子:本地pikachu平台
执行语句:xray_windows_amd64.exe webscan --basic-crawler http://127.0.0.1/pikachu-master/ --html-output vuln.html
首先打开phpstudy将apche和mysql打开,确保pikachu网站能够使用,然后运行语句,进行漏洞扫描。
扫描的结果存储在vuln.html中,然后我们进去查看漏洞即可,但是值得说的是漏洞需要我们自己检查一下,它给出的都是有可能存在的漏洞,不一定真的有漏洞,需要核查,所有的漏洞扫描软件都一样。
(2)goby
漏洞扫描最好用的工具,是fofa旗下公司开发的,扫描、资产查询、漏洞扫描等功能都存在,可以联合很多我们介绍的软件一起使用,在扩展中,如:fofa、subdomain、xray等等。
goby有很多个版本,功能上没区别,区别在于poc库(poc为证明漏洞存在的代码)。免费版的poc很少,红队版和企业版poc库很全,但是对于大佬来说,没区别,因为可以自己梳理poc,所以在厉害的人手里,goby能实现任何功能,只要一个工具就够了,所以应该多多练习使用。
图形化界面很好操作,右上角加入新的扫描,IP填入要扫描的地址,端口根据正常需求选择,大多数选择常见端口,漏洞为通用poc,扫描序列为同时扫描,然后开始即可。
扫描我的虚拟机:192.168.213.137
知道了他的系统结构,底层是虚拟机,上面windows 5.2和Windowsxp,然后开放了4个端口以及分别是做什么的,没有漏洞。
扫描东北大学官网。neu.edu.cn
首先ping一下它的IP地址,然后开始扫描。
只扫描出了两个开放的端口,也没扫描到漏洞,看来安全做的挺好的。
然后我又使用了网址扫描一遍。
他给出了一个端口443,还有对应网址,发现和我ping的不太一样,所以可以扫描一下整个网段。
扫描后发现,还是没有漏洞,开放的端口也很少,看来还是安全性做的比较好。
然后我也尝试了扫描沈航,沈航的IP地址我没有查到,然后使用网址扫描的,直接显示没有东西可以扫描。但是我们可以结合之前oneforall的子域名扫描查询结果,发现他的子域名大多数在202.199.24.0/24网段下,所以我们可以对这个网段进行扫描,查看是否存在漏洞。还可以根据ksubdomain的结果进行扫描,可以对一些安全性没那么高的网站进行扫描,例如图书馆管理系统等。
(3)ARL灯塔ARL 资产灯塔系统安装和使用文档 (tophanttechnology.github.io)
本质上和goby没什么区别,有兴趣的可以下载试一试。
(二)网站信息收集
网站信息收集会比服务器信息收集更详细,和服务器信息收集有交叉,可以根据网站的架构或者端口内容等推测出它使用的架构或者搭建环境使用的工具,然后根据工具的通用漏洞进行漏洞攻击。
1.操作系统判断
(1)常见开放端口判断
Windows:80、445、3389、1433等,是Windows系统独有的端口,用于组管理、家庭管理和远程桌面管理等。
Linux:22 ssh。但是Linux这两个端口Windows也可能会开放,只不过大多数是Linux系统开放,只能大概猜测是Linux,不能确定,需要使用其他方法来确认。
Windows的查看方式:控制面板—>防火墙—>高级设置—>入站规则,就能查看到端口及对应服务,哪些是开放的,哪些是关闭的。
(2)大小写判断
Linux系统对大小写敏感,Windows对大小写不敏感,即网址写错了时,看是否能访问。
登一下我们本地的pikachu网站,我们已知他是Windows系统搭建的,看一下大小写是否有影响。原本的网址是这样的。
然后我们将某些字母改成大写,发现还是能将页面加载出来。
然后我们看一下知名小说网站的大小写。
将某些字母改成大写后发现它找不到了,说明他是Linux系统。
(3)TTL值判断
TTL:time to live 指生存时间,其实跟时间没关系,指的是跳数,即通过路由设备的个数,每经过一个路由设备转发,就会减一,到0被丢弃,原本的作用是防止出现环路,在这里也可以用来判断操作系统,不同操作系统TTL值不同。
Linux:64 Windows:128 ios:AR comware(网络环境):255
然后我们使用虚拟机Windows操作系统和Linux系统相互ping,看一下ttl。
可以看到ping140时,ttl=64,说明此主机是Linux系统,ping137时,ttl=128,说明是Windows系统,为什么两个ttl值一个都没少,因为两个在同一个网关内,不用经过路由设备即可联系。
2.网站数据库判断
(1)常见组合:
如果我们已知一个(服务器/数据库),就可以推测另一个。然后根据通用漏洞进行攻击。
asp+access数据库;php+MySQL数据库;aspx+mssql数据库;jsp+oracle数据库(Java后端常见)。php+MySQL是我们常见的,有四种组合—WNMP,WAMP,LNMP,LAMP。W为Windows,L为Linux,N为nginx,A为apache。
(2)常见数据库端口:
mssql-1433;mysql-3306;Oracle-1521。
3.CMS指纹查询
CMS:整站,内容管理系统,就是给开发用户提供一个比较完整的框架,让用户只需要进行简单的修改就能使用的模板。如果我们找到了它使用的框架,且这个框架有错误,那么使用这个框架的网站大概率也会有这个错误。所以我们应该学会如何识别CMS,判断一个网站是用什么程序搭建的。
(1)常见的识别方式
通过指定特殊目录或特殊文件 WP
页面底部版权信息,关键字powered by等
注释掉的html代码中的内容:有些程序员会将拿到的模板二次开发,注释掉版权信息,但是只是在前端页面上没有显示出来,html代码中还是存在的。
robot.txt文件中的关键字:robot.txt文件中常常存放文件结构,可能会有cms信息。
(2)在线工具
观星:指纹收录平台 (shuziguanxing.com):专门查询CMS的。
潮汐指纹:TideFinger 潮汐指纹 TideFinger 潮汐指纹 (tidesec.net):有其他功能,功能还比较全面。
Detect which CMS a site is using - What CMS?
前两个网站都需要注册才能使用,使用前记得注册一下。分别用三个网站分析一下知名小说网站
发现他是没有CMS的,使用php+nginx+Linux,那么我们可以推测一下他的数据库为mysql,且他是Linux系统与之前我们猜测的相同。
(3)下载工具
whatweb:安装教程就不详细说了,搜索直接下载即可,然后在目录搜索框下运行cmd,进入whatweb即可。输入whatweb.exe会显示他的一下使用语法,这里我列出常用的:
whatweb.exe 域名/IP -v(可以让各个模块内容分块显示)
whatweb.exe -v 域名 --log-xml=文件名(输出内容到文件中)
CMSseek:是基于python语言写的,所以执行python ceseek.py就可以运行。
wappalyzer:是一个浏览器扩展,我们只需要在浏览器扩展里搜索名字安装即可。
同样我们分别使用工具扫描知名小说网站,给出的信息比较详细,有IP地址、请求头等信息。
交互页面,我们这里要检测CMS输入1即可。
扫描速度比较快,这里他跟我们说这个网站没有CMS。
扩展更加方便,只需要在打开网站时,点开扩展,即可查看网页架构。
4.敏感文件和目录
保存管理信息、登录密码、管理员界面目录等都是敏感信息,我们可以寻找其中的漏洞进入。
(1)dirsearch:https://github.com/maurosoria/dirsearch
解压后进入控制台,输入下面命令进行安装依赖:pip3 install -r requirements.txt
分析语法:python dirsearch.py -u http://
使用它分析一下pikachu的敏感文件。运行完是这样的。
查看结果在软件根目录下有一个reports文件夹,里面有分析结果信息。
(2)JSfinder: 他是基于go语言开发的,在这里就不搭建了。GitHub - Threezh1/JSFinder: JSFinder is a tool for quickly extracting URLs and subdomains from JS files on a website.
5.waf识别
waf就相当于网站的保护壳,可以根据具体的表示界面判断是那个厂商,硬件、软件还是自己写的。