信息收集方向
整体架构
开发语言
PHP
PHP是一种流行的服务器端脚本语言,用于构建动态网站和Web应用程序。PHP最流行的框架之一是Laravel。
JAVA
Java 是一种流行的面向对象编程语言,用于构建企业级应用程序。Java 生态系统包括 Spring Framework,Hibernate 等框架,它们提供了丰富的功能来开发 Web 应用程序。
Node
JavaScript是一种用于服务器端编程的脚本语言。Node.js是一个基于JavaScript的运行时环境,用于在服务器上运行JavaScript代码。Node.js的生态系统包括Express.js,Koa.js,Nest.js等框架。
Go
Go是一种静态类型的编译型编程语言,由Google开发。它具有高效的并发性能和内存管理,适用于构建高性能的后端服务。
Python
Python 是一种流行的通用编程语言,具有简单易学、灵活性强等特点。在 Web 开发中,Python 最常用于 Django 和 Flask 框架中。
开发框架
CMS是英语Content Management System的缩写,按英语的字面翻译就是内容管理系统,顾名思义,它主要是为了方便发布网络内容而存在的一体化Web管理系统。
很久很久以前,人们做网站很多用静态HTML+CSS+Javascript直接写,也就是静态页面。但是如果有一组页面要维护,对于静态页面来说是一件很麻烦的事,比如我有一个人的Email地址变更了,这一组页面上所有出现的地方都要改,于是就有了适合Web的动态语言,如ASP,PHP,JAVA,.NET等等,它们把数据保存在数据库中,可以动态的引用,这样就能生产出较大规模的网站了,当时诞生了一批大型网站,叫做门户网站,比如新浪,网易,搜狐,他们的内容很丰富,很多,他们有一大批编辑来搜集整理网站的文章,但是总不可能让程序员帮他们把内容上传吧,于是CMS诞生了,通常CMS有一个后台,编辑通过登录后台进入一个可视化的操作界面,把文章录入进去,然后通过上一级的总编审核后发布到网站中。
上面说的文章发布只是CMS的一个功能模块,通常还会有一个会员管理系统,这是最基本的2个功能模块。文章发布会带有一个富文本编辑器,可以直接插入和上传媒体文件,如图片和视频;还有分类以及排序,发布以及更新的时间戳,Tag标签等等,更有强大的CMS会添加自定义的字段,比如加入文章出处,原创作者等。会员系统会分级人员的权限,比如超级管理员能做所有后台能做的事情,而编辑只能添加和编辑删除某个分类下的文章,甚至只能看到这个分类,其他分类对于他是隐藏的。
但是一个功能较强大的CMS远不止如此,他们会有各种各样奇奇怪怪的功能模块,比如留言板,评论系统,预约系统,多语言模块等等。博客系统也是一种CMS,只是它们更侧重于发布博客。
开源
闭源/售卖
/**/
自主研发
–> 信息泄漏
CMS 识别
http://finger.tidesec.com,https://github.com/TideSec/TideFinger
https://github.com/Tuhinshubhra/CMSeeK
HTTP 服务器
HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个TCP端口来接收并处理HTTP请求,这样客户端(如Firefox,Chrome这样的浏览器)就能通过HTTP协议获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等资源。
Nginx
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。其特点是占有内存少,并发能力强,因此经常被用作负载均衡器、HTTP缓存服务器等。Nginx使用异步事件驱动模型,使其能处理数以万计的连接。
Apache
Apache是世界上最流行的Web服务器软件之一,以其强大的功能和灵活性著称。Apache提供了丰富的模块和配置选项,满足各种Web服务需求。尽管在某些性能基准测试中可能不如Nginx,但Apache的广泛支持和丰富的功能集使其仍然是许多企业的首选。
Tomcat
Tomcat是一个开源的Servlet容器,用于执行Java Servlet和JSP(JavaServer Pages)页面。它实现了Java EE的Servlet和JSP规范,为Web应用程序提供运行环境。Tomcat是轻量级的,易于配置和扩展,广泛用于开发和部署Java Web应用程序。
WebLogic
WebLogic是Oracle公司出品的一个Java应用服务器,用于构建、部署和管理企业级的Java Web应用程序。WebLogic提供了丰富的管理工具和集成特性,支持高可用性、负载均衡和集群部署。它是Oracle Fusion Middleware的一部分,与其他Oracle产品有良好的集成性。
Jboss
Jboss(现在通常被称为WildFly)是一个开源的Java应用服务器,支持Java EE规范。它提供了企业级的功能,如事务管理、安全性、消息传递和集群等。Jboss/WildFly以其稳定性和性能著称,并有一个活跃的开源社区,不断推动其发展和更新。
数据库
关系型数据库
关系型数据库通过预定义的数据类型进行数据存储,数据间的关系存储在表中,表之间通过外键进行关联。
常见的关系型数据库有:MySQL、Oracle、PostgreSQL、SQLite、SQL Server等。
关系型数据库具有良好的数据一致性和完整性,支持SQL查询语言,支持事务处理和ACID属性。
MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被甲骨文公司收购。它使用结构化查询语言(SQL)进行数据库管理,是Web应用中最流行的关系数据库管理系统之一。MySQL将数据保存在不同的表中,提高了速度和灵活性。由于其体积小、速度快、总体拥有成本低,且是开放源码的,因此MySQL常被用于中小型和大型网站的开发。
Oracle
Oracle Database,又称为Oracle RDBMS或简称Oracle,是甲骨文公司推出的一款关系数据库管理系统。它在数据库领域处于领先地位,具有可移植性好、使用方便、功能强大等特点,适用于各类大、中、小微机环境。Oracle数据库系统是高效率、可靠性好、适应高吞吐量的数据库方案。
PostgreSQL
PostgreSQL是一种特性齐全的对象-关系型数据库管理系统(ORDBMS)。它基于加州大学计算机系开发的POSTGRES 4.2版本,支持大部分的SQL标准,并提供了许多现代特性,如复杂查询、外键、触发器、视图、事务完整性等。PostgreSQL的许可证灵活,可以免费使用、修改和分发,因此广受开发者欢迎。
SQLite
SQLite是一款轻型的数据库,它遵守ACID的关系型数据库管理系统规范,设计目标是嵌入式的,因此其占用资源非常低。SQLite可以在几百K的内存中运行,支持Windows/Linux/Unix等主流操作系统,并能与多种程序语言结合。相较于MySQL和PostgreSQL等开源数据库,SQLite在处理速度上具有一定优势。
SQL Server
SQL Server是由美国Microsoft公司推出的关系型数据库系统。它是一个可扩展的、高性能的数据库管理系统,为分布式客户机/服务器计算所设计。SQL Server实现了与Windows NT的有机结合,为企业提供了基于事务的信息管理系统方案。
非关系型数据库
非关系型数据库不使用固定的表结构来存储数据,而是采用键值对、文档型、列族和图形等多种数据模型。
常见的非关系型数据库有:MongoDB、Redis、Cassandra、HBase、DynamoDB等。
非关系型数据库特别适用于处理大量非结构化或半结构化数据,且通常具有更高的可扩展性和灵活性。
MongoDB
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。它旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB的数据结构非常松散,采用类似json的bson格式,因此可以存储比较复杂的数据类型。这使得它成为非关系数据库中功能最丰富、最像关系数据库的产品之一。
Redis
Redis是一个开源的、使用ANSI C语言编写的、支持网络的、基于内存亦可持久化的日志型Key-Value数据库。它提供了多种语言的API,并且由于其快速的数据读写能力,常用于作为缓存系统或消息代理。
Cassandra
Cassandra是一套开源的分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Cassandra支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。由于其良好的可扩展性,Cassandra被许多知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
HBase
HBase是一个分布式的、面向列的开源数据库,是Apache的Hadoop项目的子项目。它来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。HBase在Hadoop之上提供了类似于Bigtable的能力,适用于非结构化数据存储。与关系数据库不同,HBase是基于列的存储模式。
DynamoDB
DynamoDB是Amazon提供的一种全托管的NoSQL数据库服务,具有快速而可预测的性能,能够实现无缝扩展。它使用主键来唯一标识表中的每个项目,并提供二级索引以支持更具灵活性的查询。DynamoDB还提供了Streams功能,用于捕获表中的数据修改事件。使用DynamoDB,用户可以轻松创建一个数据库表来存储和检索任意量级的数据,并支持任何级别的请求流量。
服务器操作系统
Windows Server
微软公司开发的服务器操作系统,结合了.NET开发环境,为微软企业用户提供了良好的应用框架。Windows Server的重要版本包括Windows NT Server 4.0、Windows 2000 Server、Windows Server 2003、Windows Server 2008以及后续版本。这些操作系统在企业IT系统中占据重要地位,支持各种企业应用和服务。
Linux
Linux是一种自由和开放源代码的类Unix操作系统,它支持多用户、多进程、多线程、实时性、对称多处理、多平台。由于其源代码的开放性,Linux得到了来自全球程序员的广泛支持,形成了庞大的软件资源库。目前,Linux已经被广泛应用于服务器领域,成为许多企业和组织的首选操作系统。
macOS
macOS服务器操作系统是苹果公司开发的,基于macOS的服务器版本,用于在Mac电脑上构建和管理企业级服务。
检测
1 |
|
1 |
|
域名
Whois
1 |
|
ICP
子域名
https://github.com/lijiejie/subDomainsBrute
相似域名
cn/com/cc…
反查域名
https://whois.chinaz.com/reverse/email
DNS 历史
https://sitereport.netcraft.com
端口服务
常见端口
文件共享服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | Ftp/TFtp文件传输协议 | 匿名上传、下载、爆破和嗅探 |
2049 | Nfs服务 | 配置不当 |
139 | Samba服务 | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入允许、匿名访问、弱口令 |
远程链接服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面连接 | Shift后门(Win sever 2003以下系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
Web应用服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
80/443/8080 | 常见web服务端口 | web攻击、爆破、对应服务器版本漏洞 |
7001/7002 | weblogic控制台 | Java反序列化、弱口令 |
8080/8089 | Jboss/Resin?Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebShphere控制台 | Java反序列化、弱口令 |
4848 | GlassFish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Web控制面板 | 弱口令 |
数据库服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
3306 | Mysql | 注入、提权、爆破 |
1433 | MSSQL数据库 | 注入、提权、SA弱口令、爆破 |
1521 | Oracle数据库 | TNS爆破、注入、反弹Shell |
5432 | PostgreSQL | 爆破、注入、弱口令 |
27017/27018 | MongoDB | 爆破、未授权访问 |
6379 | Redis数据库 | 可尝试未授权访问、弱口令、爆破 |
5000 | SysBase/DB2数据库 | 爆破、注入 |
邮件服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破、嗅探 |
143 | IMAP协议 | 爆破 |
网络常见协议端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
53 | DNS域名系统 | 允许区域传送、DNS劫持、缓存投毒、欺骗 |
67/68 | DHCP服务 | 劫持、欺骗 |
161 | SNMP协议 | 爆破、搜集目标内网信息 |
特殊服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
2181 | Zookeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行、SQL注入 |
9200/9300 | Elastcsearch服务 | 远程执行 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin登陆 |
873 | Rsync服务 | 匿名访问、文件上传 |
6390 | Svn服务 | Svn泄露、未授权访问 |
50000 | SAPManagement Console | 远程代码执行 |
端口扫描
https://github.com/robertdavidgraham/masscan
https://nmap.org/man/zh/man-os-detection.html
https://www.secpulse.com/archives/124398.html
信息泄漏
Git
Git是一个开源的分布式版本控制系统,在执行git init
初始化目录的时候,会在当前目录下自动创建一个.git
目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git
这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
https://github.com/lijiejie/GitHack
1 |
|
修复建议:删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。
SVN
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。
https://github.com/Introspelliam/tools/blob/master/Seay-Svn源代码泄露漏洞利用工具.exe
修复建议:删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码。
DS_Store
.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
https://github.com/lijiejie/ds_store_exp
1 |
|
SWP
swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。
漏洞利用:直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。
备份文件
管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。
常见的备份文件后缀:
- .rar
- .zip
- .7z
- .tar.gz
- .bak
- .txt
- .old
- .temp
7kbscan-WebPathBrute
GitHub
GitHub是一个面向开源及私有软件项目的托管平台,很多人喜欢把自己的代码上传到平台托管。攻击者通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。
类似的代码托管平台还有很多,人才是最大的漏洞。
1 |
|
1 |
|
composer.json
WEB-INF/web.xml
WEB-INF
是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF
主要包含一下文件或目录:
1 |
|
通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码
hg
Mercurial 是一种轻量级分布式版本控制系统,使用 hg init
的时候会生成.hg。
https://github.com/kost/dvcs-ripper
1 |
|
CDN&SLB&WAF
CDN
检测是否有 CDN
全球 PING
https://asm.ca.com/en/ping.php/
国外 PING
https://www.host-tracker.com/en
CDN 指纹识别
https://www.cdnplanet.com/tools/cdnfinder/
SLB
lbd
WAF
WAF 检测
https://github.com/EnableSecurity/wafw00f
绕过CDN&SLB
前置知识:
1.传统访问:用户访问域名–>解析服务器 IP–>访问目标主机
2.普通 CDN:用户访问域名–>CDN 节点–>真实服务器 IP–>访问目标主机
3.带 WAF 的 CDN:用户访问域名–>CDN 节点(WAF)–>真实服务器 IP–>访问目标主机
CDN 配置:
配置 1:加速域名-需要启用加速的域名
配置 2:加速区域-需要启用加速的地区
配置 3:加速类型-需要启用加速的资源
子域名入手
某些企业业务线众多,有些站点的主站使用了CDN,或者部分域名使用了CDN,某些子域名可能未使用。查询子域名的方法就很多了:subDomainsBrute、Sublist3r、Google hack等。
利用网站漏洞
如果目标站点存在漏洞,这就没办法避免了。例如phpinfo敏感信息泄露、Apache status和Jboss status敏感信息泄露、网页源代码泄露、svn信息泄露信、github信息泄露等。
若存在web漏洞,服务器主动与我们发起请求连接,我们也能获取目标站点真实ip。例如xss、ssrf、命令执行反弹shell等。
历史DNS记录
查询ip与域名绑定历史记录,可能会发现使用CDN之前的目标ip。查询网站有:
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
http://toolbar.netcraft.com/site_report?url=
http://viewdns.info/
http://www.17ce.com/
https://community.riskiq.com/
http://www.crimeflare.com/cfssl.html
CDN本身入手
若从CDN本身入手,比如利用社工等,得到控制面板的账号密码,那真实ip就很轻易能获取到了。
Mx记录或邮件
很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等。而且一般的邮件系统很多都是在内部,没有经过CDN的解析。可在邮件源码里面就会包含服务器的真实 IP。
国外请求
通过国外得一些冷门得DNS或IP去请求目标,很多时候国内得CDN对国外得覆盖面并不是很广,故此可以利用此特点进行探测。 通过国外代理访问就能查看真实IP了,或者通过国外的DNS解析,可能就能得到真实的IP查询网站:
https://asm.ca.com/en/ping.php
https://www.host-tracker.com/en
扫描探测
通过信息收集,缩小扫描范围,确定一个相对小的IP和端口范围(中国?AS号?B段?等)
通过http指纹特征和keyword等做综合判断。可使用工具如下:
1 |
|
zgrab 是基于zmap无状态扫描的应用层扫描器,可以自定义数据包,以及ip、domain之间的关联。可用于快速指纹识别爆破等场景。
可参考这篇文章:利用Zgrab绕CDN找真实IP - Levy Hsu
Zmap大法
据说扫描全网,只要44分钟?
网络空间引擎搜索法
zoomeye、fofa、shodan
通过这些公开的安全搜索引擎爬取得历史快照,主要得一些特征总结如下:
特有的http头部(如server类型、版本、cookie等信息)、
特定keyword(如title、css、js、url等)、
特定的IP段搜索(如fofa支持C段搜索),
有些时候爬取的时候不一定含有上面那些特征,但是我们仍然需要仔细排查。
查询Https证书
此方法来自于去年CplusHua表哥在Freebuf公开课《HTTP盲攻击的几种思路》中分享的:
查询网站:https://censys.io/
这个网址会将互联网所有的ip进行扫面和连接,以及证书探测。若目标站点有https证书,并且默认虚拟主机配了https证书,我们就可以找所有目标站点是该https证书的站点。
相关工具
网络空间四大引擎
FOFA
Quake
Shodan
Zoomeye
自动化信息收集项目
ARL 灯塔
https://github.com/TophantTechnology/ARL
Suize 水泽
https://github.com/0x727/ShuiZe_0x727
Kunyu 坤舆
https://github.com/knownsec/Kunyu