首页 -> 安全研究
安全研究
安全漏洞
IBM HSLCTF拒绝服务的漏洞
发布日期:2001-03-22
更新日期:2001-03-22
受影响系统:
描述:
HSLCTF 1.0 for AIX
HSLCTF(Hursley软件实验室消费者交易框架,Hursley Software Laboratories
Consumer Transaction Framework)HTTP对象中存在一个缺陷,允许攻击者击溃
Web对象以及与其相连的对象(即SMTP服务)。
<* 来源:Peter Grundl(peter.grundl@defcom.com) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
只要发送一个超长的HTTP请求就可以使HTTP崩溃,并使内部的邮件系统也垮掉。请求如下所示:
GET / HTTP/1.0\r\nhost:www.foo.org\r\nreferrer: aaaaaaa...aaaaaaaaaaaa
即不停地给套接字中发送“a”直到服务器崩溃。
建议:
厂商补丁:
用户可以自行修改代码以加入长度检查。IBM Hursley软件实验室给出下面的例子,该例子确保
HTTP头部的长度不超过1024字节。
新编写一个类LimitHttpTcpipAdapter,该类继承自CTFTcpipHttpAdapter并用来替换CTFTcpipHttpAdapter。替换方法是将Web服务器的INI文件的相关部分改为如下形式:
[Adapter]
TCPIPHTTP=LimitHttpTcpipAdapter
或者修改服务器启动代码中与上述等价的AddAdapter( )语句。
LimitHttpTcpipAdapter类如下所示:
import com.ibm.CTF.Adapters.*;
import java.io.*;
public class LimitHttpTcpipAdapter extends CTFTcpipHttpAdapter
{
protected String ReadLine( ) throws Exception
{
int intChar;
int i = 0;
StringBuffer Result = new StringBuffer( 1024 );
/* read Header from input stream */
while ( true ) /* repeat until "newline"*/
{
intChar = Stream_in.read(); /* read a character */
switch ( intChar ) /* what character */
{
case -1: /* ... no character */
i = i + 1; /* error count */
if ( i > 3 ) /* more than threshold ? */
throw new EOFException(); /* ... yes, EOF */
else /* ... no */
Thread.sleep( 10 ); /* wait a bit */
break;
case 10: /* line feed */
BytesRead = BytesRead + Result.length();
/* data received so far */
return( Result.toString() ); /* all done */
case 13: /* carridge return */
BytesRead = BytesRead + 1; /* data received so far */
break;
default: /* real data */
i = 0; /* timeout count reset */
Result.append( (char) intChar ); /* append to string */
if ( Result.length( ) > 1024 )
throw new IOException( "missing cr-lf delimiter" );
} /* switch */
} /* while */
}
}
浏览次数:4208
严重程度:0(网友投票)
绿盟科技给您安全的保障