type
Post
status
Published
date
Mar 23, 2022
slug
InformationGathering
summary
tags
学习
category
学习思考
icon
password
信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进行。 最简单的比如说目标站点的IP、中间件、脚本语言、端口、邮箱等等。 信息收集对于渗透测试来说是非常重要的,我们手上掌握的目标的信息越多,成功渗透的概率就越大,而信息收集又分为两类。
  • 第一类:主动信息收集:通过直接访问、扫描网站,这种流量将流经网站
  • 第二类:被动信息收集:利用第三方的服务对目标进行访问了解,比例:Google搜索、Shodan搜索等

一、Whois

查whois信息,主要关注:注册商、注册人、邮件、DNS解析服务器、注册人联系电话等 国外的网站不需要备案,有可能查不到,国内的基本上都可以查到。 如果在站长之家上隐藏了信息,可在who.is上再次查看
进一步查企业的备案信息

二、子域名

子域名是在顶级域名下的域名,收集的子域名越多,我们测试的目标就越多,渗透的成功率也越大。 在主站找不到突破口的时候,我们可以从子域名入手

利用 DNS 数据集收集子域

注:将需要 {domain} 换成需要查询的域名

基于SSL证书查询

原理:
“要向用户提供加密流量,网站必须先向可信的证书授权中心 (CA) 申请证书。然后,当用户尝试访问相应网站时,此证书即会被提供给浏览器以验证该网站。近年来,由于 HTTPS 证书系统存在结构性缺陷,证书以及签发证书的 CA 很容易遭到入侵和操纵。 Google 的证书透明度项目旨在通过提供一个用于监测和审核 HTTPS 证书的开放式框架,来保障证书签发流程安全无虞。”
查找一个域名证书的最简单方法是使用搜索引擎来收集计算机的CT日志,并让任何搜索引擎搜索它们。前两种比较常用。

利用威胁情报平台数据

注:将需要 {domain} 换成需要查询的域名, 以下平台均需注册,注册后免费试用

常规收集方法

1.站点配置文件

信息泄露问题主要就是某域名下的一些文件会存储与其相关的一些域名,如子域名。 此类文件包括跨域策略文件 crossdomain.xml,sitemap.txt、sitemap.html、sitemapindex.xml、sitemapindex.xml

2.检查内容安全策略

内容安全策略(CSP,Content Security Policy)是一种声明的安全机制,可以让网站运营者能够控制遵循 CSP 的用户代理(通常是浏览器)的行为。通过控制要启用哪些功能,以及从哪里下载内容,可以减少网站的攻击面。CSP 的主要目的是防御跨站点脚本(cross-ste scripting,XSS)攻击。例如,CSP 可以完全禁止内联的 JavaScript,并且控制外部代码从哪里加载。它也可以禁止动态代码执行。禁用了所有的攻击源,XSS 攻击变得更加困难。CSP 中的关键字有 default-src、img-src、object-src 和 script-src。其中 *-src 可能会存在域名信息。
抓取方法:
1. 手动抓包获取 HTTP header 的 Content-Security-Policy 属性 2.Python 的 Requests 获取 import requests res = requests.post(url=url, headers=headers, data=data, allow_redirects=False) if not res.headers['Content-Security-Policy']: print("There is no Content-Security-Policy in the header") else: 处理主体代码

3.搜索引擎

Google

  • site:www.xxx.com 可以利用Google和Bing这样的搜索引擎进行搜索查询(site:www.xxx.com)/) Google还支持额外的减号运算符,以排除我们对“site:wikimedia.org -www -store ”不感兴趣的子域名。
  • site:x.x.x. (目标 IP) 当我们获取到了子域名的真实 ip 后,可以尝试搜索 site:x.x.x. 进行 C 段搜索,通过这种方法也能找出很多有价值的其他相关域名。

4.代码仓库

在代码仓库上搜索子域名,运气好的话,可能会找到密钥之类的

5.域传送

