信息收集
1. 域名信息
判断方法:
- Kali whois
- https://whoisrequest.com/
- https://who.is/
2. 网站架构
1. 空间
https://www.cnblogs.com/QiMing1/p/15702756.html
判断方法:
2. 操作系统
- Linux / Windows
Windows: Linux:
- Win 2000 IIS 6.0 Ubuntu
- Win 2003 IIS 7.0 CentOS
- Win 2008 IIS 7.0/7.5
- Win 2012 IIS 8.0
- Win 2016 IIS 8.5
- Win 10 IIS 10.0
判断方法:
- 修改大小写
3. Web 服务器 / Web 容器 / Web中间件
Web 服务器: Nginx / Apache / IIS
Web 容器: IIS ( ASP容器 ) / Tomcat( Servlet容器 ) / Jboss ( JEB容器 )
Web中间件: Tomcat / Jboss / Jetty / Weblogic
判断方法:
- 根据响应包Serve字段
- 根据报错信息判断
- 根据默认页面判断
5. 脚本
- asp / aspx / php / jsp / Python / Java
判断方法:
- 查看后缀
- 抓包看响应包cookie 字段
6. 数据库
关系型: Access / Mysql -- 3306/ Oracle -- 1521 / Postgresql -- 5432 / SQL Server --1433 / DB2 -- 5000
非关系型 : MongoDB -- 27017 / Redis -- 6479 / Memcached -- 11211
注:Access数据库为文件/文档形式,不存在独立的进程,没有默认端口。
判断方法:
- 根据端口判断
- 根据脚本与数据库的搭配关系判断
Asp -- SQL Server,Access
php -- MySQL,PostgreSQL
Java -- Oracle,MySQL
3. 根据数据库特有函数判断
len(): SQL Server 、MySQL 以及 db2 返回长度的函数。
length(): Oracle 和 INFORMIX 返回长度的函数。
version(): MySQL 查询版本信息的函数
@@version: MySQL 和 SQL Server 查询版本信息的函数
substring,substr:
MySQL 两个函数都可以使用
Oracle 只可调用substr
SQL Server 只可调用 substring
4. 根据特殊符号进行判断
"-- " , "/* */" , " # " 是 MySQL 的注释符, 返回错误则说明可能不是 MySQL
"-- " 是 Oracle 和 SQL Server 支持的注释符
; 是子句查询标识符,Oracle不支持多行查询,若返回错误,则说明可能是 Oracle
7. 前端框架
- jQuery / BootStrap / Vue / React / Angular
判断方法:
- 查看源代码
8. 后端框架
- Django - Python / Laravel - PHP / Ruby on Rails - Ruby / ExpressJS - NodeJS / CakePHP - PHP / Flask - Python/ Asp.NET - C# / Spring Boot - Java / Phoenix - Elixir/
判断方法:
- 根据Cookie判断
- 根据CSS / 图片等资源的hash值判断
- 根据URL路由判断
-
- 如wp-admin
- 根据网页中的关键字判断
- 根据响应头中的X-Powered-By
9. CMS 指纹
判断方法:
- https://www.yunsee.cn/
- http://finger.tidesec.net/
3.IP(CDN / WAF)
https://www.anquanke.com/post/id/227818
https://www.anquanke.com/post/id/231437
https://www.anquanke.com/post/id/231441
- 判断CDN
- Ping ( 根据返回的特殊cdn主机名判断 ) https://viewdns.info/ping/domain=www.baidu.com
- 多地ping 网址:http://ping.chinaz.com/ http://ping.chinaz.com/
- 反查域名 IP,看结果是否有大量不相关的域名存在 https://viewdns.info/reverseip/
- nslookup ( 返回域名解析对应多个 IP 地址,网站则有CDN )
- Wappalyzer 插件
- https证书 ( 有的cdn颁发的证书带有cdn名称 )
- 观察请求响应的返回数据的头部,是否有 CDN 服务商标识
- 若 asp 网站 响应头server字段 不是 IIS、而是 Nginx,则可能使用了 Nginx反向代理 (服务器代理) 到 CDN
- 在线检测:https://www.cdnplanet.com/tools/cdnfinder/
- 绕过CND,寻找真实IP
1.通过查询 子域名 / CNS 历史记录 / DNS 解析记录
注:
很多网站只给主域名进行CNS服务,所以可探测其子域名,获得真实IP。但不一定正确,还需进一步确认,扫描同 C 段的 IP 和端口,然后逐个探测判断是否为真实IP。
在网站使用 CDN 服务之前,解析的是真实IP,所以可以查询 DNS 历史记录,看是否能探 测到使用 CDN 之前的 IP。
DNS 解析记录中重点关注 TXT 记录( 保存域名的附加文本信息 )和 SPF 记录(反人伪造域名的垃圾邮件),是否有泄露真实IP。
2.通过 Email
- RSS 订阅
- 邮箱注册、激活处
- 邮箱找回密码处
- 产品更新的邮件推送
- 某业务执行后发送的邮件通知
- 员工邮箱、邮件管理平台等入口处的忘记密码
注: 一般大型网站部署架设的邮件服务器如果向外部用户发送邮件的话,如果中间未经任何数据处理和防护措施,那么邮件头部的源码中会包含此邮件服务器的真实 IP 地址。
- 判断WAF
- Kali WAF00W
- 根据WAF类型,进行绕过
4. 子域名 / C段 旁站
1. 子域名收集
基于DNS:
- https://securitytrails.com/
- https://rapiddns.io/
- https://dnslytics.com/
- https://w-e-b.site/?act=findomain
基于证书:
- https://transparencyreport.google.com/https/certificates
- https://crt.sh/
- https://search.censys.io/
基于爆破:
- oneforall python3 oneforall.py --target baidu.com run
- https://phpinfo.me/domain/
- http://z.zcjun.com/
2.C段 旁站
方法:
- http://s.tool.chinaz.com/same
- http://www.bug8.me/bing/bing.php
- shodan ip = "192.168.3.1/254"
5.端口
方法:
- https://nmap.online/
- https://w-e-b.site/?act=nmap
- nmap
6.敏感文件/目录
- 后台路径爆破
- 爬虫