[3908] in bugtraq

home help back first fref pref prev next nref lref last post

not so false alarm: query cgi problem

daemon@ATHENA.MIT.EDU (Apropos of Nothing)
Fri Jan 10 22:18:50 1997

Date: 	Fri, 10 Jan 1997 18:03:30 -0500
Reply-To: Apropos of Nothing <apropos@sover.net>
From: Apropos of Nothing <apropos@sover.net>
To: Multiple recipients of list BUGTRAQ <BUGTRAQ@NETSPACE.ORG>

OK, if you were to find a server that does not observe the RFC standards
*AND* has changed their default maximum URL length they may be vulnerable.

For interest sake, Apache defines it's max URL length like this:

/* The default string lengths */
#define MAX_STRING_LEN HUGE_STRING_LEN
#define HUGE_STRING_LEN 8192

I should note that I haven't gone through the code to find out if the
server actually truncates the URL; I imagine it does- if it didn't it would
be susceptable to a fairly easy buffer overflow- but I digress...  I don't
know how the NCSA server defines string lengths.

Anyway if you want to exploit the problem you'll have to send a good deal
of characters to the server... I've been told different string lengths by
different people.

tqbf@enteract.com says:
>You'll need to write 2,560,000 bytes just to write past the array of
>structures, assuming there are no alignment issues making each structure
>(or the array of structures) larger than that by some trivial amount.

while codewarrior@daemon.org thinks:
>you have to supply 1280000 bytes. ah, but you could cheat and just send
>stuff like >"a&a&a&a&a&a&a&a..." as the query string...hmm...okay.  that
>cuts it to 21000 bytes.

he reasons that:
>the routine in question was breaking the posted data on "&" before breaking
>it on "=", so that way you'd only have to provide the overflow to the last
>on the 10000 query things...

I haven't had a chance to try this one out, so I don't know.  However, if
you like to figure it out, here's the layout for the exploit:

http://www.server.com/cgi-bin/query?[questionable.buffer.string][shellcode]

Don't forget: [shellcode] isn't actually shell code, since just forking a
shell won't do you any good... you should end your shellcode with something
like /bin/cat%20/etc/passwd or /bin/bash%20-c%20cat%20/etc/passwd

Also:  In a normal oveflow you put a / character in front of the assembly
command.  When your overflowing from a cgi I *think* you use a % character
instead.

apropos of nothing

home help back first fref pref prev next nref lref last post