[[信息收集问题|信息收集问题]]

000 信息收集

收集哪些信息

  • 域名信息(whois、备案信息、子域名)
  • 服务器信息(端口、服务、真实 IP)
  • 网站信息(网站架构、操作系统、中间件、数据库、编程语言、指纹信息、WAF、敏感目录、敏感文件、源码泄露、旁站、C 段)
  • 管理员信息(姓名、职务、生日、联系电话、邮件地址)

域名信息收集

利用 Whois 协议收集信息

  1. 工作过程

WHOIS 服务是一个在线的“请求/响应”式服务。WHOIS Server 运行在后台监听 43 号端口,当 Internet 用户搜索一个域名(或主机、联系人等其他信息)时,WHOIS Server 首先建立一个与 Client 的 TCP 连接,然后接收用户请求的信息并据此查询后台域名数据库。如果数据库中存在相应的记录,它会将相关信息如所有者、管理信息以及技术联络信息等,反馈给 Client 。待 Server 输出结束,Client 关闭连接,至此,一个查询过程结束。

  1. 主要用途

查询域名的 IP 以及所有者等信息的传输协议。查询域名是否被注册,以及域名的详细信息的数据库(如域名归属者联系方式,域名注册商和到期时间等)

  1. 查询方式
  • web 接口查询

https://whois.aliyun.com/

https://www.whois365.com/cn/

http://whois.chinaz.com/

  • whois 命令查询
1
whois baidu.com
  • python 脚本查询

https://gitee.com/yijingsec/yjtools

  1. Whois 反查

WHOIS 反查(域名反查),通过一个已知域名的 WHOIS 信息中的部分信息作为条件反过来查询与此条件相匹配的一系列其它域名列表情况。借此可知道该注册人拥有哪些域名,或者说是拥有哪些站点,哪些域名的注册信息具体是什么等等相关信息。

  • 反查方式

根据已知域名反查,分析出域名的注册人、邮箱、电话等字段;通过注册邮箱、注册人再反查出其他域名中与此相同的域名列表。

存在问题:公司大都是 DNS 解析的运营商注册的,查到的是运营商代替个人和公司注册的网站信息。

https://whois.chinaz.com/

https://whois.aizhan.com/reverse-whois/

通过备案号查询

国内合法网站均需进行备案,可通过网页备案号查询其下资产。

https://beian.miit.gov.cn/

http://icp.chinaz.com/

https://icplishi.com/

子域名查询

eg:mail.hetian.combbs.hetian.comhetian.com 的子域,hetian.com.com 的子域。

GoogleHacking 高级搜索语法

