0x00 背景介绍
2017年11月24日, OSS社区披露了一个由独立安全研究员Mohamed Ghannam发现的一处存在于Linux 内核Netlink socket子系统(XFRM)的漏洞,漏洞编号CVE-2017-16939。
360CERT经过实际验证,确认该漏洞确实存在,但poc作者认为存在UAF漏洞,存在提权的可能性,而我们认为并没有UAF,只是使用未初始化链表造成的crash(空指针引用),并且使用的内存已经被初始化了,实际上无法提前布局,不能进一步利用达到提权的目的。
0x01 漏洞概述
Netlink 是一种特殊的 socket,它是一种在内核与用户间进行双向数据传输的一种方式,用户态应用使用标准的 socket API 就可以使用 Netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 Netlink。
XFRM是 Linux 2.6 内核为安全处理引入的一个可扩展功能框架,用来在数据包经过路由路径的过程中对其进行修改。
漏洞原因是:在调用xfrm_dump_policy_done函数之前,如果不事先调用xfrm_dump_policy,会导致链表没有被初始化,造成空指针引用,产生崩溃。官方修正的补丁添加了xfrm_dump_policy_start函数,确保调用done之前会进行初始化。
0x02 漏洞攻击面影响
1. 影响版本
影响Linux Kernel 2.6.28~4.14之间的版本
影响版本链接:
http://www.securityfocus.com/bid/101954
2. 修复版本
漏洞已被作为1137b5e("ipsec:修复异常xfrm策略转储崩溃"补丁)的一部分解决,在4.14-rc7版本中被修复。
0x03 漏洞详情
1. 技术细节
在函数 static int netlink_dump(struct sock *sk) 中:
(/net/netlink/af_netlink.c)
在上面的代码中,我们可以看到当sk->sk_rcvbuf小于等于sk_rmem_alloc(注意我们可以通过stockpot控制sk->sk_rcvbuf)时,netlink_dump()检查失败,它跳转到函数的结尾并退出,但是cb_running的值不会更改为false。
所以当 atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf 时,不应调用 cb->done(cb),且nlk->cb_running 应设为 false。否则在 static void netlink_sock_destruct(struct sock *sk) 函数中:
该函数会在close(socketfd)时触发。该函数检测到 nlk->cb_running 不为 false,就会调用 done() 函数,即 xfrm_dump_policy_done(),导致 crash。
2. poc的验证分析
原作者 poc 中的执行流程如下:
(1) do_setsockopt() :改小 sk->sk_rcvbuf 值
(2)send_msg(fd,&p->msg):
第一次发送时,atomic_read(&sk->sk_rmem_alloc) = 0 < sk->sk_rcvbuf,发送之后,sk->sk_rmem_alloc 累加,结果在第一次发送后:
atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf
(3)send_msg(fd,&p->msg):
【技术分享】一篇文章精通PowerShell Empire 2.3(上) 阅读原文»
作者:shuteer
预估稿费:700RMB
(本篇文章享受双倍稿费 活动链接请点击此处)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
0×00 引言
作为360安全的忠实读者和作者,360这次搞活动肯定是要捧场的,至于为什么选择写Empire,是因为Empire在域渗透方面的功能实在是太强大,很多人只是用来生成免杀,未免有点大材小用。而且网上了一直没有一个系统的教程,特别是版本更新到2.X以后,有些使用方法发生了改变,甚至连官网的介绍都没有更新。因为该工具的使用要求搭建域环境,大概写了四五天,期间有在外网VPS上操作的,也有在内网操作的,所以在这个方面不要太较真,只要研究其方法即可。
除了基本的安装,使用以外,在模块方面主要分成生成木马,信息收集,提权,横向渗透以及后门五个方面来写,目录如下。
0×01.Empire简介
0×02.Empire的基本操作
1.安装
2.设置监听
0×03.生成木马
1.dll
2.launcher
3.launcher_vbs
4.launcher_bat
5.macro
6.Ducky
0×04.连接代理及基本使用
0×05. 信息收集
1.屏幕截图
2.键盘记录
3.剪贴板记录
4.查找共享
没有评论:
发表评论