信息收集方向

整体架构

开发语言

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,只是它们更侧重于发布博客。

开源

https://github.com

https://gitee.com

闭源/售卖

/**/

自主研发

–> 信息泄漏

CMS 识别

https://www.wappalyzer.com

https://www.webpagetest.org

http://finger.tidesec.com,https://github.com/TideSec/TideFinger

https://www.whatruns.com

https://github.com/Tuhinshubhra/CMSeeK

https://www.yunsee.cn

HTTP 服务器

HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个TCP端口来接收并处理HTTP请求,这样客户端(如Firefox,Chrome这样的浏览器)就能通过HTTP协议获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等资源。

image-20240325212153470

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
sudo nmap -O [IP]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-25 21:50 CST
Nmap scan report for 192.168.31.213
Host is up (0.022s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE
8031/tcp open unknown
MAC Address: 8C:C8:4B:C0:A6:1D (Chongqing Fugui Electronics)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 11|10|2022 (92%), FreeBSD 6.X (88%)
OS CPE: cpe:/o:freebsd:freebsd:6.2 cpe:/o:microsoft:windows_10
Aggressive OS guesses: Microsoft Windows 11 21H2 (92%), FreeBSD 6.2-RELEASE (88%), Microsoft Windows 10 (87%), Microsoft Windows Server 2022 (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 56.66 seconds

域名

Whois

https://whois.chinaz.com

1
whois [IP]

ICP

https://icp.chinaz.com

https://beian.miit.gov.cn

子域名

https://github.com/lijiejie/subDomainsBrute

相似域名

cn/com/cc…

反查域名

https://whois.chinaz.com/reverse/email

DNS 历史

https://dnshistory.org

https://securitytrails.com

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
python GitHack.py [Domain]

修复建议:删除.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
python ds_store_exp.py [URL]

SWP

swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。

漏洞利用:直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。

备份文件

管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。

常见的备份文件后缀:

  • .rar
  • .zip
  • .7z
  • .tar.gz
  • .bak
  • .txt
  • .old
  • .temp

7kbscan-WebPathBrute

GitHub

GitHub是一个面向开源及私有软件项目的托管平台,很多人喜欢把自己的代码上传到平台托管。攻击者通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。

类似的代码托管平台还有很多,人才是最大的漏洞。

1
https://github.com/search?q=smtp+user+@qq.com&type=code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
GITHUB 资源搜索:
in:name test #仓库标题搜索含有关键字
in:descripton test #仓库描述搜索含有关键字
in:readme test #Readme 文件搜素含有关键字
stars:>3000 test #stars 数量大于 3000 的搜索关键字
stars:1000..3000 test #stars 数 量 大 于 1000 小 于 3000 的 搜 索 关 键 字 forks:>1000 test
#forks 数量大于 1000 的搜索关键字
forks:1000..3000 test #forks 数 量 大 于 1000 小 于 3000 的 搜 索 关 键 字 size:>=5000 test
#指定仓库大于 5000k(5M)的搜索关键字 pushed:>2019-02-12 test #发布时间大于 2019-02-12 的
搜 索 关 键 字 created:>2019-02-12 test # 创 建 时 间 大 于 2019-02-12 的 搜 索 关 键 字 user:test
#用户名搜素
license:apache-2.0 test #明确仓库的 LICENSE 搜索关键字 language:java test #在 java 语
言的代码中搜索关键字
user:test in:name test #组合搜索,用户名 test 的标题含有 test 的
关键字配合谷歌搜索:
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

composer.json

WEB-INF/web.xml

WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

WEB-INF 主要包含一下文件或目录:

1
2
3
4
5
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)

通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码

hg

Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg。

https://github.com/kost/dvcs-ripper

1
rip-hg.pl -v -u [URL]

CDN&SLB&WAF

CDN

检测是否有 CDN

全球 PING

https://ping.chinaz.com

https://asm.ca.com/en/ping.php/

https://ping.aizhan.com/

国外 PING

https://www.host-tracker.com/en

CDN 指纹识别

https://cdn.chinaz.com

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

https://dnscheck.pingdom.com

扫描探测

通过信息收集,缩小扫描范围,确定一个相对小的IP和端口范围(中国?AS号?B段?等)

通过http指纹特征和keyword等做综合判断。可使用工具如下:

1
2
3
4
5
https://github.com/zmap/zgrab/
http://www.ipdeny.com/ipblocks/
https://github.com/boy-hack/w8fuckcdn/
https://github.com/3xp10it/xcdn
https://github.com/Tai7sy/fuckcdn

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

https://fofa.so

Quake

https://quake.360.cn

Shodan

https://www.shodan.io

Zoomeye

https://www.zoomeye.org

自动化信息收集项目

ARL 灯塔

https://github.com/TophantTechnology/ARL

Suize 水泽

https://github.com/0x727/ShuiZe_0x727

Kunyu 坤舆

https://github.com/knownsec/Kunyu

参考


信息收集方向
https://blog.tddt.cc/posts/4.Information_Gathering.html
作者
TechPANG
发布于
2024年3月27日
许可协议