原理:
域传送操作是指备用服务器向主服务器查询来刷新自己的 Zone 数据库,保证数据一致性。 此操作的目的是为了防止主域名服务器因意外故障变得不可用时影响到全局。 正常情况下, 只有在网络里存在备用域名 DNS 服务器时,DNS 区域传送操作才有必要执行。 一旦 DNS 服务器被错误地配置成任何人发出请求,都向其提供 Zone 数据库的拷贝,就会被攻击者利用。

nslookup命令

如果获得了目标域名,并不清楚目标的主dns服务器时,先查询目标域名的主dns服务器 > nslookup -type=ns landgrey.cn > nslookup 默认服务器: public1.114dns.com Address: 114.114.114.114 > server ring.cugb.edu.cn 默认服务器: ring.cugb.edu.cn Address: 202.204.105.1 > ls cugb.edu.cn

dig 命令

dig @ns2.xxx.com xxx.com axfr ns2.xxx.com 为提供数据的服务器,xxx.com 为要传输的关键字,axfr 为区域传输选项。

nmap

nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=xxx.edu.cn -p 53 -Pn dns.xxx.edu.cn

python 中 dns 库

xfr = dns.query.xfr(where=server, zone=self.domain, timeout=5.0, lifetime=10.0) zone = dns.zone.from_xfr(xfr)
一般情况下,DNS 服务器都配置正确,关闭了 dns 传输或设置了白名单,漏洞利用成功的概率较低。

利用 DNS 查询收集子域

原理: 通过枚举常见的 SRV 记录并做查询来收集子域 srv,以及通过查询域名的 DNS 记录中的 MX,NS,SOA,TXT 记录来收集子域。
SRV 记录: 添加服务记录服务器服务记录时会添加此项,SRV 记录了哪台计算机提供了哪个服务。格式为:服务的名字. 协议的类型(例如:example-server.tcp)。 以下命令枚举给定域名的 SRV 记录:
nmap --script dns-srv-enum.nse --script-args "dns-srv-enum.domain='google.com'"
MX 记录: 建立电子邮箱服务,将指向邮件服务器地址,需要设置 MX 记录。建立邮箱时,一般会根据邮箱服务商提供的 MX 记录填写此记录。
nslookup >set type=mx >qq.com
NS 记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置 NS 记录。
nslookup >set type=ns >qq.com
SOA 记录: SOA 叫做起始授权机构记录,NS 用于标识多台域名解析服务器,SOA 记录用于在众多 NS 记录中那一台是主服务器。
nslookup >set type=soa >qq.com
TXT 记录: 可任意填写,可为空。一般做一些验证记录时会使用此项,如:做 SPF(反垃圾邮件)记录
nslookup >set type=txt >qq.com

爆破枚举

工具很多,比较常见的是:
  • layer子域名挖掘机
  • K8
  • orangescan
  • DNSRecon
在线爆破子域名(不推荐)

三、IP-/-探测

工具

IP收集

一般IP的话,我们在收集子域名的时候,就大概知道目标网站的IP段了。 也可以通过whois命令获取。
  • 网站IP地址查询批量查询网站IP地址买链帮手,网站批量查询工具(支持批量ip查询) http://www.link114.cn/ip/

真实ip获取

很多时候,网站都会开启CDN加速,导致我们查询到的IP不是真实的IP,所以得先查询到真实的IP地址。
参考文章:

1. 国外主机解析域名(超级PING)

大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能没有,此时我们使用国外的 DNS 查询,很可能获取到真实 IP。
多 PING 测试工具:
nslookup xxx.com 国外冷门DNS地址

2. 网站邮件头信息

比如说,邮箱注册,邮箱找回密码、RSS 邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的 IP, 查看邮件头信息,获取到网站的真实 IP。
另一个技巧是将邮件从你自己的邮箱发送到不存在的电子邮件地址@yourtarget.com。如果发送失败,你应该会收到一个通知。

3. DNS 历史解析记录

