查看原文
其他

再说Web渗透测试(第八集-下集)

再说安全 再说安全
2024-12-01
前言
Web安全最后的救赎:究竟是道高一尺,还是魔高一丈! 10 种常见WAF绕过手法深度解析(下集)


本文章阅读大约需要75分钟;

第八集,框架内容-WAF绕过;

内容有点多,所以分为上集10项+下集10项

Web渗透测试框架内容

编号 名称
描述
检查项
1信息收集子域名接管15项
越权(IDOR)
15项
  2Word PressCMS 安全
15项
  3HTTP头
识别缺失或配置错误的安全头信息
25项

4

注入攻击

XSS15项
SQL Injection
15项
  5文件上传尝试绕过安全机制上传恶意文件20项

    

  6

SSRF
利用漏洞欺骗服务器端应用程序向内部网络或其他系统发送请求,获取敏感信息或进行攻击。


15项

 7

WAF测试WAF的有效性,包括其检测和阻止恶意流量的能力,以及绕过WAF的潜在方法。

20项

 8
TLS TLS Vulnerability
 9CookieCookie设置
10XXEXML外部实体注入

1. Web安全最后的救赎:究竟是道高一尺,还是魔高一丈!

  下集10项目录:

编号名称
 11应用层 DDos
 12SsL/TLS vulns
 13HTTP头部注入
 14已知攻击签名
 15路径遍历
 16XML vulns
 17误报
 18自定义规则
 19漏报
 20持续测试与监控

2.  WAF绕过:20种常见方法深度解析 

11. 应用层DDos攻击测试:

应用层 DDoS 攻击不同于传统的网络层 DDoS 攻击,它不依赖于大量的流量,而是通过发送看似正常的 HTTP 请求,利用应用层协议的缺陷或 Web 服务器的资源限制,达到瘫痪目标网站的目的。

为了评估 WAF 对应用层 DDoS 攻击的防御能力,我们需要模拟真实的攻击场景,测试 WAF 是否能够识别和阻止这些攻击。

1.  测试制定的背景:

  • 应用层 DDoS 攻击日益普遍:  随着互联网的快速发展,应用层 DDoS 攻击的成本越来越低,攻击工具也越来越容易获取,导致应用层 DDoS 攻击越来越普遍。  攻击者只需要控制少量计算机,就可以发起大规模的攻击,而传统的网络层 DDoS 攻击防御措施,例如流量清洗等,难以有效防御应用层 DDoS 攻击。

  • WAF 面临新的挑战:  WAF 的主要功能是识别和拦截恶意请求,但应用层 DDoS 攻击使用的是合法的 HTTP 请求,难以被 WAF 识别和拦截。  这就要求 WAF 必须具备更强大的检测和防御能力,例如行为分析、异常检测等,才能有效防御应用层 DDoS 攻击。


2.  测试技术攻击原理:

应用层 DDoS 攻击主要利用以下几种技术手段:

  • HTTP Flood 攻击:攻击者向目标网站发送大量 HTTP GET 或 POST 请求,这些请求看似合法,但数量庞大,服务器需要消耗大量的资源来处理这些请求,最终导致服务器过载,无法响应正常用户的请求。

  • Slowloris 攻击:攻击者发送大量慢速 HTTP 请求,保持连接长时间不释放,消耗服务器的连接数资源。Web 服务器通常会限制最大并发连接数,如果攻击者占用了大量的连接,就会导致正常用户无法连接到服务器。

  • RUDY (R-U-Dead-Yet?) 攻击:攻击者发送一个非常大的 HTTP POST 请求,并且数据传输速度非常慢,消耗服务器的带宽和内存资源。  由于服务器需要等待接收完整个 POST 请求才能进行处理,如果攻击者长时间不发送数据,就会导致服务器的资源被占用,无法处理其他请求。

  • Zero-day DDoS 攻击: 攻击者利用未知漏洞或新型攻击手法,绕过 WAF 的防御机制,进行 DDoS 攻击。  这种攻击方式难以防御,因为 WAF 的规则库中没有针对这些漏洞或攻击手法的规则。


3.  本条测试绕过的技巧:

攻击者可以使用以下技巧绕过 WAF 防护:

  • 使用多个 IP 地址:攻击者可以使用僵尸网络或代理服务器,控制大量的计算机,从不同的 IP 地址发起攻击,绕过基于 IP 地址的速率限制。

  • 使用合法的请求:攻击者可以发送合法的 HTTP 请求,例如访问网站首页、浏览商品页面等,但请求频率非常高,造成服务器过载。

  • 隐藏攻击特征:攻击者可以模仿正常用户的行为,例如使用真实的 User-Agent、Referer 等头信息,以及随机访问不同的页面,使攻击流量看起来像正常的用户流量,难以被 WAF 识别。

  • 利用 WAF 规则缺陷:一些 WAF 的规则可能存在缺陷,例如只针对特定类型的请求进行过滤,或者速率限制的阈值过高,攻击者可以利用这些缺陷绕过 WAF 防护。

  • 攻击 WAF 本身:攻击者可以攻击 WAF 本身,例如利用 WAF 的漏洞,导致 WAF 崩溃或无法正常工作,从而绕过 WAF 防护。


4.  测试方法:

  • 模拟攻击:使用 DDoS 测试工具,例如 HULK、Slowloris、GoldenEye 等,模拟应用层 DDoS 攻击,观察 WAF 的防御效果。

  • 压力测试:使用压力测试工具,例如 ApacheBench、JMeter 等,模拟大量用户访问网站,测试网站在高负载情况下的性能表现,以及 WAF 的防御能力。


