Traceroute-nanog是一款开放源代码路由跟踪信息搜寻程序,可以对每一跳点进行DNS解析,获得管理员EMAIL地址等信息。 Traceroute-nanog中的\'\'traceroute.c\'\'文件中\'\'get_origin()\'\'函数缺少正确的边界缓冲区检查,本地攻击者可以利用这个漏洞进行基于堆的缓冲区溢出,精心构建提交数据可以获得root用户权限。 \'\'traceroute.c\'\'文件中get_origin()函数被调用的时候,其堆栈情况如下如示: char buf[256] tmp4[100] tmp3[100] tmp2[100] tmp1[100] EBP EIP [bbbbbbbbbbbbbbbbbb44444444443333333333222222222221111111111BBBBIIII] -> 0xbfffffff 在堆中存在一个名为\'\'reply\'\'的8K缓冲区,用来存放来自服务器的应答,通过连续的read(2)调用,多次把256字节的数据读到buf[]数组,并连接写到\'\'reply[]\'\'缓冲区中,但是在写缓冲区时没有进行充分的边界检查,由get_origin()函数进行解析的时候触发缓冲区溢出,精心构建提交数据可以以ROOT权限在系统上执行任意指令。
Traceroute-nanog是一款开放源代码路由跟踪信息搜寻程序,可以对每一跳点进行DNS解析,获得管理员EMAIL地址等信息。 Traceroute-nanog中的\'\'traceroute.c\'\'文件中\'\'get_origin()\'\'函数缺少正确的边界缓冲区检查,本地攻击者可以利用这个漏洞进行基于堆的缓冲区溢出,精心构建提交数据可以获得root用户权限。 \'\'traceroute.c\'\'文件中get_origin()函数被调用的时候,其堆栈情况如下如示: char buf[256] tmp4[100] tmp3[100] tmp2[100] tmp1[100] EBP EIP [bbbbbbbbbbbbbbbbbb44444444443333333333222222222221111111111BBBBIIII] -> 0xbfffffff 在堆中存在一个名为\'\'reply\'\'的8K缓冲区,用来存放来自服务器的应答,通过连续的read(2)调用,多次把256字节的数据读到buf[]数组,并连接写到\'\'reply[]\'\'缓冲区中,但是在写缓冲区时没有进行充分的边界检查,由get_origin()函数进行解析的时候触发缓冲区溢出,精心构建提交数据可以以ROOT权限在系统上执行任意指令。