查询域名的历史解析记录,可能会找到网站使用 CDN 前的解析记录,从而获取真实 ip,相关查询的网站有:

4. 子域名

有点网站的子域名站点并没有加入 CDN,而且有可能跟主站在同一个 C 段内,这时候,就可以通过查找子域名来查找网站的真实 IP。

5. 网络空间搜索引擎

通过关键字或网站域名,就可以找出被收录的 IP,很多时候获取到的就是网站的真实 IP。

6. 利用 SSL 证书寻找真实 IP

证书颁发机构 (CA) 必须将他们发布的每个 SSL/TLS 证书发布到公共日志中,SSL/TLS 证书通常包含域名、子域名和电子邮件地址。 SSL 证书搜索引擎:https://censys.io/ipv4?q=github.com
如果你的攻击目标使用了SSL证书,在Censys选择输入时选择“证书”,提供你目标服务器的域名,点击回车。点击每个结果显示详细信息,在最右侧的搜索菜单(Explore)中选择“IPv4主机”,可以看到使用该证书的服务器IP地址

7. 全网扫描

通过 Zmap、masscan 等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实 IP。

8. 配置不当导致绕过

在配置 CDN 的时候,需要指定域名、端口等信息,配置不当可能导致 CDN不生效。
例如: www.test.com 和 test.com 解析到同一个站点,而 CDN 只配置了 www.test.com,访问 test.com,就可以绕过 CDN 了。 站点同时支持 http 和 https 访问,CDN 只配置 https 协议,那么这时访问 http 就可以轻易绕过。

9. XML-RPC广播

XML-RPC(远程过程调用)是一个在WordPress博客平台很有名的工具——允许管理员使用XML请求远程管理其博客。ping包是ping命令的响应包。A发送ping请求到B,B回复A收到了请求,即回复一个ping包。 访问https://www.target.com/xmlrpc.php可以轻松知道目标服务器是否启用了XML-RPC广播,启用的情况下会返回信息:XML-RPC server accepts POST requests only。
根据WordPress XML-RPC Pingback API文档,该功能有sourceUri和targetUri两个参数。

四、旁站、C段

旁站:是和目标网站在同一台服务器上的其它的网站。 C端:是和目标服务器ip处在同一个C段的其它服务器。
  • FOFA ip=”192.168.1.1/24”
  • shodan net=”192.168.1.1/24”
  • 利用Google,语法:site:125.125.125.*
  • 利用Nmap,语法:nmap -p 80,8080 –open ip/24

五、隐藏资产

很多时候访问目标资产 IP 响应多为:401、403、404、500,但是用域名请求却能返回正常的业务系统(禁止 IP 直接访问),因为这大多数都是需要绑定 host 才能正常请求访问的 (目前互联网公司基本的做法)(域名删除了 A 记录,但是反代的配置未更新),那么我们就可以通过收集到的目标的 域名 和 目标资产 的 IP 段组合起来,以 IP 段 + 域名 的形式进行捆绑碰撞,就能发现很多有意思的东西。
进行hosts碰撞需要目标的域名和目标的相关IP作为字典 将ip和域名分别放入 ip.txt 和 hosts.txt ,并和脚本文件放同一目录,执行即可 python IP_hosts_scan.py

六、开放端口探测

使用在线网站探测
工具探测
  • 使用nmap探测。nmap -A -v -T4 目标ip / nmap -T4 -sT -p- -sV ip
  • 使用masscan探测(kali自带)
