Whois是一种传输协议,用于查询域名注册所有者等信息。它可以帮助您查询域名是否已被注册,以及获取有关已注册域名的详细信息,例如域名注册商和域名所有人。
早期的Whois查询通常使用命令行接口。现在,一些网页接口简化了在线查询工具,使您可以一次向多个数据库查询。无论使用哪种方式,这些工具仍然依赖Whois协议向服务器发送查询请求。命令行接口工具仍然被系统管理员广泛使用。
Whois通常使用TCP协议43端口。每个域名/IP的Whois信息由对应的管理机构保存。
使用Whois查询,您可以获得域名注册者的电子邮件地址等信息。对于中小型网站,域名注册者通常是网站管理员。您还可以利用搜索引擎对Whois查询到的信息进行搜索,以获取更多有关域名注册者的个人信息
以下是常用的Whois查询网站
站长之家whois查询
阿里云whois查询
爱站whois查询
腾讯云whois查询
美橙互联whois查询
爱名网whois查询
此处用站长之家的whois查询为示例, 输入你要查询的网站域名,此处我以博客园域名为例(cnblogs.com)
通过whois反查域名的联系人和联系邮箱获取更多信息
备案信息对于打击不良互联网信息传播,防止非法网站经营活动非常重要。如果网站没有进行备案,很可能会被查处并关停。备案信息可以提供网站的所有者、运营者、主办单位等相关信息,有助于网站的规范管理和监管。
此外,备案信息还是企业申请营业执照、税务登记证、开展网上交易等业务的必要条件之一。因此,对于任何想要在互联网上开展合法经营活动的组织或个人来说,进行备案是必不可少的一步
以下是常用的查询备案信息的网站:
天眼查
域名信息备案管理系统
域名助手
如下图所示为博客园域名的备案信息
常见的子域名资产类型包括办公系统、邮箱系统、论坛、商城、其他管理系统和网站管理后台等。
这些资产通常可以在目标站点的官网上找到相关信息。探测和分析子域名中的各种资产类型是提高安全性和减少风险的重要步骤,对于黑客或安全研究人员来说尤为重要
如下图所示对博客园域名进行子域名爆破
使用fofa搜索博客园的子域名:domain="cnblogs.com"
将搜索的资产导出来并下载, 通过分析大概得知目标域名的大概ip段
DNS侦测指的是一种网络安全测试技术,其主要目的是通过查询DNS服务器获取目标主机的DNS记录信息,并分析这些信息来获得有关目标主机的详细信息,例如IP地址、主机名、域名、子域名、MX记录等。通过对DNS记录的分析,可以揭示出目标主机的一些潜在安全风险,例如未授权的子域名、未经授权的主机等等
以下是常用的DNS侦测网站:
如下图所示, 对博客园域名做DNS侦测
隐藏域名指的是通过限制IP直接访问的方式,将网站的主要业务通过域名进行访问的一种技术手段。这种做法在访问目标资产IP时通常会返回401、403、404、500等错误响应,但是用域名请求却能够正常访问业务系统。这是现代互联网公司常用的一种方式,可以有效增强网站的安全性和稳定性。
大多数域名需要绑定host才能正常请求访问。因此,可以通过将收集到的资产域名和IP地址结合起来,以IP段+域名的形式进行捆绑碰撞,来发现隐藏的资产
首先通过微步在线查询目标网站的当前解析ip和历史解析ip, 此处收集cnblogs.com
的当前解析ip有101.37.113.127
和121.40.43.188
而历史解析IP足足有17条
再用fofa或者其他子域名爆破工具收集博客园网站的子域名
打开Hosts_scan
工具, 将收集到的ip和域名分别填入其目录下的ip.txt
和host.txt
在Hosts_scan工具的文件夹有IP_hosts_scan.py
(单线程)和IP_hosts_scan_multithreading.py
(多线程), 这里执行IP_hosts_scan_multithreading.py
python3 IP_hosts_scan_multithreading.py
当工具扫描完毕后可在hosts_ok.txt
查看扫描结果
CDN是Content Delivery Network的缩写,即内容分发网络。CDN通过在全球各地分布式部署节点,解决了跨运营商和跨地域访问的问题,大大降低了访问延迟。CDN的边缘节点可以处理大部分的请求,从而分流流量,有效减轻了网站服务器的负载。
当网站采用CDN技术时,我们需要对CDN进行绕过才能获取到网站的真实IP地址。CDN在网络安全中也起到了保护作用,可以对网站进行缓存、加速、负载均衡、防护等操作。同时,CDN也可以提高网站的可用性和稳定性,提升用户体验
通过对目标服务器进行多地ping测试来判断CDN是否存在
多地ping: 对目标服务器使用不同地区进行ping测试
以下是常用的多地ping网站:
例如此处对博客园网站www.cnblogs.com
进行多地ping测试, 此处测试结果出现了多个响应IP, 则代表此网站使用了CDN技术
此处以博客园网站为例, 首先查看博客园网站源码来获取title
值:“博客园 - 开发者的网上家园”
随后用谷歌浏览器查看网站的证书序列号(16进制), 随后将此序列号转换成10进制
什么是网站证书序列号:网站的证书序列号(Certificate Serial Number)是数字证书中唯一标识该证书的一个序号。在SSL/TLS加密协议中,证书序列号是证书中的一个重要元素,它由证书颁发机构(CA)在证书颁发时生成,并与证书内容一起签名。证书序列号通常是一个大于等于零的整数,并且必须是唯一的。在HTTPS通信中,当客户端向服务器发起连接请求时,服务器会将自己的数字证书发送给客户端,客户端会验证证书的合法性,并且会检查证书序列号是否与之前保存的序列号一致,以保证通信的安全性。证书序列号也可以用于证书吊销、证书更新等操作中
03E3AC5347CD4A3862C2855A71A6F94F(十六进制) => 5169830546853086247231079365397117263(十进制)
打开fofa网站, 输入country="CN" && title="博客园 - 开发者的网上家园" && cert="5169830546853086247231079365397117263"
, 查询返回3条独立ip, 随后依次匹对html源码来筛选出网站的真实ip
在查询到的历史解析记录中,最早的历史解析ip很有可能记录的就是真实ip,快速查找真实IP推荐此方法,但并不是所有网站都能查到。如下为常用的DNS解析网站
DNSDB: https://dnsdb.io/zh-cn/
微步查询: https://x.threatbook.com
个人认为微步查询网站最为有效, 此处查询博客园网站的dns历史解析记录
可以通过浏览器F12或者目录文件扫描工具查找目标网站的ico图标并将其下载, 通常图标文件名为favicon.ico
将ico文件拖入fofa网站即可查询到真实ip
证书颁发机构(CA)必须将其发布的每个SSL/TLS证书发布到公共日志中。SSL/TLS证书通常包含域名、子域名和电子邮件地址等敏感信息,因此成为攻击者进行攻击和侵入的切入点之一
首先在https://crt.sh上查找目标网站(www.t00ls.com)的SSL证书:B8FDB19E5538CABC0F33F73347A7C50CB0FEAC60851504B4CD0B94F570A504E8
随后点击SSL证书的hash跳转至censys网站, 搜索功能切换至Hosts
来搜索真实IP,此处查询到的真实ip为47.243.238.59
当网站向你的电子邮箱发送邮件时,通常会在邮件的头部中附带发送服务器的IP地址信息。通过在邮件客户端中点击“显示邮件原文”等选项,可以查看到完整的邮件头部信息,包括发件人、收件人、主题、发送时间等内容,以及发送服务器的IP地址。邮件发送服务器的IP地址可能是该网站的真实IP地址,也可能是中转服务器的IP地址
例如phpinfo文件泄露, 查看$_SERVER['SERVER_ADDR']
即可获取真实ip
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取
例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000
,先把第一小
节的十进制数即487098378
取出来,然后将其转为十六进制数1d08880a
,接着从后往前读,
以此取四位数出来,也就是0a.88.08.1d
,最后依次把他们转为十进制数10.136.8.29
,也就
是最后的真实ip。
burpsuite配置代理服务器:192.168.132.1:8080
下载mumu模拟器后打开浏览器访问代理服务器, 然后右上角的CA Certificate
下载CA证书
打开文件管理器的$MuMu
共享文件夹, 双击cacert.der
将证书命名为burpsuite
, 随后会要求你设置pin码
转到WLAN设置, 长按连接的wifi修改网络, 将其HTTP代理设置为burpsuite代理服务器(192.168.132.1:8080)
配置完成后开始使用Burpsuite进行抓包, 例如抓取Bilibili的发包ip, 此处数据包的域名为data.bilibili.com
对以上域名进行ping测试发现此域名做了CDN, 后续还得继续寻找真实ip
也可以抓小程序的包来获取域名ip, 步骤和上述一致, 下图为抓取我校外卖小程序的数据包
有些网站为了方便用户访问, 会将www.test.com
和 test.com
解析到同一个站点,而CDN只配置了www.test.com
,通过访问test.com
就可绕过 CDN 。
同样地,如果站点同时支持http和https访问,但是CDN只配置 https协议,那么这时访问http就可以轻易绕过CDN
先省略
端口号 | 服务 | 渗透攻击类型 |
---|---|---|
21 、22 、69 |
FTP/TFTP文件传输协议 | 暴力破解、溢出攻击 |
22 |
SSH远程连接服务 | OpenSSH暴力破解 |
23 |
Telnet远程连接 | 暴力破解、嗅探攻击 |
25 |
SMTP邮件服务 | 邮件伪造 |
53 |
DNS域名系统 | DNS劫持、DNS缓存投毒、DNS欺骗、DNS隧道穿透防火墙 |
67 、68 |
DHCP | 劫持、欺骗攻击 |
110 |
POP3 | 暴力破解攻击 |
139 |
Samba | 暴力破解、未授权访问、远程代码执行 |
143 |
IMAP | 暴力破解 |
161 |
SNMP | 暴力破解 |
389 |
LDAP | 注入攻击、未授权访问 |
512 、513 、514 |
Linux R | 使用Rlogin |
873 |
Rsync | 未授权访问 |
1080 |
Socket | 内网渗透 |
1352 |
Lotus | 弱口令、信息泄露 |
1433 |
MSSQL | 系统用户登录、注入攻击 |
1521 |
Oracle | TNS注入攻击 |
2049 |
NFS | 配置不当导致的攻击 |
2181 |
Zookeeper | 未授权访问 |
3306 |
MySQL | 暴力破解、拒绝服务攻击 |
3389 |
RDP | 远程暴力破解、Shift后门 |
4848 |
GlassFish | 控制台弱口令绕过 |
5000 |
Sybase/DB2 | 暴力破解、注入攻击 |
5432 |
PostgreSQL | 缓冲区溢出、注入攻击、弱口令暴力破解 |
5900 |
VNC | 弱口令暴力破解 |
6379 |
Redis | 弱口令暴力破解 |
7001 |
WebLogic | Java反序列化、控制台弱口令、控制台部署WebShell |
8069 |
Zabbix | 远程命令执行 |
8080-8090 |
Web | 常见Web攻击和漏洞利用 |
9090 |
WebSphere控制台 | 控制台弱口令、Java反序列化 |
Nmap是一款高效的端口扫描工具,功能丰富、操作简单,能够扫描出目标主机上开放的端口,还能进行操作系统、服务版本等信息探测,并能够识别各种类型的防火墙、IDS等安全设备。Nmap支持多种扫描技术,包括TCP、UDP、SYN、ICMP等,支持多种操作系统,包括Windows、Linux、macOS等,输出结果清晰明了,能够帮助安全人员快速定位目标漏洞并进行修复
-v
: 显示扫描过程-A
: 全面系统检测,启用脚本检测扫描-p
: 指定端口-O
: 探测目标系统的操作系统,但可能出现误报-sV
: 获取目标服务版本信息-sn
: 查看目标是否在线-sT
: TCP扫描,可能在目标主机日志留下记录-sU
: UDP扫描,较慢-Pn
: 适用于防火墙禁PING扫描-iL
:扫描IP段--script
:搭配脚本进行扫描1. 扫描C段主机存活数
Nmap -sn 192.168.1.0/24
2. 跳过ping扫描主机(防止主机关闭了ping检测)
Nmap -Pn 192.168.0.1
3. 列出C段主机,且不留痕迹
Nmap -sL 192.168.0.0/24
4. 探测目标主机IP C段指定的端口
Nmap -pS80,443 192.168.0.0/24 //SYN扫描
Nmap -pU80,443 192.168.0.0/24 //UDP扫描
5. 扫描目标主机服务版本号与开放的端口
nmap -sU -sT -p0-65535 192.168.122.1
6. 扫描多个IP或者IP段, 将IP存到ip.txt文件中
nmap -iL ip.txt
nmap常用脚本 | 描述 |
---|---|
vuln |
检测目标主机上的已知漏洞 |
http-enum.nse |
扫描网站敏感目录和文件 |
default |
默认脚本扫描,收集各种应用服务信息 |
auth |
检测弱口令或绕过鉴权的漏洞 |
broadcast |
内网服务探测 |
whois |
查询网站的简单信息 |
broadcast-netbios-master-browser |
发现内网网关地址 |
http-robots.txt.nse |
检测robots文件内容 |
http-slowloris |
执行DoS攻击,威力较小 |
dns-brute.nse |
子域名爆破 |
smb-brute.nse |
检测内网Samba服务器,并对其暴力破解 |
ms-sql-brute |
扫描MSSQL服务并对其暴力破解 |
mysql-empty-password.nse |
扫描MySQL服务并对其暴力破解 |
1. 扫描网站敏感目录
Nmap -p 80 --script=http-enum.nse www.xxx.com
2. 绕开鉴权,也可以检测弱口令
Nmap -p 80 --script=auth www.xxx.com
3. 使用默认脚本,收集到信息后对具体服务进行攻击
Nmap -p 80 --script=default www.xxx.com
4. 检测常见的Web漏洞
Nmap -p 80 --script=vuln www.xxx.com
如下图所示,对一个网站进行端口扫描
旁站: 指与目标站点在同一服务器但不同端口的站点。
C段: 指与目标站点在同一服务器C段的站点,通常为同一台物理服务器或同一组服务器。可通过C段扫描查找其他潜在目标站点或系统
如下是查询旁站C段的常用网站:
http://stool.chinaz.com/same
https://chapangzhan.com/
https://c.webscan.cc/
例如此处我要查找的ip为104.21.18.55
, 打开网站https://chapangzhan.com/输入要查找的ip,查询结果显示了在同一C段的站点, 单击ip还可以查看其绑定了哪些域名
使用Fofa搜索旁站, 只需输入ip="104.21.18.55"
, 会显示该ip下不同端口及对应的应用服务
若要搜索C段则输入ip="104.21.18.0/24"
在其配置文件目录可以设置爆破字典
运行御剑, 添加需扫描的网址和选择爆破字典
先用pip2.7安装工具所需的库
pip2.7 install -r requirements.txt
扫描单个web服务, 例如扫描www.test.com
python2 BBScan.py --host www.test.com
扫描www.test.com/28的所有主机
python2 BBScan.py --host www.test.com --network 28
–network: 设置子网掩码, 小公司设为28~30, 大公司设为24~26
扫描hosts.txt
文件下的所有主机
python2 BBScan.py -f hosts.txt
dirsearch下载地址: git clone https://github.com/maurosoria/dirsearch.git
工具使用参数如下:
参数 | 描述 |
---|---|
-h | 查看帮助 |
-u | 设置url |
-l | 设置url列表文件 |
-e | 设置网站脚本类型,后跟php,asp,aspx等已知类型,不清楚写* |
-s | 设置请求之间的延时时间 |
-t | 设置扫描线程数 |
-x | 设置要排除的状态码 |
-w | 设置爆破的字典 |
-H | 设置请求头 |
-c | 设置cookie |
1.扫描url.txt文件里的所有url
dirsearch.py -l url.txt
2.扫描指定网站的php文件,以及排除403状态码
dirsearch.py -u http://127.0.0.1 -e php,zip -x 403
3.扫描所有类型并且设置线程为20
dirsearch.py -u http://127.0.0.1 -e* -t 20
4.使用自定义字典扫描
dirsearch.py -u http://127.0.0.1 -e* -w db/php.txt
5.使用随机ua头且指定cookie扫描
dirsearch.py -u http://127.0.0.1 -e* --random-agents -c "user=Mo60;"
.Git
泄露Git是一个主流的分布式版本控制系统,开发人员经常会遗忘.git文件夹从而导致源码泄露
使用kali linux安装GitHacker: pip3 install GitHacker
, 安装完后即可使用githacker
命令
githacker使用方法如下:
githacker --url <网站地址> --output-folder <输出文件夹>
githacker --url http://challenge-ac6c09cab4c14575.sandbox.ctfhub.com:10800/ --output-folder 1
进入输出文件夹查看执行结果:ls -a
查看操作日志: git log
发现存在3个日志操作, 分别是移除flag、添加flag和初始化, 我们要做的是回滚到含有flag日志的git版本(即添加flag的日志操作),使用git reset --hard <版本号>
命令, 然后再查看含有flag的txt文件
git reset --hard aaee477e0d92f40ba5bff4b1fd0529f553abca43
.Svn
泄露SVN是源代码版本管理软件,在使用Svn管理本地代码过程中,会自动生成名为.svn
的隐藏文件夹,其中包含重要的源码信息,但一些网站管理员在发布代码时,不愿意使用“导出”功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn
隐藏文件夹被暴露于外网环境
黑客可以借助其包含版本信息追踪的entries
文件来以此摸清站点结构, 通常此文件的目录为: .svn/entries
打开Seay-Svn工具, 添加.svn/entries
文件的目录地址, 随后即可下载源码文件
不要使用svn checkout
和svn up
更新服务器上的代码,使用svn export
(导出功能)代替
服务器软件(Nginx、apache、tomcat、IIS)等设置目录权限,禁止访问.svn
目录
.Hg
泄露在初始化项目时, HG会在当前文件夹下创建一个.hg
隐藏文件夹, 此文件夹下包含代码和分支修改记录等信息
dvcs-ripper
rip-git.pl -v -u http://www.example.com/.git/
.Ds_Store
泄露在发布代码时未删除文件夹中隐藏的.DS_Store
文件, 从而导致敏感文件泄露
dsstoreexp
python2 ds_store_exp.py http://www.example.com/.DS_Store
WEB-INF
泄露WEB-INF
是Java Web应用程序的安全目录。要在页面中直接访问其中的文件,必须通过 web.xml
文件对要访问的文件进行相应映射。
通常,某些Web应用程序会使用多个Web服务器进行搭配,以解决单个Web服务器的性能瓶颈、实现负载均衡优势和实现分层结构的安全策略等。在使用这种架构时,由于对静态资源的目录或文件的映射配置不当,可能会引发安全问题,导致 web.xml
等文件被意外暴露
WEB-INF
主要包含以下的文件或目录:
文件/目录 | 描述 |
---|---|
/WEB-INF/web.xml |
Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 |
/WEB-INF/classes/ |
含有站点所有的class 文件,包括servlet class 和非servlet class ,它们不能包含在 .jar文件 |
/WEB-INF/lib/ |
存放web应用需要的各种Jar文件,如数据库驱动jar文件 |
/WEB-INF/src/ |
源码目录,按照包名结构放置各个java文件 |
/WEB-INF/database.properties |
数据库配置文件 |
通过找到 web.xml
文件,可以推断出 class
文件的路径,然后直接访问 class
文件。通过反编译 class
文件,可以获取网站的源代码。
通常情况下,JSP引擎默认禁止访问 WEB-INF
目录。但是,在使用Nginx配合Tomcat进行负载均衡或集群等操作时,可能会出现安全问题。问题的原因在于,Nginx不会考虑到其他类型引擎(如JSP引擎)所导致的安全问题,并将其纳入自身的安全规范中(这样的耦合性太高)。因此,要解决这个问题,可以修改Nginx的配置文件,禁止访问 WEB-INF
目录:
javascriptCopy codelocation ~ ^/WEB-INF/* {
deny all;
}
或者返回404错误:
javascriptCopy codelocation ~ ^/WEB-INF/* {
return 404;
}
网站的url链接写到了js里面, 而js的api接口里包含用户相关信息
以下介绍几款扫描js的api接口的工具
参数 | 描述 |
---|---|
-u | 填写url地址 |
-d | 使用深度爬取 |
-f | 批量扫描指定url文件 |
-ou | 指定文件名保存URL链接 |
-os | 指定文件名保存子域名 |
-c | 指定cookie |
1.深度扫描指定网站的js敏感信息
python3 JSFinder.py -u https://www.cnblogs.com/ -d
2.批量扫描指定url文件
python3 JSFinder.py -f url.txt
3.将扫描到的url和子域名分别保存在url.txt和domain.txt文件中
python3 JSFinder.py -u https://www.cnblogs.com/ -d -ou url.txt -os domain.txt
随着Web前端打包工具的流行,越来越多的网站使用以Webpack
为代表的打包器构建。通常,这类打包器生成的JS文件数量和代码量都非常庞大,给手工测试带来了很大的不便。因此,Packer Fuzzer
软件应运而生。
Packer-Fuzzer
是一款针对Webpack等前端打包工具构建的网站进行快速扫描的工具。
参数 | 描述 |
---|---|
-u (–url) | 指定URL地址 |
-c (–cookie) | 指定Cookie,例如: -c "POC=666;SIR=233" |
-t (–type) | 包括基础版和高级版,为空时默认使用基础版。高级版会对所有API进行重新扫描并模糊提取API对应的参数,进行SQL注入、水平越权、弱口令、任意文件上传漏洞检测。使用adv 选项进入高级版,例如:-t adv |
-p (–proxy) | 全局代理,可为空。若填写则全局使用代理IP,例如:-p https://hack.cool:8080 |
-f (–flag) | SSL连接安全选项。为空时默认关闭状态,阻止所有不安全连接。若想忽略SSL安全状态,使用1 命令开启,忽略所有证书错误,例如:-f 1 |
-s (–silent) | 静默选项。开启后,所有询问YES或NO的操作自动设置为YES。参数后内容为本次扫描报告名称(自定义报告名),可用于无人值守、批量操作、插件调用等模式,例如:-s Scan_Task_777 |
python3 PackerFuzzer.py -u http://www.lingnan.edu.cn/
扫描的结果保存在reports目录,结果文件后缀名为html和docx
CMS是Content Management System的缩写,即内容管理系统。它是一种用于网站内容管理的软件,允许用户通过简单的操作方式来发布、修改、删除网站上的内容。常见的CMS包括WordPress、Joomla、Drupal等,它们提供了丰富的功能和插件,方便用户进行网站建设和管理。
在渗透测试中,CMS的概念通常指通过对网站进行指纹识别来确定所使用的CMS类型以及版本信息。这对于攻击者来说非常重要,因为不同版本的CMS可能存在不同的漏洞和安全问题。攻击者可以利用漏洞来入侵目标网站,甚至获取网站管理员的权限,造成更大的安全威胁
云悉: http://www.yunsee.cn/
潮汐指纹: http://finger.tidesec.net/
bugscaner: http://whatweb.bugscaner.com/look/
WhatWeb
命令WhatWeb 是一个开源的网络指纹识别工具,用于识别 Web 应用程序的技术栈。它能够自动扫描网站并快速地获取有关目标站点的信息,包括 Web 服务器的类型、运行的脚本语言、Web 应用程序框架、Web 应用程序的版本号、CMS 系统以及其他有用的信息
以下是WhatWeb
命令的常用参数:
-v
:输出详细信息-a
:设置并发数-o
:将输出结果写入文件1.扫描单个站点:
whatweb www.example.com
2.扫描多个站点:
whatweb www.example.com www.test.com
3.输出结果到文件:
whatweb -v -a 3 -o /path/to/output.txt www.example.com