linux内核 漏洞扫描,关于Linux 2.6 kernel udev 漏洞的检测及修补

最近闹的很凶的Linux udev漏洞对2.6系列的CentOS/RHEL 5.x(除了5.3)都有效,而对2.4系列的则无效,对于CentOS/RHEL 4.x 经过测试,按本文攻击方法无效,但是否真的无效还有待真正高手验证!请大家必须打起12分精神。赶紧升级。ExtMail团队已经将所有我们掌控的Linux服务器(2.6 kernel,5.x 系列)全部升级完毕。以下是检测方法和升级方法,请路过使用受影响的linux系统的朋友一定要参考并升级,否则很容易出问题。这次可以通过任意web程序来实现攻击,而且成功率几乎100%。

2)获得udev进程号

执行:ps ax|grep udev|grep -v grep|awk {'print $1'} 获得udev进程号,然后将此数字减1作为

exploit-udev-8478的参数,例如命令结果为143则参数为142

3)执行:

sh exploit-udev-8478 142

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=65530(hzqbbc)

顺利获得root权限,如果无法获得root权限,要多执行脚本几次,一般第二次即可获得root权限。

解决/预防方法

唯一的就是要立刻升级udev软件包,此软件包升级后不需要重启动。方法很简单,请升级对应版本的官方最新udev,尤其要注意查看是否将这个漏洞补掉,EMOS用户可以很简单的用yum升级:

yum update udev

升级完毕后再用检测方法检测一遍以确保没有问题!强烈建议再重新做检测时,执行以下命令清除掉上一次入侵成功的临时文件,否则升级完也会攻击成功的。

以root权限执行:

引用:

rm -rf /tmp/libno_ex*

rm -rf /tmp/suid

rm -rf /tmp/udev0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用udev检测USB热插拔的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <libudev.h> int main() { struct udev *udev = udev_new(); // 创建udev实例 if (!udev) { perror("udev_new"); exit(1); } struct udev_monitor *mon = udev_monitor_new_from_netlink(udev, "udev"); // 创建监视器,监听udev事件 udev_monitor_filter_add_match_subsystem_devtype(mon, "usb", NULL); // 监视usb设备 udev_monitor_enable_receiving(mon); // 开始接收udev事件 while (1) { fd_set fds; FD_ZERO(&fds); FD_SET(udev_monitor_get_fd(mon), &fds); // 将udev监视器的文件描述符加入到文件描述符集合中 // 等待事件的发生 if (select(udev_monitor_get_fd(mon) + 1, &fds, NULL, NULL, NULL) > 0) { if (FD_ISSET(udev_monitor_get_fd(mon), &fds)) { struct udev_device *dev = udev_monitor_receive_device(mon); // 获取udev事件对应的设备信息 if (dev) { const char *action = udev_device_get_action(dev); // 获取事件类型 const char *devnode = udev_device_get_devnode(dev); // 获取设备节点 const char *vendor = udev_device_get_property_value(dev, "ID_VENDOR_FROM_DATABASE"); // 获取设备的制造商信息 const char *product = udev_device_get_property_value(dev, "ID_MODEL_FROM_DATABASE"); // 获取设备的型号信息 printf("Action: %s\n", action); printf("Device Node Path: %s\n", devnode); printf("Vendor: %s\n", vendor); printf("Product: %s\n\n", product); udev_device_unref(dev); // 释放设备信息占用的资源 } } } } udev_monitor_unref(mon); // 释放udev监视器占用的资源 udev_unref(udev); // 释放udev实例占用的资源 return 0; } ``` 这个代码会不断地监听udev事件,当有USB设备插入或拔出时,就会打印出相应的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值