[[../查询接口及搜索语法#GoogleHacking高级搜索语法|GoogleHacking高级搜索语法]]

https://www.exploit-db.com/google-hacking-database

Index of

利用 Index of 语法去发现允许目录浏览的 web 网站,就像在本地的普通目录一样。下面是一些有趣的查询:(配合谷歌语法进行使用)

1
2
3
4
5
6
7
8
9
10
11
index of /admin 
index of /passwd
index of /password
index of /mail
"index of /" +passwd
"index of /" +password.txt
"index of /" +.htaccess
"index of /root"
"index of /cgi-bin"
"index of /logs"
"index of /config"

第三方 Web 接口

DNS 记录来获取子域名

https://dnsdumpster.com/

https://www.dnsgrep.cn/

https://developers.virustotal.com/reference/domains-relationships

http://tool.chinaz.com/subdomain

https://www.nmmapper.com/sys/tools/subdomainfinder/

[[../查询接口及搜索语法|查询接口及搜索语法]](威胁情报、网安搜索引擎等)

网安搜索引擎

FOFA https://fofa.info/

鹰图 https://hunter.qianxin.com/

钟馗之眼 https://www.zoomeye.org/

shodan https://www.shodan.io/

汇总网安搜索引擎 https://mp.weixin.qq.com/s/FRgPQKJDj2xRCduwPfZrTw

【有的时候搜索 IP 会出现很多结果,有可能是之前被分配所用过的历史记录,导致搜到的并不是原目标站点】

1
2
3
4
# 有专门的语法之后整理一下~
domain="hetianlab.com"
site:"hetianlab.com"
hostname:baidu.com

SSL 证书查询

以 SSL 证书解析查询域名资产

https://myssl.com/ssl.html

https://developers.facebook.com/tools/ct/search/

JS 文件信息收集

[[信息收集问题#JS 相关信息收集|JS 相关信息收集]]

子域名收集工具

子域名挖掘机 https://gitee.com/yijingsec/LayerDomainFinder

OneForAll(python 版本仅限 3.6-3.9) https://gitee.com/yijingsec/OneForAll

Subdomainsbrute 高并发的 DNS 暴力枚举工具 https://gitee.com/yijingsec/subDomainsBrute python subDomainsBrute.py -w -t 100 hetianlab.com

subdomain3 https://gitee.com/yijingsec/subdomain3

ARL https://gitee.com/yijingsec/ARL

SubFinder + KSubdomain + HttpX https://gitee.com/yijingsec/subx

IP 信息收集

IP 反查域名

若目标为虚拟主机,一台物理服务器上可能运行多个虚拟主机。这些虚拟主机有不同的域名,但通常共用一个 IP 地址。可通过该服务器上的其他网站漏洞获取服务器控制权,从而获取目标权限。(旁注)

http://stool.chinaz.com/same

https://tools.ipip.net/ipdomain.php

https://www.dnsgrep.cn/

https://site.ip138.com/

域名查 IP

http://ip.tool.chinaz.com/

https://ipchaxun.com/

https://site.ip138.com/

C 段扫描

查找目标服务器 IP 处于同一 C 段的服务器 IP

一般 C 段足够,对内网进行搜集时可能会有 B 段的需求,A 段基本不会需要扫。

Nmap 探测

1
2
nmap -sP www.xxx.com/24
nmap -sP 192.168.1.*

TXPortMap 探测

https://gitee.com/yijingsec/TXPortMap

1
2
3
4
# 给执行权限
chmod +x Txportmap
# 使用
./Txportmap -i 192.168.125.28/24 -p 80

CDN 绕过

CDN内容分发网络,构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

CDN 判断

  • 多地 ping,查看对应 IP 地址是否唯一;

http://ping.chinaz.com/

https://ping.aizhan.com/

http://www.webkaka.com/Ping.aspx

出现多个 IP 即启用了 CDN 服务,找到真实 IP 后需在本地 host 文件中进行绑定解析;

  • 国外 ping ,有些网站设置 CDN 可能没有包含国外访问;(可能已经失效)

https://ping.eu/ping/

CDN 绕过

  • 查询子域名的 IP;

https://ip.tool.chinaz.com/ipbatch

站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个 C 段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实 IP。

  • 查询历史 DNS 记录;

https://dnsdb.io/zh-cn/

https://securitytrails.com/

https://viewdns.info/iphistory/

https://www.ip138.com/

查看 IP 与域名绑定的历史记录,可能会存在使用 CDN 前的记录

补充:【 DNS 记录类型

  • 泛域名与泛解析;

泛域名是指在一个域名根下,以 *.Domain.com 的形式表示这个域名根所有未建立的子域名。泛解析是把 *.Domain.com 的 A 记录解析到某个 IP 地址上,通过访问任意的前缀 .domain.com 都能访问到你解析的站点上。

由于泛解析的存在,可能会导致域名收集过程中存在大量的误报,需要自行去判断;一般首要考虑有意义的域名。

探测与识别:生成多个针对目标域名不存在的随机子域名 eg:xxxxxxxxxxx.target.com,对其进行 DNS 查询(pingdignslookup 等)记录返回 IP 地址,若返回了 IP 地址,则很可能就是泛解析的地址。

  • 证书的历史解析记录;

  • 利用已有漏洞,网站主动引导;

    • 网站有 ssrf 等漏洞,让网站来访问攻击机,攻击机监听来获取真实 IP ;
    • 遗留文件 eg:phpinfo 类似功能;
  • 邮箱系统;

    • 让目标主动发送:部署架设的邮件服务器如果向外部用户发送邮件的话,那么邮件头部的源码中会包含此邮件服务器的真实 IP 地址;
    • 攻击者主动发送(需要自己的邮件服务器不能第三方):通过发送邮件给一个不存在的邮箱地址,因为该用户邮箱不存在,所以发送将失败,并且还会收到一个包含发送该电子邮件给你的服务器的真实 IP 通知;
  • 部分爆破工具,如 Subfinder、Massdns、Amas 等,都内置了泛解析过滤功能

  • 手动编写脚本处理

    • 爆破 dnsreconfierce 获取 IP 列表,爆破得到的所有子域名都保存到一个文件
    • 脚本(遍历子域名 IP,对于每个 IP 地址,若它等于之前探测到的泛解析 IP 地址,则删除或标记,剩下的就是真实子域名)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 示例
import sys

def filter_wildcard(input_file, wildcard_ip):
"""
过滤包含泛解析 IP 的子域名
"""
try:
with open(input_file, 'r') as f:
lines = f.readlines()

filtered_domains = []
for line in lines:
parts = line.strip().split()
if len(parts) >= 2:
domain, ip = parts[0], parts[1]
if ip != wildcard_ip:
filtered_domains.append(domain)

return filtered_domains

except FileNotFoundError:
print(f"Error: The file '{input_file}' was not found.")
sys.exit(1)

if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python filter_domains.py <input_file> <wildcard_ip>")
sys.exit(1)

input_file = sys.argv[1]
wildcard_ip = sys.argv[2]

real_domains = filter_wildcard(input_file, wildcard_ip)

print("Found the following real subdomains:")
for domain in real_domains:
print(domain)

常见的邮件触发点有:

  1. RSS 订阅
  2. 邮箱注册、激活处
  3. 邮箱找回密码处
  4. 产品更新的邮件推送
  5. 某业务执行后发送的邮件通知
  6. 员工邮箱、邮件管理平台等入口处的忘记密码

端口信息收集

扫描工具的总结 https://xz.aliyun.com/t/15753

常用端口介绍及利用

[[../常用端口介绍及利用/常用端口介绍及利用收集|常用端口介绍及利用收集]]

常用端口利用总结

https://www.cnblogs.com/wjw-zm/p/11803681.html 】上面文章转载于该处,若失效可看。

端口扫描

Nmap 进行端口扫描,中文版参考指南: https://nmap.org/man/zh/

[[../常用安全工具的基本使用/Nmap/Nmap|Nmap]] 的基础使用

网站信息收集(框架组件识别等)

框架组件识别示例:

FastJson: https://forum.butian.net/share/1679

Shiro: https://mp.weixin.qq.com/s/j1nDnb0Ub5bk2-Tq5tt2pg

52 类 110 个主流 Java 组件和框架介绍:
https://blog.csdn.net/agonie201218/article/details/125300729

操作系统

  • ping 判断:Windows 的 TTL 值一般为 128,Linux 为 64;
    TTL 大于 100 的一般为 Windows,几十的一般为 Linux;
  • nmap -O 参数
  • Windows 大小写不敏感,Linux 区分大小写

网站服务、容器类型

apache、nginx、tomcat、IIS

通过容器类型、版本可考虑对应容器存在的漏洞(解析漏洞)

脚本类型

php、jsp、asp/aspx、python

知道是什么语言才可以针对性的进行文件扫描、文件上传等操作

数据库类型

SQL 注入要判断数据库类型,不同数据库在处理一些函数的时候会有一些不同

  • 常见数据库类型及默认端口

    • Oracle/1521
    • MySQL/3306
    • SQL Server/1433
    • Postgresql/5432
    • MongoDB/27017
    • Access/文件型数据库(不需要端口)
  • 语言与常用数据库

    • asp:SQL Server、Access
    • .net:SQL Server
    • php:MySQL、Postgresql
    • java:Oracle、MySQL
  • 常用判断方法

    • 数据库特有函数判断
    • 特殊符号判断
    • 数据库对字符串处理方式判断
    • 数据库特有数据表判断
    • 盲注特别函数判断

SQL注入如何判断数据库类型

CMS 识别

CMS:内容管理系统,用于网站内容文章管理

常见 CMS:WordPress、Joomla、Drupal、dedecms(织梦)、Discuz、phpcms 等

http://www.yunsee.cn/cms

CMS 检测识别工具:

敏感文件、目录(源码泄露、获取)

常见敏感文件或目录

  • robots.txt
  • crossdomain.xml
  • sitemap.xml
  • 后台目录
  • 网站安装目录
  • 网站上传目录
  • mysql 管理页面
  • phpinfo
  • 网站文本编辑器
  • 测试文件
  • 网站备份文件(.rar、.zip、.7z、.tar.gz、.bak)
  • DS_Store 文件
  • vim 编辑器备份文件(.swp)
  • WEB-INF/web.xml 文件

敏感文件、敏感目录挖掘一般依靠工具脚本来寻找,eg:御剑、BBscan 等

举例

  • robots.txt

纯文本文件,用来声明该网站不想被搜索引擎(或爬虫)访问的部分,或指定搜索引擎只收录指定的内容。当访问该站点时,爬虫会先检查是否存在 robots.txt 文件;若存在,则按照上面的内容来确认访问范围;若不存在,则沿着链接抓取。

  • crossdomain.xml

跨域,即需要的资源不在自己的域服务器上,需要访问其他域服务器。

跨域策略文件为 xml 文档文件,主要为 web 客户端(如 Adobe Flash Player 等)设置跨域处理数据的权限。

重点查看 allow-access-from 字段获取网站目录信息

GooleHacking 语法:

1
inurl:crossdomain filetype:xml intext:allow-access-from
  • sitemap.xml

方便告知搜索引擎哪些页面可供抓取。一般为 xml 文件,列出网站中的网址及其相关每个网址的其他元数据(上次更新时间、更改频率、相对于网站上其他网址的重要程度为何等)。

GoogleHacking 语法:

1
inurl:sitemp filetype:xml
  • 敏感目录收集方式
  1. 网页中寻找
    • robots.txt
    • F12
    • 图片属性路径
    • 结合域名+目录,工具扫描
    • 手动输入常见后台管理地址进行尝试
  2. 多个不同端口寻找

有些网站不同端口即专门的后台管理地址

  1. 网站分目录

eg:http://www.xxx.com/test/admin/manage.php

  1. 子域名下寻找
  • 网站备份文件

常见备份文件后缀:.rar、.zip、.7z、.tar.gz、.bak、.txt、.old、.temp、.tmp、.bak、.phps

  • 目录扫描
  1. 目录字典暴力破解;
  2. 爬虫爬取所有链接,对每个链接再爬,最后总结页面信息;

目录扫描工具

feroxbuster

dirb

dirsearch

dirmap

dirBuster

御剑后台扫描工具

  • 源代码泄露
1
2
3
4
5
6
7
8
9
10
11
12
版本管理工具泄露常规方式
github
git
svn
.DS_Store
.hg
.bzr
cvs

操作不当,安全意识薄弱造成的泄露
WEB-INF
备份文件
  1. Github 泄露

开发人员将代码上传时未删除重要信息,eg:邮箱信息、SVN 信息、内部账号密码、数据库来连接信息、服务器配置信息等。这类信息可以通过 github 上搜索公司特定信息。

[[../查询接口及搜索语法#GitHub 资源搜索语法|GitHub 资源搜索语法]]

eg:niniub.com,在 github 上搜索;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com smtp password
site:Github.com String password smtp

site:Github.com sa password
site:Github.com root password
site:Github.com User ID='sa';Password

site:Github.com svn
site:Github.com svn username
site:Github.com svn password
site:Github.com svn username password

site:Github.com inurl:sql

site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部
  1. git 泄露

开发人员用 git 进行版本控制,对网站进行自动部署。配置不当,可将 .git 文件部署到线上环境,引起 git 泄露。

防护:部署时将 .git 文件夹进行删除;可在 nginx 配置中,对 .git 目录的访问进行屏蔽。

GoogleHacking 语法:".git" intitle:"index of"

工具:GitHack;通过泄露的 .git 文件夹下的文件,重建还原工程源代码。

  1. .svn 泄露

也是用来版本迭代。使用 svn checkout 功能来更新代码。

GoogleHacking 语法:".svn" intitle:"index of"

工具: https://github.com/admintony/svnExploit

  1. 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 文件,得到网站源码。

网站 WAF 识别

WAF ,即 Web Application FireWall (Web 应用防火墙)。用于保护网站,防止攻击的安全防护系统;最直接、最有效的 Web 安全防护产品。

主要用于防止各类网络攻击,自动化攻击,常见威胁等。如:SQL 注入、XSS 跨站、CSRF、网页后门、暴力破解、撞库、批量注册、自动发贴、爬虫、代码分析、嗅探、越权、应用层 DDOS、远程恶意包含等

WAF 识别

可根据拦截页面来判断,identywaf 项目内置;

https://github.com/stamparm/identYwaf

wafw00f:

https://github.com/EnableSecurity/wafw00f

https://www.kali.org/tools/wafw00f/

nmap

1
2
nmap -p80,443 --script http-waf-detect ip
nmap -p80,443 --script http-waf-fingerprint ip

看图识别,常见的 WAF 拦截页面总结

蜜罐识别

  • 项目识别

https://github.com/graynjo/Heimdallr

https://github.com/360quake/quake_rs

quake.exe init apikey 值
quake.exe honeypot 目标

  • 人工识别

端口多而有规律性(针对多服务蜜罐)、指纹特征等。


PS:蚁景的仓库,上方部分工具好像都是蚁景把源库搬到这里的。 https://gitee.com/yijingsec/projects (当然,这里面还有很多好的工具文件值得探索)