5.  目的:

  • 测试 WAF 是否能够有效地防御应用层 DDoS 攻击,包括 HTTP Flood、Slowloris、RUDY 等。

  • 测试 WAF 是否能够识别和拦截隐藏在合法请求中的恶意流量。


6.  推荐工具:

  • 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 服务器等各种服务的性能。


    7.  防御理念及方法:

    • 限制请求速率:配置 WAF 规则,限制每个 IP 地址或每个用户在一段时间内可以发送的请求次数,就像设置交通信号灯,控制流量速度,防止道路拥堵。

    • 识别恶意 User-Agent:配置 WAF 规则,识别和拦截使用恶意 User-Agent 的请求,例如已知的攻击工具 User-Agent、非浏览器 User-Agent 等。 这就像识别可疑人员,阻止其进入城市。

    • 验证 HTTP 头信息: 验证 HTTP 头信息的合法性,例如 Referer 头信息、Accept-Language 头信息等,识别异常的请求。

    • 使用行为分析:  WAF 可以使用行为分析技术,识别异常的请求模式,例如短时间内来自同一 IP 地址的大量请求、访问敏感 URL 的请求等,即使攻击者使用了隐藏攻击特征的技巧,也可能被 WAF 检测到。 这就像城市中的监控系统,可以识别异常行为,及时报警。

    • 优化服务器性能:  优化 Web 服务器和应用程序的性能,提高服务器的负载能力,例如使用缓存技术、优化数据库查询、使用负载均衡等,就像加强城市基础设施建设,提高城市承载能力。

    • 使用 CDN 服务:  使用内容分发网络 (CDN) 服务,将网站内容缓存到多个服务器节点,分散攻击流量,提高网站的可用性。 这就像建立多个分流通道,分担交通压力。


    应用层 DDoS 攻击案例:实战演练


    案例一:HTTP Flood 攻击 -  利用脚本模拟大量请求

      攻击代码:


    import requestsimport 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 请求,并使用多线程技术,模拟大量用户并发访问网站,造成服务器过载。,模拟大量用户并发访问网站,造成服务器过载。

    防御措施:配置 WAF 规则,限制match每个 IP 地址在一段时间内可以发match送的请求次数。

    案例二:Slowloris 攻击 -  利用工具发起慢速攻击

    • 攻击代码:   使用 Slowloris 工具攻击目标网站:


    slowloris -s 100 -v example.com

    该命令使用 100 个并发连接,对 example.com 发起 Slowloris 攻击。

    防御措施:  配置 WAF 规则,限制每个 IP 地址的最大并发连接数,并设置连接超时时间,及时释放闲置连接。

    案例三:RUDY 攻击 - 发送超大 POST 请求

    • 攻击代码:使用 Burp Suite 构造一个超大的 POST 请求,并将 Content-Length 头信息设置为一个非常大的值,例如 1GB,然后发送该请求到目标网站。  或者,可以使用 Python 脚本,模拟发送超大 POST 请求:


    import socketimport 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

    防御措施:配置 WAF 规则,限制 POST 请求的数据大小,并设置请求超时时间,避免服务器资源被长时间占用。

    案例四:Zero-day DDoS 攻击 -  利用未知漏洞

    • 攻击代码: 攻击者发现了一个 Web 服务器的未知漏洞,该漏洞会导致服务器在处理特定类型的请求时崩溃。 攻击者利用该漏洞构造恶意请求,并发送到目标网站,导致服务器崩溃。 例如,攻击者发现某个 Web 服务器软件在处理包含特定字符的 URL 时会崩溃,攻击者就可以构造包含该字符的 URL,并发送大量请求到目标服务器,导致服务器崩溃。

    • 防御措施: 及时更新 Web 服务器和应用程序,修复已知漏洞,并使用 WAF 拦截针对未知漏洞的攻击。  WAF 可以使用异常检测技术,识别异常的请求模式,即使是未知漏洞,也可能被 WAF 检测到。


    案例五: 隐藏攻击特征 -  模拟正常用户行为

    • 攻击代码: 攻击者使用真实的 User-Agent 和 Referer 头信息,随机访问网站的不同页面,发送请求的频率与正常用户相似,例如每秒 1-2 个请求,试图绕过 WAF 的检测。  例如,攻击者可以编写一个脚本,模拟用户的正常浏览行为,访问网站的多个页面,并随机停留一段时间,使攻击流量看起来像正常的用户流量。

    • 防御措施:WAF 可以使用行为分析技术,识别异常的请求模式,例如短时间内来自同一 IP 地址的访问次数、用户行为与历史记录的偏差等,即使攻击者模仿了正常用户的行为,也可能被 WAF 检测到。  同时,开发者也可以使用验证码、双因素认证等机制,增加攻击者的攻击成本,提高攻击的难度。


    总结:

    应用层 DDoS 攻击是一种非常危险的攻击方式,它利用看似合法的 HTTP 请求,消耗服务器资源,最终导致网站瘫痪。  WAF 可以作为防御这类攻击的一道防线,但 WAF 本身也可能存在漏洞或配置错误,导致攻击者可以绕过 WAF 防护。开发者需要了解应用层 DDoS 攻击的原理和绕过技巧,并采取相应的防御措施,才能有效地保护网站安全。

    防御应用层 DDoS 攻击是一个系统工程,需要开发者、安全运维人员和 WAF 厂商共同努力,才能构建更加完善的防御体系。


    12. SsL/TLS vulns测试 :

    个人观点,仅供参考
    继续滑动看下一个
    再说安全
    向上滑动看下一个

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存