再说Web渗透测试(第八集-下集)
本文章阅读大约需要75分钟;
第八集,框架内容-WAF绕过;
(内容有点多,所以分为上集10项+下集10项)
Web渗透测试框架内容:
编号 | 名称 | 描述 | 检查项 |
1 | 信息收集 | 子域名接管 | 15项 |
越权(IDOR) | 15项 | ||
2 | Word Press | CMS 安全 | 15项 |
3 | HTTP头 | 识别缺失或配置错误的安全头信息 | 25项 |
4 | 注入攻击 | XSS | 15项 |
SQL Injection | 15项 | ||
5 | 文件上传 | 尝试绕过安全机制上传恶意文件 | 20项 |
6 | SSRF | 利用漏洞欺骗服务器端应用程序向内部网络或其他系统发送请求,获取敏感信息或进行攻击。 | 15项 |
7 | WAF | 测试WAF的有效性,包括其检测和阻止恶意流量的能力,以及绕过WAF的潜在方法。 | 20项 |
8 | TLS | TLS Vulnerability | |
9 | Cookie | Cookie设置 | |
10 | XXE | XML外部实体注入 |
1. Web安全最后的救赎:究竟是道高一尺,还是魔高一丈!
下集10项目录:
编号 | 名称 |
11 | 应用层 DDos |
12 | SsL/TLS vulns |
13 | HTTP头部注入 |
14 | 已知攻击签名 |
15 | 路径遍历 |
16 | XML vulns |
17 | 误报 |
18 | 自定义规则 |
19 | 漏报 |
20 | 持续测试与监控 |
2. WAF绕过:20种常见方法深度解析
11. 应用层DDos攻击测试:
应用层 DDoS 攻击不同于传统的网络层 DDoS 攻击,它不依赖于大量的流量,而是通过发送看似正常的 HTTP 请求,利用应用层协议的缺陷或 Web 服务器的资源限制,达到瘫痪目标网站的目的。
应用层 DDoS 攻击日益普遍: 随着互联网的快速发展,应用层 DDoS 攻击的成本越来越低,攻击工具也越来越容易获取,导致应用层 DDoS 攻击越来越普遍。 攻击者只需要控制少量计算机,就可以发起大规模的攻击,而传统的网络层 DDoS 攻击防御措施,例如流量清洗等,难以有效防御应用层 DDoS 攻击。WAF 面临新的挑战: WAF 的主要功能是识别和拦截恶意请求,但应用层 DDoS 攻击使用的是合法的 HTTP 请求,难以被 WAF 识别和拦截。 这就要求 WAF 必须具备更强大的检测和防御能力,例如行为分析、异常检测等,才能有效防御应用层 DDoS 攻击。
HTTP Flood 攻击: 攻击者向目标网站发送大量 HTTP GET 或 POST 请求,这些请求看似合法,但数量庞大,服务器需要消耗大量的资源来处理这些请求,最终导致服务器过载,无法响应正常用户的请求。Slowloris 攻击: 攻击者发送大量慢速 HTTP 请求,保持连接长时间不释放,消耗服务器的连接数资源。Web 服务器通常会限制最大并发连接数,如果攻击者占用了大量的连接,就会导致正常用户无法连接到服务器。RUDY (R-U-Dead-Yet?) 攻击: 攻击者发送一个非常大的 HTTP POST 请求,并且数据传输速度非常慢,消耗服务器的带宽和内存资源。 由于服务器需要等待接收完整个 POST 请求才能进行处理,如果攻击者长时间不发送数据,就会导致服务器的资源被占用,无法处理其他请求。Zero-day DDoS 攻击: 攻击者利用未知漏洞或新型攻击手法,绕过 WAF 的防御机制,进行 DDoS 攻击。 这种攻击方式难以防御,因为 WAF 的规则库中没有针对这些漏洞或攻击手法的规则。
使用多个 IP 地址: 攻击者可以使用僵尸网络或代理服务器,控制大量的计算机,从不同的 IP 地址发起攻击,绕过基于 IP 地址的速率限制。使用合法的请求: 攻击者可以发送合法的 HTTP 请求,例如访问网站首页、浏览商品页面等,但请求频率非常高,造成服务器过载。隐藏攻击特征: 攻击者可以模仿正常用户的行为,例如使用真实的 User-Agent、Referer 等头信息,以及随机访问不同的页面,使攻击流量看起来像正常的用户流量,难以被 WAF 识别。利用 WAF 规则缺陷: 一些 WAF 的规则可能存在缺陷,例如只针对特定类型的请求进行过滤,或者速率限制的阈值过高,攻击者可以利用这些缺陷绕过 WAF 防护。攻击 WAF 本身: 攻击者可以攻击 WAF 本身,例如利用 WAF 的漏洞,导致 WAF 崩溃或无法正常工作,从而绕过 WAF 防护。
模拟攻击: 使用 DDoS 测试工具,例如 HULK、Slowloris、GoldenEye 等,模拟应用层 DDoS 攻击,观察 WAF 的防御效果。压力测试: 使用压力测试工具,例如 ApacheBench、JMeter 等,模拟大量用户访问网站,测试网站在高负载情况下的性能表现,以及 WAF 的防御能力。
测试 WAF 是否能够有效地防御应用层 DDoS 攻击,包括 HTTP Flood、Slowloris、RUDY 等。 测试 WAF 是否能够识别和拦截隐藏在合法请求中的恶意流量。
HULK: 一款开源的 HTTP Flood 攻击工具。攻击代码示例: hulk -s example.com -p 80 -m GET (使用 HULK 对 example.com 的 80 端口进行 HTTP Flood 攻击,使用 GET 方法)
Slowloris: 一款开源的 Slowloris 攻击工具。攻击代码示例: slowloris -s 100 -v example.com (使用 Slowloris 对 example.com 发起攻击,使用 100 个并发连接)
GoldenEye: 一款开源的 HTTP Flood 攻击工具,支持多种攻击模式。ApacheBench: 一款开源的 HTTP 服务器性能测试工具,可以用来模拟大量用户访问网站,进行压力测试。测试代码示例: ab -n 1000 -c 100 https://example.com/ (使用 ApacheBench 对 example.com 进行压力测试,发送 1000 个请求,并发 100 个连接)JMeter: 一款开源的性能测试工具,可以用来测试 Web 应用、数据库、FTP 服务器等各种服务的性能。
限制请求速率: 配置 WAF 规则,限制每个 IP 地址或每个用户在一段时间内可以发送的请求次数,就像设置交通信号灯,控制流量速度,防止道路拥堵。识别恶意 User-Agent: 配置 WAF 规则,识别和拦截使用恶意 User-Agent 的请求,例如已知的攻击工具 User-Agent、非浏览器 User-Agent 等。 这就像识别可疑人员,阻止其进入城市。验证 HTTP 头信息: 验证 HTTP 头信息的合法性,例如 Referer 头信息、Accept-Language 头信息等,识别异常的请求。使用行为分析: WAF 可以使用行为分析技术,识别异常的请求模式,例如短时间内来自同一 IP 地址的大量请求、访问敏感 URL 的请求等,即使攻击者使用了隐藏攻击特征的技巧,也可能被 WAF 检测到。 这就像城市中的监控系统,可以识别异常行为,及时报警。优化服务器性能: 优化 Web 服务器和应用程序的性能,提高服务器的负载能力,例如使用缓存技术、优化数据库查询、使用负载均衡等,就像加强城市基础设施建设,提高城市承载能力。使用 CDN 服务: 使用内容分发网络 (CDN) 服务,将网站内容缓存到多个服务器节点,分散攻击流量,提高网站的可用性。 这就像建立多个分流通道,分担交通压力。
应用层 DDoS 攻击案例:实战演练
import requests
import threading
url = 'https://example.com/'
num_threads = 100
def send_request():
while True:
requests.get(url)
for i in range(num_threads):
threading.Thread(target=send_request).start()
Python
该脚本使用 Python 的 requests 库发送 HTTP GET 请求,并使用多线程技术,模拟大量用户并发访问网站,造成服务器过载。,模拟大量用户并发访问网站,造成服务器过载。
攻击代码: 使用 Slowloris 工具攻击目标网站:
slowloris -s 100 -v example.com
该命令使用 100 个并发连接,对 example.com 发起 Slowloris 攻击。
攻击代码: 使用 Burp Suite 构造一个超大的 POST 请求,并将 Content-Length 头信息设置为一个非常大的值,例如 1GB,然后发送该请求到目标网站。 或者,可以使用 Python 脚本,模拟发送超大 POST 请求:
import socket
import time
# 目标服务器地址和端口
HOST = 'example.com'
PORT = 80
# 构造 POST 请求
request = (
"POST / HTTP/1.1\r\n"
"Host: {}\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 1000000000\r\n" # 设置超大 Content-Length
"\r\n"
).format(HOST)
# 建立连接并发送请求
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(request.encode())
# 缓慢发送数据
for i in range(1000000):
s.sendall(b'a')
time.sleep(0.1)
python
攻击代码: 攻击者发现了一个 Web 服务器的未知漏洞,该漏洞会导致服务器在处理特定类型的请求时崩溃。 攻击者利用该漏洞构造恶意请求,并发送到目标网站,导致服务器崩溃。 例如,攻击者发现某个 Web 服务器软件在处理包含特定字符的 URL 时会崩溃,攻击者就可以构造包含该字符的 URL,并发送大量请求到目标服务器,导致服务器崩溃。防御措施: 及时更新 Web 服务器和应用程序,修复已知漏洞,并使用 WAF 拦截针对未知漏洞的攻击。 WAF 可以使用异常检测技术,识别异常的请求模式,即使是未知漏洞,也可能被 WAF 检测到。
攻击代码: 攻击者使用真实的 User-Agent 和 Referer 头信息,随机访问网站的不同页面,发送请求的频率与正常用户相似,例如每秒 1-2 个请求,试图绕过 WAF 的检测。 例如,攻击者可以编写一个脚本,模拟用户的正常浏览行为,访问网站的多个页面,并随机停留一段时间,使攻击流量看起来像正常的用户流量。防御措施: WAF 可以使用行为分析技术,识别异常的请求模式,例如短时间内来自同一 IP 地址的访问次数、用户行为与历史记录的偏差等,即使攻击者模仿了正常用户的行为,也可能被 WAF 检测到。 同时,开发者也可以使用验证码、双因素认证等机制,增加攻击者的攻击成本,提高攻击的难度。