@
目录
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
本文以 kali-linux-2023.2-vmware-amd64 为例。
静态 WEB
动态 WEB
应用程序
数据库
每人看到的内容不同
根据用户输入返回不同结果
Network
OS
Web Server
App Server
web Application
Database
Browser
明文传输
无状态
重要的 Header
Set-Cookie
服务器发给客户端的信息(有被窃取的风险)
Content-Length
响应 body 部分的字节长度
Location
重定向到另一个页面(可识别身份认证后允许访问的页面)
Cookie
客户端发回给服务器证明用户状态的信息
Referrer
发起请求之前用户位于的页面(基于此头的安全限制容易被绕过)
状态码
AJAX(Asynchronous JavaScript and XML),用于在 Web 页面中进行异步数据交换。它允许在不刷新整个页面的情况下与服务器进行数据交互,更新部分页面内容。
现在 Web 开发倾向使用更先进的技术,如 SPA(单页面应用)框架(React、Vue 和 Angular)。
AJAX 的安全问题:
AJAX 对渗透测试的挑战:
WEB Service,这里指各种 API,面向服务的架构(service oriented architecture),便于不同系统集成共享数据和功能。
两种类型的 WEB Service:
SOAP(Simple Object Access Protocol)
RESTful(Representational State Transfer architecture)
WEB Service 安全考虑:
HTTrack(HTTrack Website Copier)用于将整个网站以及其内容下载到本地,以便在离线情况下浏览。
可以直接使用命令 httrack
进行交互式操作。
Nikto,Perl 语言开发的开源 web 安全扫描器。
部分命令:
查看插件:
nikto -list-plugins
扫描网站:
nikto -host <目标>
扫描主机端口:
nikto -host <目标> -port <端口> [-ssl]
配合 nmap 使用:
nmap -p <端口> <target> -oG - | nikto -host -
Nikto 支持交互。扫描过程中按相应按键可以显示不同的信息。
例如,按【v】可显示扫描的详细信息。
Skipfish 是由谷歌创建的 Web 安全扫描程序。
部分命令:
扫描网站:
skipfish -o <项目名> <url>
扫描指定网站目录:
skipfish -o <项目名> -I <子目录> <url>
skipfish -o test -I /dvwa/ http://192.168.8.104/dvwa/
Arachni 是开源的 Web 安全测试工具。
Windows 端运行 Arachni:
kali 并没有自带 Arachni,可以到 github 下载。Arachni 支持 Windows。
官网:https://ecsypno.com/pages/arachni-web-application-security-scanner-framework
项目&下载:https://github.com/Arachni/arachni
根据官网信息,Arachni 将被 Codename SCNR 取代。
“The Arachni Web Application Security Scanner Framework is passing its torch to Codename SCNR, so please be sure to try it and plan your migration soon.”
参考文章:arachni的安装和使用
OWASP ZAP(OWASP Zed Attack Proxy),免费开源跨平台的 web application 集成渗透测试和漏洞工具。
与 BurpSuite 相似,但功能与排版较复杂。
标准扫描工作流程:
参考文章:
BurpSuite,统一的集成工具,可以发现并利用现代 Web 安全漏洞,Web 安全工具中的瑞士军刀。
参考文章:
AWVS(Acunetix Web Vulnerability Scanner),用于检测和扫描 Web 应用程序中潜在的漏洞和安全风险。
参考文章:
AppScan(Watchfire AppScan),用于检测和修复 Web 应用程序中的安全漏洞和风险。
官网:https://www.hcl-software.com/appscan
参考文章:
SQLmap(SQL Injection and Database Takeover Tool),开源的自动化 SQL 注入工具,用于检测和利用 SQL 注入漏洞。
五种漏洞检测技术:
参考文章:
XSSer,用于测试和利用跨站脚本(XSS)漏洞的工具。
参考文章:
BeEF(Browser Exploitation Framework),用于探测、利用 Web 浏览器中的漏洞和弱点。
参考文章:
Weevely,基于 python 编写的 webshell 管理利用工具。
参考文章:
OpenSSL,用于实现 SSL(安全套接层)和 TLS(传输层安全)协议,以及进行加解密、数字证书管理和其他加密相关的操作。
示例:
识别目标服务器支持的 cipher suite:
openssl s_client -connect www.baidu.com:443
参考文章:
SSLscan,用于评估和测试 SSL/TLS 配置,自动识别配置错误、过期协议、过时 cipher suite 等。
示例:
识别目标服务器支持的 cipher suite:
sslscan --tlsall www.taobao.com
参考文章:
SSLyze ,用于分析和评估服务器端的 SSL/TLS 配置和安全性。
官方文档:
https://nabla-c0d3.github.io/sslyze/documentation/index.html
SSLsplit,用于中间人攻击(Man-in-the-Middle,MitM)和分析 SSL/TLS 通信。
官网:https://www.roe.ch/SSLsplit
MitMproxy(Man-in-the-Middle Proxy),开源的中间人代理工具,用于截取、检查、修改和记录网络通信流量。
参考文章:
IPtables,是一个 Linux 上的工具,它是 Linux 内核提供的防火墙功能的用户空间接口,用于保护计算机。可用于配置、管理和控制网络数据包的过滤和转发规则。
参考文章:
技术型漏洞的本质:
漏洞挖掘原则:
这一部分与 WEB 安全相关。详情参见《WEB安全基础》。
默认配置漏洞
身份认证漏洞
命令执行漏洞
API 接口漏洞
越权漏洞
目录遍历漏洞(Directory traversal)
文件包含漏洞(File include)
文件上传漏洞
SQL 注入
XSS 漏洞(Cross-Site Scripting)
CSRF 漏洞(Cross-Site Request Forgery)
从信任的角度区分 XSS 与 CSRF:
- XSS:利用用户对站点的信任
- CSRF:利用站点对已经身份认证用户的信任
SSL(Secure Socket Layer)和 TLS(Transport Layer Security)用于在网络通信中提供加密和数据完整性。
SSL/TLS 被用于很多场景的传输通道加密。
HTTPS 攻击方法:
降级攻击
攻击者迫使本应使用安全的通信方式(如 HTTPS),转而使用不安全的通信方式(如 HTTP)
解密攻击(证书伪造)
漏洞(协议漏洞、实现方法的漏洞、配置不严格)
TLS/SSL、HTTPS、HTTP over SSL 通俗上表示同意含义。
工具使用:
除了 OpenSSL、SSLscan、SSLyze 几个工具,Nmap 也有相应脚本用来攻击。
nmap --script=ssl-enum-ciphers.nse www.baidu.com
中间人攻击(Man-in-the-Middle Attack,MitM),攻击者在通信的两端之间插入自己的恶意节点来窃取、篡改或监听传输的数据。
中间人攻击的前提(满足其中一个即可):
参考文章:
拒绝服务攻击有很多种,这里只介绍 SSL/TLS 拒绝服务攻击。
SSL/TLS 拒绝服务攻击,主要原理是利用 SSL/TLS 握手过程中的资源消耗来耗尽服务器的资源,导致服务器无法响应其他合法用户的请求。
常见的攻击方式:
SSL/TLS 握手暴力攻击
攻击者通过大量的恶意 SSL/TLS 握手请求消耗服务器的计算和内存资源。
SSL/TLS 版本协商攻击
攻击者通过发送恶意的 SSL/TLS 版本协商请求来混淆服务器,迫使其进行大量额外的计算和资源分配。
SSL/TLS 握手放大攻击
攻击者伪造大量的虚假握手请求,使服务器产生大量响应数据。
SSL/TLS 会话重放攻击
攻击者截获合法用户的 SSL/TLS 通信,然后将通信内容重新发送给服务器。
减轻攻击影响的措施:
资源限制
限制单个 IP 地址或会话的握手频率。
负载均衡和缓存
更新协议和配置
参考文章:
别后相思人似月,云间水上到层城。
——《明月夜留别》(唐)李冶
手机扫一扫
移动阅读更方便
你可能感兴趣的文章