信息收集笔记
声明
学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
简介
工商数据可以帮助测试人员更好地了解目标公司的信息,以便收敛测试的目标范围。
例如,可以通过工商数据获取公司的控股子公司、经营业务、对外发布的产品等信息
这些信息可以帮助我们更准确地识别出目标公司的网络资产,以便对其进行更有效漏洞挖掘
收集(工商数据、信息来源、爱企查、企查查、天眼查、启信宝、小蓝本、关注内容、企业股权架构、网站备案、对外公布的产品(小程序、公众号APP、iot设备等)、法人电话号、邮箱、用处等)信息来进行归纳:
- 获取控股子公司名称,收集边缘子公司资产
- 获取备案根域名
- 获取其他互联网资产
思路
拿到目标公司名之后,先不要着急直接开始收集子域名,先统计好这家公司的股权架构,一般50%控股的可以算作有效目标,子公司资产将为我们提供不少的边缘业务系统
通过股权穿透图收集完子公司名称后,网站备案、对外发布的产品、法人电话和邮箱同样也是比较重要的数据
以某录入SRC公益平台的学院为例,进行信息收集。
一、收集用户名等信息
工具推荐 enscan_go https://github.com/wgpsec/ENScan_GO
该工具需提前配置好cookie后才能使用,使用方法在github中可看到。若无法理解,可看https://stack.chaitin.com/tool/detail/82 该链接的使用方法附带图片,更易理解。
enscan_go支持以下API,并支持合并数据导出:
爱企查 (未登陆信息带*)、天眼查、阿拉丁 (数据反馈比较老旧暂时下线)、酷安市场、七麦数据
可查询的信息有:
ICP备案、APP、微博、微信公众号、控股公司、供应商、客户信息、小程序、控股X的公司的以上所有信息、…、通过APK市场收集使用信息
站长之家: http://whois.chinaz.com/
利用查询到网站管理员手机号码、姓名、邮箱通过Whois反查查询出网站管理员所注册过的域名,可以对注册的其他域名进行漏洞挖掘。
爱站: https://whois.aizhan.com/
微步在线 https://x.threatbook.com/
国外的who.is https://who.is/
阿里云域名信息查询 https://whois.aliyun.com
腾讯查询 https://whois.cloud.tencent.com/
中国互联网信息中心 http://ipwhois.cnnic.net.cn/
邮箱反查:https://whois.chinaz.com/reverse/email
注册人反查:http://whois.chinaz.com/reverse?ddlSearchMode=1
电话反查:https://whois.chinaz.com/reverse/phone
二、ICP(Internet Content Provider)备案查询
国家企业信用信息公示系统 http://www.gsxt.gov.cn/index.html
备案查询: https://icp.aizhan.com/
ICP备案查询 https://beian.miit.gov.cn/#/Integrated/index
可以查询该单位备案的其它网站
ICP备案查询网 http://icp.chinaz.com/
企查查 https://www.qcc.com/
将需要查的信息填入查询,即可获得负责人姓名、电话、邮箱、官网等信息,值得一提的是,进入该查询中,还可以去了解一下该目标的备案域名、微信公众号、软件著作权等信息。
天眼查 https://www.tianyancha.com/
天眼查中也可以查出寻多有用信息,其和爱企查、企查查可以将信息对照,防止错漏信息。
爱企查 https://aiqicha.baidu.com/
启信宝 https://www.qixin.com/
小蓝本 https://sou.xiaolanben.com/
三、SEO(Search Engine Optimization)查询
爱站-SEO综合查询 https://www.aizhan.com/cha/
站长-SEO综合查询 http://seo.chinaz.com/
Google、bing、baidu
Google需要翻墙,一般用来收集一些敏感信息,用老生常谈的方法
这样收集特定的域名
site:xxx.cn
我通常用来收集特定资产的敏感信息
如 intext:``身份证 intext:``电话再指定后缀 xlsx pdf docs等
另外的时候会收集一些藏的比较深的路由
指定inurl:xxx可能会发现额外的资产
不过相比起Google我更喜欢用Bing,因为不用翻墙
语法的话与Google同理,不过Bing如果用谷歌语法的话搜集的内容会模糊一些,不是精准搜索
https://cn.bing.com/
site:jlthedu.com intext:身份证 intext:
电话 fietype:.xlsx/.pdf/.docs
intext:身份证 intext:
电话 fietype:.xlsx/.pdf/.docs
最后就是百度,也是搜集信息的一种方式
Ps:``搜索引擎一般用来收集信息泄露和隐藏较深的路由
这里给大家推荐一个网站 (本人也是看别人的知道的【信息收集之-你不知道的骚思路】https://www.bilibili.com/video/BV1yP4y117Q2?vd_source=6ce69e079d1dd642d7810fbf2e9c817e)
二开谷歌语法------https://searchtool.drtsrc.com/ (国内版)
暂时用不了
-----------------https://dorks.faisalahmed.me/ (国外版)
四、Github
提炼特殊路由
不同的站点路由其实是不一样的,在这里的话若依站点最特殊的路由是prod-api
因此我们从路由的角度来体验
一种是找超链接的提炼方式
可以找到站点中带有若依的超链接路由
打开之后我们就可以发现确实超链接指向的是若依的系统
如果收集的若依系统够多,可以发现存在二开的系统有其他的路由,比如admin-api dev-api 等等
另一种方式可能就需要用到搜索引擎去相辅相成的寻找特殊路由
GIT提炼
很多开源的若依二开可以在github找到相关的项目,往往修改较多的就是默认的prod-api为主,可以按照上面的内容去提炼,这样可以直接收集各个二开若依系统
傻蛋
网址:https://www.shodan.io
活动:Shodan****黑五1美元一个,淘宝、咸鱼可以看看
普通:69美元 每月最多 100 万个结果 每月扫描多达 5,120 个 IP 5,120 个 IP 的网络监控
高级:359美元 每月最多 2000 万个结果 每月扫描多达 65,536 个 IP 65,536 个 IP 的网络监控
超级:1099元 每月无限 每月扫描多达 327,680 个 IP 327,680 个 IP 的网络监控
普通与高级功能差别:漏洞搜索过滤器
语法
· city:搜索指定城市 例如:city:“tokyo ”
· country:搜索指定国家 例如:country:“JP”
· http.title:搜索指定网站标题 列如:http.title:“hacked by”
· http.html:搜索指定网页类容 例如:http.html:“hello world”
· http.status:搜索指定返回响应码 例如:http.status:“200”
· http.server:搜索指定返回中的server类型 例如:http.server:“PHP”
· net:搜索指定网络范围或 IP段,例如:net:“8.8.0.0/16”
· org:搜索指定的组织或机构,例如:org:“google”
· port:搜索指定的端口或服务,例如:port:“22”
· product:搜索指定的操作系统/软件/中间件,列如:product:“Samsung”
· screenshot.label:搜索指定描述图像内容的标签 列如:screenshot.label:“ics”
· os:搜索指定限定系统OS版本, 例如:os:“Windows Server 2008 R2”
· hostname:搜索指定的主机或域名,例如:hostname:“google”
· vuln:搜索指定CVE漏洞编号,例如:vuln:“CVE-2014-0723”
· isp:搜索指定的ISP供应商,例如:isp:“China Telecom”
· version:搜索指定的软件版本,例如:version:“1.2.3”
· geo:搜索指定的地理位置,参数为经纬度,例如:geo:“44.55,66.77”
搜索案例
搜索日本国家,中间件是Apache服务器并且状态码是200的机器
country:“JP” && apache && http.status:“200”
搜索日本国家,摄像头是海康威视
country:“JP” && Hikvision-Webs
搜索日本国家,操作系统是Windows Server 2008 R2并且开放3389端口的机器
country:jp && os:Windows Server 2008 R2 && port:3389
搜索日本国家,操作系统是Windows Server并且存在永恒之蓝漏洞的机器(更高级会员才能使用vuln)
country:jp && os:Windows Server * && vuln:CVE-2017-0146
shodan语法参考资料
Filter Reference https://www.shodan.io/search/filters
Shodan使用指南 - zha0gongz1 - 博客园https://www.cnblogs.com/H4ck3R-XiX/p/12950736.html
暗黑引擎 – Shodan常用搜索语法_web安全工具库的博客-CSDN博客_shodan搜索语法https://blog.csdn.net/weixin_41489908/article/details/110404340
钟馗之眼–知道创宇
ZoomEye - Cyberspace Search Engine https://www.zoomeye.org/
免费:查询结果展示量:4百条 查询API额度:每月1w
高级:4800/年 查询结果展示量:1千条 查询API额度:每月3w
VIP:9600/年 查询结果展示量:2千条 查询API额度:每月4w
高级与VIP功能差别:蜜罐识别
语法
· country:搜索指定国家 例如:country:“JP”
· city:搜索指定城市 例如:city:“San Diego”
· subdivisions:搜索相关指定行政区的资产 例如:**subdivisions:“**东京”
· ssl.cert.availability:搜索证书是否在有效期内 例如:ssl:“1”or“0”
· ip:搜索指定的IP(ipv4/6) 列如:ip: “8.8.8.8”
· cidr:搜索指定的IP段 列如:cidr: “52.2.254.36/24”
· org:搜索指定的组织或机构,例如:org:“google”
· isp:搜索相关网络服务提供商的资产 例如:isp: “China Mobile”
· port:搜索指定的端口或服务,例如:port:“22”
· hostname:搜索相关IP"主机名"的资产 例如:hostname: “google.com”
· site:搜索域名相关的资产 例如:site: “baidu.com”
· device:搜索路由器相关的设备类型 例如:device: “router”
· os:搜索指定限定系统OS版本, 例如:os:“Windows Server 2008 R2”
· title:搜索指定网页类容 例如:title: “hello world”
· app:搜索指定的组件 列如:app:“apache ”
· ver:搜索指定的版本 l例如:ver“1.2.3”
· service:指定服务类型 例如:service:“ftp”
搜索案例
country:“JP” && apache && http.status:“200”
钟馗之眼语法参考资料
Zoomeye-钟馗之眼语法参考_Pika_mia的博客-CSDN博客_zoomeye语法
zoomeye用户使用手册_ncafei的博客-CSDN博客_zoomeye
ZoomEye(钟馗之眼)搜索技巧记录:- _H0f - 博客园
信息收集利器:ZoomEye - FreeBuf网络安全行业门户
360 QUAKE–360
360网络空间测绘 — 因为看见,所以安全
免费 数据广度开放性:5百条 Quake积分:3千/月
高级:299/年 数据广度开放性:5千条 Quake积分 :3W/月
终身:999 数据广度开放性:1W条 Quake积分 :5W/月
功能差别:相似图标、深度识别、专用语法、圈内交流
邀请码:z5EIWH
搜索案例
country:“Japan” AND apache AND status_code:200
语法
· country:搜索指定国家(中文添加_cn) 例如:country:“JP”
· city:搜索指定城市 例如:city:“tokyo ”
· owner:搜索IP归属单位 例如:owner:“tencent.com”
· isp:搜索IP归属运营商 例如:isp:“amazon.com”
· ip:查询IP地址或网段 列如:ip:"1.1.1.1/22"
· is_ipv6:查询IPV6格式的IP 列如:sis_ipv6:"true"
· port:搜索指定的端口或服务 例如:port:“[50 TO 60]”
· transport:查询udp数据 例如:transport:“udp”
· domain:查询资产域名 例如:domain:“google.com”
· hostname:查询主机名包含指定资产的数据 例如: hostname:“google.com”
· app:搜索指定的组件 列如:app:“apache ”
· response:查询端口原生返回数据中包含指定参数的资产 列如:response:“google.com”
相应网站
Censys Search
GreyNoise
各个国家代码是什么?_百度知道
https://github.com/0x727/Space_view
FOFA https://fofa.info
语法
查询语法参考 | |||||
---|---|---|---|---|---|
直接输入查询语句,将从标题,html内容,http头信息,url字段中搜索; | |||||
如果查询表达式有多个与或关系,尽量在外面用()包含起来; | |||||
高级搜索 | 逻辑连接符 | 具体含义 | |||
= | 匹配,=""时,可查询不存在字段或者值为空的情况。 | ||||
== | 完全匹配,==""时,可查询存在且值为空的情况。 | ||||
&& | 与 | ||||
|| | 或 | ||||
!= | 不匹配,!=""时,可查询值不为空的情况。 | ||||
*= | 模糊匹配,使用*或者?进行搜索,比如banner*=“mys??” (个人版及以上可用)。 | ||||
() | 确认查询优先级,括号内容优先级最高。 | ||||
关于建站软件的搜索语法请参考:组件列表 | |||||
基础类(General) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
ip | ip=“1.1.1.1” | 通过单一IPv4地址进行查询 | ✓ | ✓ | - |
ip=“220.181.111.1/24” | 通过IPv4 C段进行查询 | ✓ | ✓ | - | |
ip=“2600:9000:202a:2600:18:4ab7:f600:93a1” | 通过单一Ipv6地址进行查询 | ✓ | ✓ | - | |
port | port=“6379” | 通过端口号进行查询 | ✓ | ✓ | ✓ |
domain | domain=“qq.com” | 通过根域名进行查询 | ✓ | ✓ | ✓ |
host | host=“.fofa.info” | 通过主机名进行查询 | ✓ | ✓ | ✓ |
os | os=“centos” | 通过操作系统进行查询 | ✓ | ✓ | ✓ |
server | server=“Microsoft-IIS/10” | 通过服务器进行查询 | ✓ | ✓ | ✓ |
asn | asn=“19551” | 通过自治系统号进行搜索 | ✓ | ✓ | ✓ |
org | org=“LLC Baxet” | 通过所属组织进行查询 | ✓ | ✓ | ✓ |
is_domain | is_domain=true | 筛选拥有域名的资产 | ✓ | - | - |
is_domain=false | 筛选没有域名的资产 | ✓ | - | - | |
is_ipv6 | is_ipv6=true | 筛选是ipv6的资产 | ✓ | - | - |
is_ipv6=false | 筛选是ipv4的资产 | ✓ | - | - | |
标记类(Special Label) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
app | app=“Microsoft-Exchange” | 通过FOFA整理的规则进行查询 | ✓ | - | - |
fid | fid=“sSXXGNUO2FefBTcCLIT/2Q==” | 通过FOFA聚合的站点指纹进行查询 | ✓ | ✓ | - |
product | product=“NGINX” | 通过FOFA标记的产品名进行查询 | ✓ | ✓ | - |
category | category=“服务” | 通过FOFA标记的分类进行查询 | ✓ | ✓ | - |
type | type=“service” | 筛选协议资产 | ✓ | - | - |
type=“subdomain” | 筛选服务(网站类)资产 | ✓ | - | - | |
cloud_name | cloud_name=“Aliyundun” | 通过云服务商进行查询 | ✓ | ✓ | ✓ |
is_cloud | is_cloud=true | 筛选是云服务的资产 | ✓ | - | - |
is_cloud=false | 筛选不是云服务的资产 | ✓ | - | - | |
is_fraud | is_fraud=true | 筛选是仿冒垃圾站群的资产 (专业版及以上) | ✓ | - | - |
is_fraud=false | 筛选不是仿冒垃圾站群的资产(已默认筛选) | ✓ | - | - | |
is_honeypot | is_honeypot=true | 筛选是蜜罐的资产 (专业版及以上) | ✓ | - | - |
is_honeypot=false | 筛选不是蜜罐的资产(已默认筛选) | ✓ | - | - | |
协议类 (type=service) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
protocol | protocol=“quic” | 通过协议名称进行查询 | ✓ | ✓ | ✓ |
banner | banner=“users” | 通过协议返回信息进行查询 | ✓ | ✓ | ✓ |
base_protocol | base_protocol=“udp” | 查询传输层为udp协议的资产 | ✓ | ✓ | - |
base_protocol=“tcp” | 查询传输层为tcp协议的资产 | ✓ | ✓ | - | |
网站类(type=subdomain) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
title | title=“beijing” | 通过网站标题进行查询 | ✓ | ✓ | ✓ |
header | header=“elastic” | 通过响应标头进行查询 | ✓ | ✓ | ✓ |
header_hash | header_hash=“1258854265” | 通过http/https响应头计算的hash值进行查询 (个人版及以上) | ✓ | ✓ | ✓ |
body | body=“网络空间测绘” | 通过HTML正文进行查询 | ✓ | ✓ | - |
body_hash | body_hash=“-2090962452” | 通过HTML正文计算的hash值进行查询 | ✓ | ✓ | - |
js_name | js_name=“js/jquery.js” | 通过HTML正文包含的JS进行查询 | ✓ | ✓ | ✓ |
js_md5 | js_md5=“82ac3f14327a8b7ba49baa208d4eaa15” | 通过JS源码进行查询 | ✓ | ✓ | ✓ |
cname | cname=“ap21.inst.siteforce.com” | 通过别名记录进行查询 | ✓ | ✓ | ✓ |
cname_domain | cname_domain=“siteforce.com” | 通过别名记录解析的主域名进行查询 | ✓ | ✓ | ✓ |
icon_hash | icon_hash=“-247388890” | 通过网站图标的hash值进行查询 | ✓ | ✓ | - |
status_code | status_code=“402” | 筛选服务状态为402的服务(网站)资产 | ✓ | ✓ | - |
icp | icp=“京ICP证030173号” | 通过HTML正文包含的ICP备案号进行查询 | ✓ | ✓ | ✓ |
sdk_hash | sdk_hash==“Mkb4Ms4R96glv/T6TRzwPWh3UDatBqeF” | 通过网站嵌入的第三方代码计算的hash值进行查询 (商业版及以上) | ✓ | ✓ | - |
地理位置(Location) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
country | country=“CN” | 通过国家的简称代码进行查询 | ✓ | ✓ | - |
country=“中国” | 通过国家中文名称进行查询 | ✓ | ✓ | - | |
region | region=“Zhejiang” | 通过省份/地区英文名称进行查询 | ✓ | ✓ | - |
region=“浙江” | 通过省份/地区中文名称进行查询(仅支持中国地区) | ✓ | ✓ | - | |
city | city=“Hangzhou” | 通过城市英文名称进行查询 | ✓ | ✓ | - |
证书类 | |||||
语法 | 例句 | 用途说明 | = | != | *= |
cert | cert=“baidu” | 通过证书进行查询 | ✓ | ✓ | ✓ |
cert.subject | cert.subject=“Oracle Corporation” | 通过证书的持有者进行查询 | ✓ | ✓ | ✓ |
cert.issuer | cert.issuer=“DigiCert” | 通过证书的颁发者进行查询 | ✓ | ✓ | ✓ |
cert.subject.org | cert.subject.org=“Oracle Corporation” | 通过证书持有者的组织进行查询 | ✓ | ✓ | ✓ |
cert.subject.cn | cert.subject.cn=“baidu.com” | 通过证书持有者的通用名称进行查询 | ✓ | ✓ | ✓ |
cert.issuer.org | cert.issuer.org=“cPanel, Inc.” | 通过证书颁发者的组织进行查询 | ✓ | ✓ | ✓ |
cert.issuer.cn | cert.issuer.cn=“Synology Inc. CA” | 通过证书颁发者的通用名称进行查询 | ✓ | ✓ | ✓ |
cert.is_valid | cert.is_valid=true | 筛选证书是有效证书的资产 (个人版及以上) | ✓ | - | - |
cert.is_valid=false | 筛选证书是无效证书的资产 (个人版及以上) | ✓ | - | - | |
cert.is_match | cert.is_match=true | 筛选证书和域名匹配的资产 (个人版及以上) | ✓ | - | - |
cert.is_match=false | 筛选证书和域名不匹配的资产 (个人版及以上) | ✓ | - | - | |
cert.is_expired | cert.is_expired=true | 筛选证书已过期的资产 (个人版及以上) | ✓ | - | - |
cert.is_expired=false | 筛选证书未过期的资产 (个人版及以上) | ✓ | - | - | |
jarm | jarm=“2ad2ad0002ad2ad22c2ad2ad2ad2ad2eac92ec34bcc0cf7520e97547f83e81” | 通过JARM指纹进行查询 | ✓ | ✓ | ✓ |
tls.version | tls.version=“TLS 1.3” | 通过tls的协议版本进行查询 | ✓ | ✓ | - |
tls.ja3s | tls.ja3s=“15af977ce25de452b96affa2addb1036” | 通过tls的ja3s指纹进行查询 | ✓ | ✓ | ✓ |
时间类(Last update time) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
after | after=“2023-01-01” | 筛选某一时间之后有更新的资产 | ✓ | - | - |
before | before=“2023-12-01” | 筛选某一时间之前有更新的资产 | ✓ | - | - |
after&before | after=“2023-01-01” && before=“2023-12-01” | 筛选某一时间区间有更新的资产 | ✓ | - | - |
独立IP语法(独立IP系列语法,不可和上面其他语法共用) | |||||
语法 | 例句 | 用途说明 | = | != | *= |
port_size | port_size=“6” | 筛选开放端口数量等于6个的独立IP (个人版及以上) | ✓ | ✓ | - |
port_size_gt | port_size_gt=“6” | 筛选开放端口数量大于6个的独立IP (个人版及以上) | ✓ | - | - |
port_size_lt | port_size_lt=“12” | 筛选开放端口数量小于12个的独立IP (个人版及以上) | ✓ | - | - |
ip_ports | ip_ports=“80,161” | 筛选同时开放不同端口的独立IP | ✓ | - | - |
ip_country | ip_country=“CN” | 通过国家的简称代码进行查询独立IP | ✓ | - | - |
ip_region | ip_region=“Zhejiang” | 通过省份/地区英文名称进行查询独立IP | ✓ | - | - |
ip_city | ip_city=“Hangzhou” | 通过城市英文名称进行查询独立IP | ✓ | - | - |
ip_after | ip_after=“2021-03-18” | 筛选某一时间之后有更新的独立IP | ✓ | - | - |
ip_before | ip_before=“2019-09-09” | 筛选某一时间之前有更新的独立IP | ✓ | - | - |
搜索案例
status_code=“200” && country=“JP”
聚合测绘空间搜索工具
项目名称:聚合测绘空间搜索(HW****蓝队情报收集) 项目地址:https://github.com/atdpa4sw0rd/Search-Tools
支持搜索的引擎:Fofa****、Zoomeye、Quake、Shodan、Censys、BinaryEdge、threatbook
- git clone https://github.com/atdpa4sw0rd/Search-Tools.git
- cd Search-Tools && pip3 install -r requirements.txt
- python3 search_main.py
五、APP、小程序、公众号信息收集
APP信息搜集
七麦数据 https://www.qimai.cn/
通过当前APP查询所属公司的所有APP
通过当前APP查询同开发者应用
AppStore(应用商店)
微信公众号和小程序
通过微信搜索公众号并去关注,然后进去点击文章之类的,下拉可以看到它的网页来源,大部分是微信提供的,所以需要去阅读原文,但是原文也可能是第三方提供的,所以还需要自己自行去判断,找到它的url后又可以去爆一波子域名了。
随便点击文章通过浏览器打开看到域名,例如:
logo
当你不确定目标产品是什么时,比如你不知道他是谁家的WAF或者路由器,可以利用查看网站logo地址,然后复制logo地址,点击按图片搜索,到谷歌里面查询;也可以把目标logo下载下来,利用上传图片来查询,通过搜索出来的结果可以判断目标产品和厂商。
favicon.ico
首先先来介绍一下什么favicon.ico文件,所谓favicon,便是其可以让浏览器的收藏夹中除显示相应的标题外,还以图标的方式区别不同的网站。favicon.ico也被称为 website icon(网页图标)、page icon(页面图标)或url icon(URL图标),具体细节请问度娘。下面这个小东西就是 Favicon.ico,我们可以通过在shodan里寻找它的哈希并去查找相关资产,打开shodan页面,或者用shodan插件都行。
六、子域名收集(挖掘)
SSL(HTTPS)证书
点击浏览器网站旁边的小锁,然后点击证书就可以查看到该网站的SSL证书了
大厂商SSL证书一证多用
大厂商的SSL证书一般都是一证多用,根据证书透明日志这个特性,可以得知一些子域名。
如百度:https://www.baidu.com
如搜狐:https://vpn.sohu-inc.com
HTTPS证书错误泄露域名
有时候https证书报错会泄露域名
在线网站证书查询
https://crt.sh/
https://censys.io/
网络深度爬虫
以www.sina.com.cn为例,我们使用正则表达式抓取页面以sina.com.cn结尾的所有的URL(一级深度)。
失败了,摸不着头,考虑可能是需要字典。先记录着,后边再测试一下。
域传送漏洞
快速判断出某个特定区域的所有主机,获取域信息,如网络拓扑结构、服务器ip地址,为攻击者的入侵提供大量敏感信息。
常用DNS记录
主机记录(A记录): A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
IPv6主机记录(AAAA记录): 与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
别名(CNAME记录): CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
电子邮件交换记录(MX记录): 记录一个邮件域名对应的IP地址
域名服务器记录 (NS记录): 记录该域名由哪台域名服务器解析
反向记录(PTR记录): 也即从IP地址到域名的一条记录
TXT记录:记录域名的相关文本信息
DNS区域传送
DNS服务器分为主服务器、备份服务器和缓存服务器。而域传送指的是一台备用服务器使用来自主服务器的数据更新自己的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响到整个域名的解析。
域传送漏洞
DNS区域传送(DNS transfer)指后备DNS服务器从主服务器获取数据,以更新自己的zone数据库,这可以防止因主DNS服务器故障造成的业务中断,为DNS服务提供了冗余备份,但是许多DNS服务器却被错误配置成只要收到AXFR请求,就向对方进行域传送。
当存在这种错误配置时,攻击者就可以获取整个域的所有记录,造成整个网络架构泄露。正确的配置包括
allow-transfer {ipaddress;}; 通过ip限制可进行域传送的服务器
allow-transfer { key transfer; }; 通过key限制可进行域传送的服务器
检测
nmap脚本扫描
nmap –script dns-zone-transfer –script-args dns-zone-transfer.domain=targetdomain -p 53 -Pn dns.xxx
dig命令
dig @114.114.114.114 xxx.com axfr @指定DNS服务器, 后面指定域名,axfr为域传送请求
nslookup
输入nslookup命令进入交互式shell界面;
server 命令参数设定查询将要使用的DNS服务器;针对某个域名可先输入域名获取dns信息。
ls命令列出某个域中的所有域名;如果太长不适合查看可定向保存至文件夹中。
exit命令退出
在线DNS数据
有许多第三方服务聚合了大量的DNS数据集,并通过它们来检索给定域名的子域名。
VirusTotal
https://www.virustotal.com/#/home/search
DNSdumpster
https://dnsdumpster.com/
dnsdb
https://www.dnsdb.io/zh-cn/
自身泄漏
robots.txt
crossdomain.xml(跨域策略文件cdx)
从流量中分析提取
Github泄露
这个直接在Github上搜索就可以了
Google Hacking
搜索引擎查询都会做一些反制爬虫的手段,目前使用google去采集的方法是调用google的官方API,或者调用bing的API去辅助采集。
在线子域名查询
http://sbd.ximcx.cn/
http://tool.chinaz.com/subdomain/
子域名枚举爆破
向DNS服务器(如8.8.8.8和8.8.4.4)请求字典里面的子域名,看返回的数据里面是否有记录,如果有则说明这是一个存在的子域名。比如说,向114.114.114.114定向请求www.qq.com的记录,返回了一条A记录指向182.254.34.74,就说明存在这个域名;相应的请求wooyun.qq.com并没有相应的记录返回,这就说明没有这个域名存在。
注:一般只使用同一套主、副DNS,即8.8.8.8和8.8.4.4,DNS服务器不宜混搭,否则容易出现大量误报
发包可以用第三方库,比如说lijiejie的subDomainBrute使用了dnspython这个包。使用第三方包的确好,但是免不了一层封装和不能很好地理解DNS报文协议,也可能会降低一定的效率,和没有解决泛解析的好办法。
泛解析这个问题的解决方法很简单,向DNS请求记录,然后把枚举子域名回来的记录和*的记录比对,如果相同则直接排除** 。但是实际上,如果使用第三方包,不自己造轮子的话,是无法实现这个的。因为有些域名的记录是CNAME,而第三方包只能解析出IP却不会返回出CNAME给你。举个例子,以www.baidu.com,大家ping一下都知道会跳转到www.a.shifen.com,这就是一个CNAME记录,但是我们用第三方包只能获得最后解析出来的ip。
也就是说,如果一个域名他的泛解析是一个CNAME记录而且这又是一个CDN域名(恰巧这个又不少),那么不是自己定制的dns查询函数,一般都会出现大量泛解析误报。这就有点像是灯下黑,知道了怎么做就可以了,却一直没有解决的办法。
如果要自己定制的话需要研究一下DNS报文协议,这里引用两张图片做简要分析
这是向DNS请求部分的:
这是DNS服务器回传的报文:
只需要按照这个协议的格式做正则提取即可获得我们想要的信息,A记录的是固定的正则,CNAME记录需要嵌套一层正则才能获取。
这里提供几个测试域名,都有CNAME记录作为泛解析的。
alitrip.com
taobao.com
tmall.com
52pk.com
focus.cn
OneForAll
下载地址:https://github.com/shmilylty/OneForAll
目前支持一键收集:子域、子域常用端口、子域Title、子域状态、子域服务器等
020_信息收集_子域名OneForAll
subDomainBrute
工具地址:https://github.com/lijiejie/subDomainsBrute
高并发的DNS暴力枚举工具
020_信息收集_子域名subDomainsBrute
Layer
Layer子域名挖掘机是一款域名查询工具,可提供网站子域名查询服务;拥有简洁的界面、简单的操作模式,支持服务接口、暴力搜索、同服挖掘三种模式,支持打开网站、复制域名、复制IP、复制CDN、导出域名、导出IP、导出域名+IP、导出域名+IP+WEB服务器以及导出存活网站!
通过查看WEB服务器信息,筛选版本比较低的服务器(win2003+iis6.0),查看每个子域名是否开启常见的端口(3389、3306、21端口等),利用爆破工具进行枚举,会达到事半功倍的效果。
FuzSub
https://github.com/DavexPro/FuzSub
Fierce
https://github.com/davidpepper/fierce-domain-scanner
御剑
wydomain
该项目需要使用python2,python2 dnsburte.py -d xxx.com -f dnspod.csv -o xxx.log
orangescan
未知原因,等好好研究一番再尝试
DNSRecon
dnsrecon -d xxx.com -D /usr/lib/python3/dist-packages/dnsrecon/data/namelist.txt -t brt
K8
七、IP信息收集
首先,我们要判断该域名是否存在CDN的情况,我们可以去在线CDN查询网站:http://ping.chinaz.com/ 。如果查询出的ip数量大于一个的话,则说明该ip地址不是真实的服务器地址。以我的经验来看,如果是2个或者3个,并且这几个地址是同一地区的不同运营商的话,则很有可能这几个地址是服务器的出口地址,该服务器在内网中,通过不同运营商NAT映射供互联网访问,同时采用几个不同的运营商可以负载均衡和热备份。如果是多个ip地址,并且这些ip地址分布在不同地区的话,则基本上可以断定就是采用了CDN了。
1、CDN概念
内容分发网络(content delivery network或content distribution network,缩写作CDN)指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户,主要就是通过多个不同节点加快网站的访问速度。
2、判断是否真实IP
2.1、nslookup
命令端
意义:用了CDN的会返回多个IP地址
在线工具
http://tools.bugscaner.com/nslookup/
http://tool.chinaz.com/nslookup/
2.2、多地ping
看IP是否一致,在线工具:
http://ping.chinaz.com/
http://ping.aizhan.com/
2.3、IP反查
反查IP有多个域名,那IP多半不是真实IP
3、绕CDN找真实IP
定位真实ip比较快的方法
我们很多时候做渗透的时候,总会遇到CDN,这样
这里我们借助fofa
思路如下
我们想确定一个网站的真实IP地址,通常现在网站都会使用https协议,用到SSL证书是必不可少的,绝大多数企业证书都是通配符证书,因此我们可以把证书的序列号拿下来然后搜索这个证书用在了哪些业务里,然后如果部分业务中没有使用CDN或者没有覆盖到CDN,真实ip就出现了。
这里我用的是火狐浏览器
3.1、子域名
CDN不便宜,所以很多站都是主站做了CDN,而很多小站没做CDN,所以可以通过上面收集到的子域名查询到真实的IP地址,进而知道网站真实IP的C段了。
3.2、历史DNS解析记录
查询未使用CDN前的DNS服务器解析记录,查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录
https://dnsdb.io/zh-cn/ DNS查询(无法加载)
https://x.threatbook.cn/ 微步在线
http://toolbar.netcraft.com/site_report?url= 在线域名信息查询
http://viewdns.info/ DNS、IP等查询
https://tools.ipip.net/cdn.php CDN查询IP
3.3、邮件服务器
大部分网站会有注册,订阅,找回密码的功能会发送邮件,因为邮件系统一般都在内部,所以就可以通过邮箱获得真实的IP,邮件头信息中会有真实IP
3.4、信息泄漏
有些网站会有phpinfo页面,一些debug模式不关等信息泄漏问题,上面会有真实IP
3.5、网络空间搜索引擎
通过shadan、fofa等搜索引擎,通过对目标
网站的特征进行搜索,很多时候可以获取网站的真实IP
3.6、利用SSL证书查询
https://censys.io/certificates/
3.7、国外访问
一般的站点在国内可能会有CDN,但是在国外的用户覆盖率比较低,所以通过国外的节点进行请求往往能获取真实IP
3.8、LTM解码法
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie:
BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip
五、基本目录、敏感目录及文件
由于发布网站时,服务器配置问题,导致目录浏览功能打开,从而引起信息泄露,造成安全隐患。在信息收集过程中,需要收集的敏感目录/文件信息包括:
1.robots.txt
2.crossdomin.xml
3.sitemap.xml
4.后台目录
5.网站安装包
6.网站上传目录
7.mysql管理页面
8.phpinfo
9.网站文本编辑器
10.测试文件
11.网站备份文件(.rar、zip、.7z、.tar.gz、.bak)
12.DS_Store 文件
13.vim编辑器备份文件(.swp)
14.WEB—INF/web.xml文件
目录扫描对应信息收集来说特为重要,比如robots文件当中就可能泄露网站的后台或者CMS信息等,安装包中便泄露了网站的源码,phpinfo泄露了服务器的一些配置信息,编辑器、上传页面便可以进行利用相关的漏洞进行渗透,mysql、后台管理页面可以进行枚举爆破来尝试登陆进行下一步的安全测试。
扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏
后台目录:弱口令,万能密码,爆破
安装包:获取数据库信息,甚至是网站源码
上传目录:截断、上传图片马等
mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
安装页面 :可以二次安装进而绕过
phpinfo:会把你配置的各种信息暴露出来
编辑器:fck、ke、等
iis短文件利用:条件比较苛刻 windows、apache等
robots.txt 文件是专门针对搜索引擎机器人robot 编写的一个纯文本文件。我们可以在这个文件中指定网站中不想被robot访问的目录。这样,我们网站的部分或全部内容就可以不被搜索引擎收录了,或者让搜索引擎只收录指定的内容。因此我们可
以利用robots.txt让Google的机器人访问不了我们网站上的重要文件,GoogleHack的威胁也就不存在了。
假如编写的robots.txt文件内容如下:
User-agent: *
Disallow: /data/
Disallow: /db/
Disallow: /admin/
Disallow: /manager/
Allow:/images/
其中“Disallow”参数后面的是禁止robot收录部分的路径,例如我们要让robot禁止收录网站目录下的“data”文件夹,只需要在Disallow参数后面加上 /data/ 即可。如果想增加其他目录,只需按此格式继续添加。文件编写完成后将其上传到网站的根目录,就可以让网站远离Google Hack了。
虽然robots文件目的是让搜索蜘蛛不爬取想要保护的页面,但是如果我们知道了robots文件的内容的话,我们就可以知道目标网站哪些文件夹不让访问,从侧面说明这些文件夹是很重要的了。
1、dirsearch
工具地址:https://github.com/maurosoria/dirsearch
002_目录信息_dirsearch
2、dirbuster
当使用扫描工具对站点进行扫描,网站存在WAF后,会给我们的工具进行拦截,这时候我们需要修改User Agent值来绕过WAF的拦截,而DirBuster这款扫描工具便可以修改User Agent值
Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) 百度蜘蛛抓取欺骗
Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html) 谷歌蜘蛛抓取欺骗
Firefox 3.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8;baidu Transcoder) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729) 百度转码浏览欺骗
Chrome Mozilla/5.0 (en-us) AppleWebKit/534.14 (KHTML, like Gecko; Google Wireless Transcoder) Chrome/9.0.597 Safari/534.14 谷歌转码浏览欺骗
3、7kbscan
工具:https://github.com/7kbstorm/7kbscan-WebPathBrute
4、Webrobot
未能成功运行,有空再测测
5、御剑
6、爬虫-中国菜刀
7、wwwscan
8、cansina
9、dirmap
10、Webdirscan
11、BBscan
12、GSIL