ECartis LIScript任意变量查看漏洞

漏洞信息详情

ECartis LIScript任意变量查看漏洞

漏洞简介

Ecartis是一款邮件列表管理器。
Ecartis没有正确处理用户提供的输入,远程攻击者可以利用这个漏洞未授权获得敏感信息。
Ecartis包含的liscript支持部分变量和函数,部分地方对用户输入完全可信,允许调用部分函数或查看变量,用户提交如下的请求:
subscribe secret-list
subscribe <$post-password>
第一条命令会失败,但是Ecartis会选择secre-list作为活动列表,第二条命令也不成功,但是返回的邮件会包含post-password的实际密码信息。

漏洞公告

临时解决方法:
如果您不能立刻安装补丁或者升级,CNNVD建议您采取以下措施以降低威胁:

* 第三方补丁如下:

diff -ru ecartis-1.0.0-old/src/smtp.c ecartis-1.0.0/src/smtp.c

— ecartis-1.0.0-old/src/smtp.c Fri Apr 18 09:45:04 2003

+++ ecartis-1.0.0/src/smtp.c Thu Aug 14 17:30:24 2003

@@ -330,18 +330,19 @@

return 1;

}

-void smtp_body_822bis(const char *src, char *dest)

+void smtp_body_822bis(const char *src, char *dest, size_t size)

{

const char *ptr1;

– char *ptr2;

+ char *ptr2, *end;

int lastcr;

lastcr = 0;

ptr1 = src;

ptr2 = dest;

+ end = dest + size – 2;

– while(*ptr1) {

+ while(*ptr1 && ptr2 < end) {

if ((*ptr1 == ‘\n’) && (!lastcr)) {

*ptr2++ = ‘\r’;

} else if (*ptr1 == ‘\r’) {

@@ -367,7 +368,7 @@

{

char buffer[HUGE_BUF];

– smtp_body_822bis(line,&buffer[0]);

+ smtp_body_822bis(line,&buffer[0], sizeof(buffer));

clean_var(“smtp-last-error”, VAR_TEMP);

if (!sock_printf(my_socket,”%s”,buffer)) {

@@ -385,7 +386,7 @@

buffer_printf(buffer2, sizeof(buffer2) – 1, “%s\r\n”, line);

– smtp_body_822bis(buffer2,&buffer[0]);

+ smtp_body_822bis(buffer2,&buffer[0], sizeof(buffer));

clean_var(“smtp-last-error”, VAR_TEMP);

if (!sock_printf(my_socket,”%s”,buffer)) {

diff -ru ecartis-1.0.0-old/src/unhtml.c ecartis-1.0.0/src/unhtml.c

— ecartis-1.0.0-old/src/unhtml.c Fri Apr 18 09:45:04 2003

+++ ecartis-1.0.0/src/unhtml.c Thu Aug 14 17:43:03 2003

@@ -161,6 +161,25 @@

case HTMLPARSE_NORMAL:

case HTMLPARSE_EATTAG:

{

+ /* Wordwrap */

+ if (linechars > 76) {

+ char tempbuf[1024];

+ *tptr = 0;

+

+ tptr = strrchr(linebuffer,’ ‘);

+ if (!tptr) tptr = strrchr(linebuffer,’-‘);

+ if (!tptr) tptr = &tempbuf[76];

+

+ buffer_printf(tempbuf,1023,”%s”,

+ (*tptr == ‘ ‘) ? tptr + 1 : tptr);

+ *tptr = 0;

+

+ newline(outfile,&linebuffer[0],indent,linemode);

+ buffer_printf(linebuffer,79,”%s”,tempbuf);

+ tptr = &linebuffer[strlen(linebuffer)];

+ linechars = strlen(linebuffer);

+ lastspace = 1;

+ }

if (tempchar == ‘&’) {

memset(buffer, 0, sizeof(buffer));

tagptr = &buffer[0];

@@ -182,25 +201,6 @@

lastspace = (tempchar == ‘ ‘);

}

– /* Wordwrap */

– if (linechars > 76) {

– char tempbuf[1024];

– *tptr = 0;

– tptr = strrchr(linebuffer,’ ‘);

– if (!tptr) tptr = strrchr(linebuffer,’-‘);

– if (!tptr) tptr = &tempbuf[76];

– buffer_printf(tempbuf,1023,”%s”,

– (*tptr == ‘ ‘) ? tptr + 1 : tptr);

– *tptr = 0;

– newline(outfile,&linebuffer[0],indent,linemode);

– buffer_printf(linebuffer,79,”%s”,tempbuf);

– tptr = &linebuffer[strlen(linebuffer)];

– linechars = strlen(linebuffer);

– lastspace = 1;

– }

}

}

break;

@@ -338,7 +338,8 @@

}

parsemode = HTMLPARSE_NORMAL;

} else {

–  

参考网址

来源: DEBIAN
名称: DSA-467
链接:http://www.debian.org/security/2004/dsa-467

来源: XF
名称: ecartis-subscribe-password-disclosure(12929)
链接:http://xforce.iss.net/xforce/xfdb/12929

受影响实体

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享