1.主动信息搜集
直接访问目标对其进行工具扫描,有网络流量经过目标服务器。容易留下痕迹被溯源。
被动信息收集。
基于公开的渠道,搜索引擎等,再不与目标系统直接交互的情况下获取信息,并且尽量避免留下痕迹。
2.域名信息搜集
whois 查询
1.通过在线网站查询,如站长之家,阿里云等
2.通过kali自带的whois查询,命令行格式为 whois url
备案信息查询
网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他国家,则不需要进行备案。
子域名搜索
google hacking 常用语法_bmz12138。的博客-CSDN博客 参考我之前的博客
google hacking:通过谷歌搜索语法site:baidu.com查找网站根域名带有site:baidu.com字段的网站获取子域名
通过fofa搜索语法domain=“baidu.com”查找根域名带有此字段的站点
https://zoomeye.org/ 钟馗之眼搜索语法site:baidu.com查找根域名带有此字段的站点
https://www.shodan.io/ shodan搜索语法hostname:baidu.com查找根域名带有此字段的站点
https://quake.cn/quake/#index 360搜索语法domain:”baidu.com”查找根域名带有此字段的站点
https://chaziyu.com/ 一个在线子域名查询站点
更多的语法可以上网查找。
3.旁注,C段,IP反查域名
旁注:同一个服务器下不同站点
C段:同一网段不同服务器下的不同站点
IP反查:利用IP获取服务器解析域名
可以使用nmap,或者在线网站
4.端口探测
使用工具通常会在目标网站留下痕迹,最好使用在线网站扫描端口
在线网站端口扫描 - 站长工具
工具 nmap、Masscan
常见端口及其说明
数据库默认端口:mysql 3306,oracle 1521, mssql 1433,mongoDB 27017,redis 6379
,postgresql 5432等
远程连接默认端口:
- SSH(Secure Shell):22
- Telnet:23
- FTP(File Transfer Protocol):21
- SFTP(SSH File Transfer Protocol):22
- HTTP(Hypertext Transfer Protocol):80
- HTTPS(HTTP Secure):443
- RDP(Remote Desktop Protocol):3389
- VNC(Virtual Network Computing):5900
- SNMP(Simple Network Management Protocol):161
- SMTP(Simple Mail Transfer Protocol):25
文件共享服务默认端口:
- SMB/CIFS(Server Message Block/Common Internet File System):445
- NFS(Network File System):2049
- FTP(File Transfer Protocol):21
- SFTP(SSH File Transfer Protocol):22
- WebDAV(Web Distributed Authoring and Versioning):80/443
- AFP(Apple Filing Protocol):548
- SCP(Secure Copy):22
- TFTP(Trivial File Transfer Protocol):69
SFTP(SSH File Transfer Protocol)和 FTP(File Transfer Protocol)都是用于文件传输的协议,但它们之间有以下几个主要区别:
-
安全性:SFTP基于SSH协议,所有的数据传输都是经过加密的,可以在网络上传输中保护数据的安全性。而FTP协议在传输数据时不加密,容易被黑客窃取和篡改。
-
端口:FTP协议默认使用端口21进行传输,而SFTP协议默认使用端口22进行传输。
-
支持度:SFTP协议通常被认为是更好的选择,因为它可以在绝大多数情况下兼容FTP协议。但是,某些FTP客户端或服务器可能不支持SFTP协议。
-
功能:SFTP协议支持文件和目录的重命名,复制和删除等高级功能。FTP协议需要使用扩展命令才能实现这些功能。
Web应用服务默认端口:
- HTTP(Hypertext Transfer Protocol):80
- HTTPS(HTTP Secure):443
- Tomcat(Java Web应用服务器):8080
- JBoss(Java Web应用服务器):8080
- Node.js(JavaScript运行环境):3000
- Nginx(高性能Web服务器):80/443
- Apache(开源Web服务器):80/443
- IIS(Internet Information Services):80/443
- Django(Python Web应用框架):8000
- Ruby on Rails(Ruby Web应用框架):3000
邮件服务端口:
-
SMTP (Simple Mail Transfer Protocol):用于发送邮件的协议,通常使用TCP协议的25端口。
-
POP3 (Post Office Protocol version 3):用于接收邮件的协议,通常使用TCP协议的110端口。
-
IMAP (Internet Message Access Protocol):也是用于接收邮件的协议,但功能更强大,可以管理服务器上的邮件,通常使用TCP协议的143端口。
-
SMTPS:SMTP的安全版本,使用SSL或TLS加密传输邮件,通常使用TCP协议的465端口。
-
POP3S:POP3的安全版本,使用SSL或TLS加密传输邮件,通常使用TCP协议的995端口。
-
IMAPS:IMAP的安全版本,使用SSL或TLS加密传输邮件,通常使用TCP协议的993端口。
网络常见协议端口:
-
DHCP (Dynamic Host Configuration Protocol):用于自动分配IP地址的协议,通常使用UDP协议的67和68端口。
-
DNS (Domain Name System):用于将域名转换为IP地址的协议,通常使用TCP/UDP协议的53端口。
-
SNMP (Simple Network Management Protocol):用于管理和监控网络设备的协议,通常使用UDP协议的161和162端口。其中,161端口用于管理站点向代理发送请求,162端口用于代理向管理站点发送通知。
需要注意的是,这些协议和端口的具体应用和配置可能因不同的场景和网络环境而有所不同,具体应根据实际情况进行配置和使用。
5.cms指纹识别
CMS指纹识别是一种用于判断目标网站所使用的CMS系统和版本的技术,它通过对目标网站的一些特征进行分析和比对,来识别出目标网站所使用的CMS系统和版本信息。
CMS系统是指网站内容管理系统,它可以帮助网站管理员进行网站内容的发布、修改和管理。常见的CMS系统包括WordPress、Joomla、Drupal、Typecho、DedeCMS、Discuz!、Ecshop等。不同的CMS系统有不同的特征和特点,比如目录结构、文件命名、页面结构等,这些特征可以用来进行指纹识别。
CMS指纹识别是一项常用的渗透测试技术,它可以帮助攻击者快速判断目标网站所使用的CMS系统和版本信息,从而有针对性地进行漏洞利用和攻击。同时,CMS指纹识别也可以用于网站管理员进行安全性评估和漏洞扫描,帮助其及时发现和修复网站安全漏洞。
以下是Kali Linux中常用的几个CMS指纹识别工具:
-
WhatWeb:一个快速的网站指纹识别工具,支持识别多种CMS系统和Web应用框架,包括WordPress、Joomla、Drupal、Magento等。可以使用命令
whatweb http://www.example.com
进行指纹识别。 -
Wappalyzer:一个基于浏览器扩展的指纹识别工具,支持识别多种CMS系统、Web应用框架和JavaScript库。可以在浏览器中安装Wappalyzer扩展,并访问目标网站进行指纹识别。
-
CMSeek:一个基于Python编写的CMS指纹识别和漏洞扫描工具,支持识别多种CMS系统和Web应用框架,包括WordPress、Joomla、Drupal、Blogger等。可以使用命令
cmseek -u http://www.example.com
进行指纹识别。
还可以使用在线网站识别。
查询到cms之后,就可以在网上搜索该cms的漏洞,从而进行下一步渗透。
6.CDN
CDN(Content Delivery Network)是一种分布式网络架构,它可以将网站内容和资源缓存到全球各地的节点上,从而提高网站的访问速度和稳定性。对于渗透测试和漏洞扫描等安全测试活动而言,CDN识别是一项非常重要的技术。因为CDN的存在会影响到渗透测试和漏洞扫描的结果和效果。
下面介绍一些CDN识别的方法和技巧:
-
DNS记录分析:通过分析目标网站的DNS记录,可以获取到目标网站使用的CDN服务商和节点IP地址。这可以使用一些工具进行自动化扫描,比如Fierce、DNSMap等。
-
HTTP响应头分析:通过分析目标网站的HTTP响应头,可以获取到目标网站使用的CDN服务商和节点信息。常见的CDN服务商的HTTP响应头信息可以参考网络资料进行查询和分析。
-
指纹识别:通过对目标网站的特征进行指纹识别,可以判断目标网站是否使用了CDN。这可以使用一些工具进行自动化扫描,比如Wappalyzer、WhatWeb等。
-
端口扫描:通过对目标网站的端口进行扫描,可以判断目标网站是否使用了CDN。一些CDN服务商使用的端口,比如Cloudflare使用的端口是80、443、2052、2082、2083、2086、2087、2095、2096等。
如果目标网站使用了CDN,可以尝试绕过CDN进行渗透测试和漏洞扫描。绕过CDN的方法包括但不限于:
-
直接使用目标网站的IP地址进行渗透测试和漏洞扫描。
-
使用一些工具进行CDN绕过,比如CloudFail、HatCloud等。
需要注意的是,渗透测试和漏洞扫描等安全测试活动应该在合法、合规和道德的前提下进行,谨慎使用。
nslookup:在windows或者linux中的终端命令行界面输入nslookup进入域名解析操作,如出现多个解析结果则存在CDN,只有一个结果则不存在CDN。
CDN绕过,查找真实ip
1.利用子域名或主域:由于成本问题,可能只有域名的主站有CDN,而其他子域名没有CDN,且子站和主站搭载在同一台服务器上或同一网段服务器上则可以通过子站来找到真实ip。也有一些是只有www有CDN 而主域是没有CDN。
2.通过邮件服务系统
- 查看邮件头信息:在邮件客户端中,可以查看邮件头信息,以获取邮件发送者的IP地址。具体操作步骤如下:
- 在邮件客户端中打开要查看的邮件。
- 在邮件中找到“邮件头”或“信封”等选项,一般在邮件正文的上方或下方。
- 打开邮件头,查找"Received:"字段,这个字段记录了邮件传输过程中的路由信息,最后一个"Received:"字段就是最后一跳的邮件服务器IP地址,也就是邮件发送者的IP地址。
通过查找邮件头信息或邮件服务器日志来查找邮件发送者的真实IP地址,主要是利用了SMTP协议的工作原理。
3.国外访问
有些CDN只对国内请求生效,从国外访问就可能不提供CDN节点服务。
4.文件泄露真实ip
phpinfo文件暴露网站的信息,包括网站的真实IP
SERVER_NAME字段中包含服务器IP地址
5.历史域名解析
可能目标之前没有使用CDN,所以可能会存在使用 CDN 前的记录。
可以通过搜索引擎搜索目标的历史快照。
还可以使用DNS历史记录查询工具,查询目标域名历史的DNS解析记录。DNS历史记录可以包含过去的DNS解析信息,包括域名解析到的IP地址等。通过查找历史DNS解析记录,可以尝试获取目标使用CDN前的真实IP地址。
6.利用工具。
还有很多方法,可以上网查找
7.目录/文件收集
在渗透测试中,探测Web目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理、文件上传等重要页面,甚至可能扫描出网站的源代码。
目录扫描工具有非常多种:
-
Dirb: 一个常用的目录扫描工具,使用字典文件进行扫描。在Kali Linux中,可以通过命令“dirb”来使用。
-
Dirbuster: 一个基于Java的目录扫描工具,支持多线程扫描、代理服务器等功能。在Kali Linux中,可以通过命令“dirbuster”来使用。
-
Gobuster: 一个用Go语言编写的目录扫描工具,支持多线程扫描和自定义字典。在Kali Linux中,可以通过命令“gobuster”来使用。
-
Wfuzz: 一个强大的Web应用程序扫描工具,支持目录扫描、参数爆破、弱口令扫描等功能。在Kali Linux中,可以通过命令“wfuzz”来使用。
-
Nmap: 一个多功能的网络扫描工具,可以用来扫描目标主机的开放端口和运行的服务。Nmap还提供了一些NSE脚本,可以用于执行目录扫描。在Kali Linux中,可以通过命令“nmap”来使用。
-
Nikto: 一个常用的Web服务器扫描工具,可以检测服务器的潜在漏洞和安全问题。在Kali Linux中,可以通过命令“nikto”来使用。
-
御剑后台扫描工具
8.识别操作系统
识别操作系统常见方法:
- 看字母大小写,windows对大小写不敏感,Linux敏感
-
端口扫描:使用端口扫描工具(如Nmap)扫描目标主机的开放端口。根据常见端口和服务的对应关系,可以推测目标主机所运行的操作系统。
-
TTL值:使用ping命令发送ICMP包到目标主机,查看返回的TTL值。不同的操作系统设置的TTL值可能不同,通过比较TTL值可以推测目标主机所运行的操作系统。
-
Banner信息:在使用端口扫描工具扫描目标主机的开放端口时,可以查看端口的Banner信息,通过比对不同操作系统的Banner信息可以推测目标主机所运行的操作系统。
-
应用程序:分析目标主机上运行的应用程序,不同操作系统上常用的应用程序也可能不同,从而推测目标主机所运行的操作系统。
-
网络架构:在进行渗透测试时,可能会通过渗透到目标主机之后,获取目标网络的拓扑结构信息,从而推测目标主机所处的操作系统。
参考文章