Brought to you by:
Suppliers of:
BOOZT! is a banner management software for Linux servers. A security vulnerability in the product allows remote attackers to execute arbitrary code, by exploiting a buffer overflow vulnerability in the CGI.
Credit:
The information has been provided by Rafael San Miguel Carrasco .
Example:
Here is a reproduction of the bug:
http://127.0.0.1:8080/cgi-bin/boozt/admin/index.cgi?section=5&input=1
Fill the "Name Field" with enough A's (over 770 A's) and press "Create New Banner". You should see the following:
Internal Server Error
The server encountered an internal error or mis-configuration and was unable to complete your request.
Let us see what happened in error_log:
[Tue Feb 5 17:13:52 2002] [error] [client 127.0.0.1] Premature end of script headers: /usr/local/apache/cgi-bin/boozt/admin/index.cgi
Now see what the code for the AdministrationBanners function (src/admin/banners.c) looks like:
char name[255]="";
[...]
if ((pomus=(char *)GetFromCgi("name"))==NULL) strcpy(name,"");
else strcpy(name,pomus);
There is no boundary checking in GetFromCgi:
#define GetFromCgi(name) cgiParam(name)
const char *cgiParam(const char *name)
{
return cgiPosParam((CgiPos*)listGetByName(name));
}
const char *cgiPosParam(CgiPos *where)
{
CgiElement *w=(CgiElement*)where;
DefCheck(NULL);
[ ... code to walk over the linked list ... ]
}
This way we can write custom shellcode beyond the boundaries of the "name" variable, getting a shell with HTTPd privileges.
Please enable JavaScript to view the comments powered by Disqus.
blog comments powered by