首页 -> 安全研究
安全研究
安全漏洞
TuxBR LIBCGI远程缓冲区溢出漏洞
发布日期:2002-11-28
更新日期:2002-12-04
受影响系统:
TuxBR LIBCGI 1.0.3描述:
TuxBR LIBCGI 1.0.2
BUGTRAQ ID: 6270
LIBCGI是一款由C编写的CGI程序,提供GET和POST请求模式,具有URL解码,访问MySQL等功能。
LIBCGI中'cgi_lib.c'脚本中的'parse_field()'函数对输入检查不正确,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击,以LIBCGI进程权限在系统上执行任意指令。
'cgi_lib.c'代码中的129行'parse_field()'函数对用户的输入缺少正确的边界缓冲区溢出:
129 void parse_field(char *field, char *rtnfield)
...
132 char *ptr,
133 *endptr,
134 tmp_field[128];
...
137 sprintf(tmp_field,"%s=",field); // "field1="
138
139 if((ptr=strstr(req_http,tmp_field))!=NULL)
140 {
141 ptr+=strlen(tmp_field); // "[value]&field2=[value2]&field3=[value3]"
142
143 if((endptr=strchr(ptr,'&'))!=NULL) // "&field2=[value2]&field3=[value3]"
144 {
145 memmove(rtnfield, ptr, (endptr - ptr)+1); // here.
146 rtnfield[(endptr - ptr)]='\0';
147 }
...
--
攻击者可以提交超长的数据作为parse_field()函数的参数,触发缓冲区溢出,精心构建提交数据可能以LIBCGI进程权限在系统上执行任意指令。
<*来源:dong-h0un U (xploit@hackermail.com)
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=103849201924389&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://x82.inetcop.org/h0me/c0de/0x82-Remote.tuxbrLibcgi.s
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* dong-h0un U <xploit@hackermail.com>提供如下第三方补丁:
=== libcgi.patch ===
--- cgi_lib.c Sat Dec 29 07:10:47 2001
+++ cgi_lib.patch.c Thu Nov 21 23:47:13 2002
@@ -126,7 +126,7 @@
//Faz o parse buscando pelo campo na string de request HTTP
-void parse_field(char *field, char *rtnfield)
+void parse_field(char *field, char *rtnfield, int size)
{
char *ptr,
@@ -142,12 +142,12 @@
if((endptr=strchr(ptr,'&'))!=NULL)
{
- memmove(rtnfield, ptr, (endptr - ptr)+1);
+ memmove(rtnfield, ptr, size-1);//(endptr - ptr)+1);
rtnfield[(endptr - ptr)]='\0';
}
else
{
- memmove(rtnfield, ptr, (strlen(ptr))+1);
+ memmove(rtnfield, ptr, size-1);//(strlen(ptr))+1);
rtnfield[(strlen(ptr))+1]='\0';
}
--- cgi_lib.h Sun Jan 20 06:58:34 2002
+++ cgi_lib.patch.h Thu Nov 21 23:47:05 2002
@@ -37,7 +37,7 @@
/*********************/
void SwapChar(char *pOriginal, char cBad, char cGood);
-void parse_field(char *field, char *rtnfield);
+void parse_field(char *field, char *rtnfield, int size);
void get_request(unsigned int method, char *request);
void URLDecode(unsigned char *pEncoded);
void vExiterr();
--- samples/sample3.c Thu Dec 27 05:52:12 2001
+++ samples/sample3.patch.c Thu Nov 21 23:51:14 2002
@@ -9,9 +9,9 @@
get_request(1,req_http);
- parse_field("name",name);
- parse_field("address",address);
- parse_field("telephone",tel);
+ parse_field("name",name,(int)sizeof(name));
+ parse_field("address",address,(int)sizeof(address));
+ parse_field("telephone",tel,(int)sizeof(tel));
URLDecode(name);
URLDecode(address);
=== eof ===
厂商补丁:
TuxBR
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.tuxbr.com.br
浏览次数:3529
严重程度:0(网友投票)
绿盟科技给您安全的保障