freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CVE-2023-44487漏洞复现
jfkk 2024-08-12 20:03:18 524278

image

1、漏洞描述

HTTP/2 协议拒绝服务漏洞(CVE-2023-44487)允许恶意攻击者发起针对HTTP/2 服务器的DDoS攻击,使用HEADERSRST_STREAM发送一组HTTP请求,并重复此模式以在目标HTTP/2服务器上生成大量流量。通过在单个连接中打包多个HEADERSRST_STREAM帧,可能导致每秒请求量显著增加,并导致服务器上的CPU 利用率较高,最终导致资源耗尽,造成拒绝服务

对于漏洞原理,简而言之,就是HTTP/2协议有一个bug,它使得用户单方面可以取消通信(耗时短),而服务器需要耗时来处理该响应(耗时长),从而导致拒绝服务,可参考如下文章

深入分析 CVE-2023-44487 HTTP/2 快速重置攻击对 Nginx 的影响

How it works: The novel HTTP/2 ‘Rapid Reset’ DDoS attack

2、配置环境

配置环境:Ubuntu20.04两台

被攻击主机:victim

攻击主机:jfkk

python3.8、python3.10、python3.11都可

Ubuntu20.04安装教程:https://blog.csdn.net/fr16021028/article/details/125888815

(1)安装Apache2

在被攻击主机(victim)上安装apache2服务,以模拟http/2服务,命令如下

sudo apt update
sudo apt install apache2

示意图如下

image
安装成功以后,可以通过浏览器访问127.0.0.1,可以看到,是安装成功的。
image
使用service apache2 status命令也可以看到是成功的,如下所示。
image

(2)启用HTTP/2模块

使用curl命令可以查看协议(默认是80端口)

curl -I -k -s --http2 localhost

image
由上可以看到,刚安装的apache2是没有http/2模块的,需要手动安装,命令如下

sudo a2enmod http2
systemctl restart apache2

操作示意图如下所示
image

(3)开启443端口

当使用浏览器访问443端口时,可以看到,是失败的,这是因为要为apache2配置一些ssl等东西。
image
开启SSL https 443比较麻烦,ssl配置不好搞,可以参考这个文章Linux Apache2如何开启SSL https 443,下面提供比较简单的命令,执行即可。

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2

用https再次访问(https://127.0.0.1/),发现是可以访问的,如下所示。
image
以上就是配置的环境,攻击主机可以在宿主机上进行,也可以在虚拟机中进行,只要能ping通就行。

3、漏洞复现

想要实现精确的攻击,可以查看该github:https://github.com/secengjeff/rapidresetclient,该工具需要安装go环境,比较麻烦,不再赘述,想要尝试,可以参考文献引用部分的第一条。

(1)安装脚本环境

该漏洞github上的脚本有很多,这边挑一个简单的就行,下载攻击脚本(在攻击主机(jfkk)上下载),命令如下。

git clone https://github.com/imabee101/CVE-2023-44487.git

查看一下被攻击主机victim)的IP:192.168.70.169

image
然后修改CVE-2023-44487目录下的main.py文件,将url改为被攻击主机的ip192.168.70.169

image
在**攻击主机(jfkk)**上执行main.py需要安装依赖库

pip install hyper

image

(2)执行攻击脚本

DDoS攻击成功的表现如下:

  1. 请求超时:客户端在等待服务器响应时超时。

  2. 服务不可用:浏览器或客户端收到服务器错误(如502 Bad Gateway,503 Service Unavailable等)。

  3. 高负载:系统监控工具(如top,htop)显示CPU使用率达到100%,内存和交换空间被完全使用。

  4. 系统响应缓慢或无响应:服务器上的其他操作(如登录,命令执行)变得非常缓慢或无法完成。

其实本文的复现应该称为DoS攻击,因为DDOS攻击的实施更为复杂,需要控制大量的计算资源和僵尸网络。

执行main.py,并使用htop命令(这个命令没有安装可以apt安装一下)在虚拟机(victim)中观察,下面是没有进行攻击时的CPU使用情况,可以看到,CPU利用率很少,其中图上的12表示CPU的序号,其下面为内存Mem和交换区Swp
如果虚拟机的CPU越多,那么服务器处理消息的能力就越强,那么DoS的效果就越差,所以为了尽可能的展现出攻击的效果,必须使得服务器端的CPU核数越少越好,客户端的CPU核数越多越好

sudo apt update
sudo apt install htop

image
开启攻击脚本之后,可以看到,CPU使用率迅速上涨,攻击成功,如下图所示。

至于为什么有这么多apache的进程,这是因为apache使用多个进程或线程来处理并发的客户端请求。这样做主要是为了提高性能、扩展性和可靠性,能够处理大量并发请求和高负载。(我的猜测)
image

(3)相关报错

当然,在运行脚本时可能会遇到一下情况,[Errno 24] Too many open files
image
too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯连接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制,使用如下命令查看当前系统设置的最大句柄数是多少。

ulimit -a

可以看到,最大打开数量是1024
image
提高一下最大打开数量,再次运行脚本即可

ulimit -n 8912

image

4、相关细节

1、安装pyhton虚拟环境

在安装过程中,有些python包之间可能会冲突,如下图所示
image
因此可以使用虚拟环境,每个虚拟环境都有自己独立的 Python 解释器和依赖包。这样,不同项目的依赖不会相互冲突,安装过程如下。
(1)安装venv 模块:

sudo apt update
sudo apt install python3-venv

(2)创建虚拟环境:
选择一个目录来创建虚拟环境,并运行以下命令:

python3 -m venv myenv

上述命令将在当前目录下创建一个名为myenv的虚拟环境,可以根据需要更改虚拟环境的名称。
(3)激活虚拟环境:
要激活刚创建的虚拟环境,运行以下命令:

source myenv/bin/activate

激活后,命令提示符会发生变化,显示虚拟环境的名称,类似于这样:

(myenv) user@hostname:~/path/to/your/project$

(4)安装依赖包:
在激活的虚拟环境中,你可以使用pip来安装所需的Python包。例如,安装hyper包:

pip install hyper

image

(5)停用虚拟环境:
完成工作后,可以通过以下命令停用虚拟环境:

deactivate

REFERENCE

  1. https://www.youtube.com/watch?v=zvNnqblGGs0&pp=ygUOY3ZlLTIwMjMtNDQ0ODc%3D

  2. https://www.youtube.com/watch?v=XD_PONWpdmw&pp=ygUOY3ZlLTIwMjMtNDQ0ODc%3D

  3. https://github.com/bcdannyboy/CVE-2023-44487

  4. https://github.com/imabee101/CVE-2023-44487

  5. https://blog.csdn.net/Roy_70/article/details/78423880

  6. https://stack.chaitin.com/techblog/detail/164

# 漏洞复现
本文为 jfkk 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
黑战士安全
jfkk LV.2
月到天心处,风来水面时。 一般清意味,料得少人知。 github:https://github.com/glkfc
  • 4 文章数
  • 8 关注者
CVE–2019–8985漏洞复现
2024-09-20
漏洞挖掘技术研究
2024-09-05
IOT安全之Vigor路由器初探(一)
2024-08-13
文章目录