NMAP SCRIPT HELP -VER007(nmap脚本手册) https://www.lshack.cn/nmap-script/nmap-script-help.html
常见端口漏洞:
端口 服务 说明 21 FTP 主要看是否支持匿名,也可跑弱口令 22 SSH 弱口令爆破 23 telnet 弱口令爆破 80-90 WEB 常见WEB漏洞以及一些为管理后台 161 snmp public弱口令 389 ldap 是否为匿名访问 443 openssl 心脏出血以及一些WEB漏洞测试 445 smb 跑弱口令,检测是否有ms_08067等溢出 873 rsync 是否为匿名访问,也可以跑弱口令 1025 RPC NFS匿名访问 1099 java rmi 远程命令执行漏洞 1433 mssql 弱口令爆破 1521 oracle 弱口令爆破 2082/2083 cpanel主机管理系统登陆 弱口令爆破 2222 DA虚拟主机管理系统登陆 弱口令爆破 2601,2604 zebra路由器 默认密码zebra 3128 squid 代理默认端口 如果没设置口令很可能就直接漫游内网 3306 mysql 弱口令爆破 3312/3311 kangle 主机管理系统登陆 说明 3389 RDP 弱口令爆破,SHIFT后门,放大镜,输入法漏洞 4440 rundeck web 4848 GlassFish web中间件 弱口令admin/adminadmin 5432 postgres 弱口令爆破 5560,7778 iSqlPlus 5900,5901,5902 vnc 弱口令爆破 5984 CouchDB http://xxx:5984/_utils/ 6082 varnish 6379 redis 一般无验证,直接访问 7001,7002 weblogic 弱口令爆破 7778 Kloxo 主机控制面板登录 8080 tomcat\jboss 弱口令爆破,jboss后台可能不验证 8649 ganglia 8080-8090 常见WEB端口 8083 Vestacp主机管理系统 (国外用较多) 8649 ganglia 8888 amh/LuManager 主机管理系统默认端口 说明 9000 fcgi fcgi php命令执行漏洞 9200 elasticsearch 代码执行 9043 websphere 弱口令爆破 10000 Virtualmin/Webmin 服务器虚拟主机管理系统 11211 memcache 内存泄露 27017,28017 mongodb 未授权访问 50000 Upnp SAP命令执行 50060,50030 hadoop WEB 未授权访问
常见端口列表整理如下:
21,22,23,80-90,161,389,443,445,873,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306, 3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649, 8888,9000,9200,10000,11211,27017,28017,50000,50030,50060

七、网站架构探测

当我们探测目标站点网站架构时,比如说:操作系统,中间件,脚本语言,数据库,服务器,web容器等等,可以使用以下方法查询。

手动探测

  • 查看数据包响应头
  • 访问robots.txt # 一般的CMS会在网站根路径下的robots.txt留下相关信息:
  • 访问不存在的页面 # 随意提交一个错误页面,不同中间件Apache、IIS、nginx的默认的错误页面都是不同的,而且不同版本的错误页面也是不同的。

工具

  • wappalyzer插件——浏览器插件

八、敏感文件、敏感目录探测

通常我们所说的敏感文件、敏感目录大概有以下几种:
  • Git
  • hg/Mercurial
  • svn/Subversion
  • bzr/Bazaar
  • Cvs
  • WEB-INF泄露
  • 备份文件泄露、配置文件泄露
敏感文件、敏感目录挖掘一般都是靠工具、脚本来找,当然大佬手工也能找得到。
常用的工具有:
  • 御剑
  • 爬虫(AWVS、Burpsuite等)
  • wwwscan

九、目标域名邮箱收集

用途: 可用来进行爆破或者弱口令登录以及撞裤攻击。
  • 通过说明文档以及网站页面收集,或者网站发表者以及留言板信息处收集账号
  • 通过 teemo,metago,burpusit,awvs,netspker 或者 google 语法收集
  • 搜索相关 QQ 群收集相关企业员工的社交账号

十、WAF探测

Waf也叫Web应用防火墙,是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
  • 手动提交恶意数据,查看拦截页面
  • 工具(WAFW00F、Nmap)
Nmap
nmap -p80,443 --=http-waf-detect ip nmap -p80,443 --=http-waf-fingerprint ip
WAFW00F探测WAF wafw00f -a 域名
一次Linux遭入侵被挖矿的应急响应经历分离免杀学习笔记