安全研究 >> 安全研究详情

常见未授权访问漏洞原理及修复总结手册(下)

作者: 美创科技安全实验室发布日期: 07月17日





未授权访问漏洞是一个在企业内部非常常见的问题,这种问题通常都是由于安全配置不当、认证页面存在缺陷,或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放,并且对用户的访问没有做任何限制的时候,可能会泄露出某些用户信息、敏感信息甚至可以执行系统命令,操作系统文件,导致系统的整体安全遭到破坏。


目录


10、Spring Boot未授权访问漏洞总结


11、Docker未授权访问漏洞总结


12、Rsync未授权访问漏洞总结


13、NFS未授权访问漏洞总结


14、VNC未授权访问漏洞总结


15、FTP未授权访问漏洞总结


16、CouchDB未授权访问漏洞总结


17、LDAP未授权访问漏洞总结

 

Spring Boot未授权访问漏洞总结



01、应用简介


SpringBoot是由Pivotal团队在2103年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring 4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。SpringBoot内嵌了Tomcat、Jetty等Servlet容器,提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置。



02、漏洞介绍


Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。Actuator 配置不当导致应用系统监控信息泄露对应用系统及其用户的危害是巨大的。

03、修复加固建议


①   对上述请求接口做安全限制例如需要禁用/env接口,可以设置如下Endpoints.env.enabled= false如果只想打开一两个接口,那就先禁用全部接口,然后启用需要的接口:endpoint.enabled =falseendpoints.metrics.enabled= true另外也可以引入spring-boot-starter-security依赖<dependency>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-starter-security</artifactId></dependency> ②   开启Security功能,配置访问权限验证在application.properties中指定actuator的端口以及开启security功能,配置访问权限验证,这时再访问actuator功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。management.port=8099management.security.enabled=truesecurity.user.name=adminsecurity.user.password=admin

Docker Remote API未授权访问漏洞总结


01、应用简介


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

02、漏洞简介


Docker RemoteAPI是一个取代远程命令界面(RCLI)的REST API。此API默认对外开放且不需验证,通过Docker Client或者Http直接请求就可以访问这个API,通过这个接口,我们可以新建container,删除已有container,将目录挂载到新的container上,实现docker穿透,获取服务器shell。



03、漏洞复现

攻击机:192.168.210.38目标机:192.168.210.37服务版本:Docker 18.06.3 目标机在/etc/system/system/docker.service的Docker配置文件中,将自己开放在了外网8888端口上。


在攻击机上可以直接访问目标机的8888端口可以进入到目标机的docker中。例如输入:http://192.168.210.37:8888/v1.25/image/json可以查看目标机上的docker中的所有image信息。




针对Docker Remote API未授权的利用方式有两种:

一、向目标机写入SSH公钥,然后通过SSH服务直接获取服务器权限。

二、向目标机写入反弹shell,通过计划任务启动也可以获得服务器权限。



04、修复加固建议


①  在不必要的情况下,不要启动Docker的Remote API服务,如果必须要启用的话,可以采用设置ACL,即只允许信任的来源IP连接,或设置TLS认证的方法。


 ②  在Docker API的服务前设置一个代理服务器,如Nginx,可以有效防止未授权访问。 

③  检查Docker配置文件,是否把端口监听在了公网上(/etc/systemd/system/docker.service)

Rsync未授权访问漏洞总结


01、应用简介



Rsync(remote synchronize)是Linux/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用Rsync算法(差分编码)以减少数据的传输。Rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此之外,Rsync可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。


02、漏洞简介


Rsync是Linux下一款数据备份工具,支持通过Rsync协议、ssh协议进行远程文件传输。常被用在内网进行源代码的分发及同步更新,因此使用人群多为开发人员。其中Rsync协议默认监听873端口,而一般开发人员安全意识薄弱的情况下,如果目标开启了Rsync服务,并且没有配置ACL或访问密码,我们将可以远程读写目标服务器文件,设置获得服务器控制权限。


03、修复加固建议


① 正确配置认证用户名或密码


Auth users = rsync_backup #认证的用户名,如果没有这行则表示是匿名,此用户与系统无关。

Secrets file = /rsync.pwd #密码和用户名对比表 


②   遵循最小权限原则,只配置只读权限 

③   使用host allow/deny来控制接入源IP 

④   非必要的情况下应该仅限制配置路径下可访问


NFS未授权访问漏洞总结


01、应用简介



NFS全称是网络文件系统(Network File System),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。NFS允许在多个用户之间共享公共文件系统,并提供数据集中的优势,来最小化所需的存储空间。


02、漏洞简介


NFS是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源,而不正确的配置使用NFS,则会造成严重的安全问题,体现在以下4个方面:

1. 缺少对NFS的访问控制机制

2. NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制

3. 较早的NFS可以使未授权用户获得有效的文件句柄

4. 在RPC远程调用中,一个SUID的程序就具有超级用户的权限


03、漏洞复现


攻击机:192.168.210.38(Kali)目标机:192.168.210.37(Centos7)服务版本:NFS 1.3.0 目标机开启NFS服务


在攻击机上扫描目标机NFS服务,rpcinfo-p 192.168.210.37,发现目标机存在NFS未授权访问漏洞。

 


查看目标机挂载的内容:showmount -e 192.168.210.37


在攻击机上生成SSH公钥,并将公钥复制到受害者服务器上,这样攻击者就可以在攻击机上直接远程通过SSH服务连接到目标机上,获取控制权限。


与目标机的NFS建立连接,同时将本机的SSH公钥传送到目标机中。


在攻击机上直接使用root用户远程登录目标机,即可获得目标机控制权限。


04、修复加固建议

①   对共享文件进行访问控制对/etc/exports文件中,所设置的共享的文件或目录做好访问控制,如:/homeexport 172.19.104.6
(rw,async,no_root_squash)即仅允许172.19.104.6访问/home用户。

VNC未授权访问漏洞总结



01、应用简介



VNC是虚拟网络控制台的缩写(Virtual Network Console),它是一款优秀的远程控制工具软件,由著名的AT&T的欧洲实验室开发。VNC是在基于UNIX和Linux操作系统的免费的开源软件,远程控制能力强大,高效实用。VNC基本上是由vncviewer和vncserver组成,VNC的运行原理和一些Windows下的远程控制软件很相像。

VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好,看上去和Windows下的软件界面也很类似。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端的应用程序(vncserver)的计算机相互连接。另外,服务器端 (vncserver)还内建了Java Web接口,这样用户通过服务器端对其他计算机的操作就能通过Netscape显示出来了,这样的操作过程和显示方式比较直观方便。

02、漏洞简介


VNC的默认端口号为5900和5901。VNC未授权访问漏洞如果被利用可能造成恶意用户直接控制target主机。

03、漏洞复现

攻击机:192.168.210.38(Kali)目标机:192.168.210.104(Windows Server 2003)服务版本:VNC 3.8 攻击机无需输入用户名与密码即可连接到目标机开放的VNC server中。


检测方法:

使用 Metasploit 进行批量检测。

① 在 kali 下运行msfconsolemsfconsole。

② 调用 VNC 未授权检测模块useauxiliary/scanner/
vnc/vnx_none_auth。
③ 显示有哪些选项show options。
④ 设置地址段set rhosts ip 或 段。
⑤ 设置线程set threads 50。
⑥ 开始扫描run。

04、修复加固建议



①   配置VNC客户端登录口令认证并配置符合密码强度要求的密码
②   以最小普通权限身份运行操作系统

MongoDB未授权访问漏洞总结


01、应用简介


FTP是文件传输协议(File Transfer Protocol)的缩写,FTP是用于在网络上进行文件传输的一套标准协议,FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而,用户并不需要真正登陆到自己想要存取的计算机上面而成为完全用户,可用FTP程序访问远程资源,实现用户往返传输文件、目录管理以及访问电子邮件等等,即使双方计算机可能配有不同的操作系统和文件存储方式。

02、漏洞简介


如果目标开启了匿名FTP服务,匿名FTP允许任意用户通过FTP来访问开放的目录和文件来进行信息收集进行下一步的攻击。使用匿名访问ftp服务可以尝试在windows的目录中直接访问:ftp://xxx.xxx.xxx.xxx,也可以在Cmd中使用账户:anonymous和空密码认证。


03、漏洞复现


攻击机:192.168.20.35(Windows10)目标机:192.168.210.37(Centos7)服务版本:vsftpd 3.0.2 目标机首先开启FTP服务


攻击机使用Xftp以匿名方式直接连接目标机的21端口。


即可直接登陆成功,并上传或下载敏感文件。


04、修复加固建议      

      


 ①   禁用匿名登陆在/etc/vsftpd.conf文件中,将允许匿名用户登录这一行设置为no,即anonymous_enable=NO



②  对用户做访问控制在/etc/vsftpd.conf文件中,通过以下三条配置文件来控制用户Chroot_list_enable=NOChroot_list_file=/etc/vsftpd/chroot_listChroot_local_user=NO分别是设置是否启用chroot_list_file配置项指定的用户列表文件;指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录;指定用户列表文件中的用户是否允许切换到上级目录。

CouchDB未授权访问漏洞总结


01、应用简介



CouchDB是一个开源的面向文档的数据库管理系统,可以通过RESTful JavaScript Object Notation(JSON)API访问。术语“Couch”是“ClusterOf Unreliable Commodity Hardware”的首字母缩写,他反映了CouchDB的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。

02、漏洞简介


CouchDB默认会在5984端口开放Restful的API接口,用于数据库管理。如果攻击者可以远程访问到目标机暴露在公网上的CouchDB服务,那么攻击者可以通过未授权访问漏洞查看或下载数据库中的敏感文件,甚至通过上传shell获得数据库管理权限进一步获得服务器控制权限。

03、漏洞复现


攻击机:192.168.20.35(Windows10)目标机:192.168.210.37(Centos7)服务版本:CouchDB 1.6.0 目标机通过vulhub开启couchDB镜像


攻击机直接访问目标机的默认5984端口即可查看CouchDB配置信息,并操作数据库。 



04、修复加固建议



①   绑定指定IP在/etc/couchdb/local.inf文件中找到“bind_address = 0.0.0.0 ”,将0.0.0.0修改为127.0.0.1,即监听在本地端口上。保存重启后,只有本机才能访问CouochDB。

②   设置访问密码在/etc/couchdb/local.inf文件中找到“【admin】”字段,添加用户名和密码。

LDAP未授权访问漏洞总结


01、应用简介



LDAP是轻型目录访问协议(Lightweight Directory Access Protocol)的缩写,LDAP是一个开放的、中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。LDAP基于X.500标准的子集,常用在单点登陆上,用户可以在多个服务中使用同一个密码,通常用在公司内部网站的登陆中。

02、漏洞简介


LDAP模块默认是允许用户匿名访问存储在信息目录(也就是LDAP目录)中的信息的协议,可以获取所有用户及组织结构等信息,同时远程攻击者可以利用这个漏洞不使用口令访问受此漏洞影响的运行login_ldap的系统。通过LDAP的未授权访问漏洞可以获得很多敏感的数据。

03、修复加固建议

①   设置密码设置一个至少8位以上,包含大小写字母、数字和特殊字符的强密码。导入基础objectClass# 加载ppolicy配置ldapadd-Y EXTERNAL -H ldapi:/// -f
new_ppolicy.ldif 配置module模块、加载accesslog、auditlog、pploicy、memberofcat<< EOF | ldapadd -Y EXTERNAL -H ldapi:///dn:cn=module,cn=configobjectClass:olcModuleListcn: moduleolcModulePath:/usr/lib64/openldapolcModulepath:    /usr/lib/openldapolcModuleload:accesslog.laolcModuleload:auditlog.laolcModuleload:memberof.laolcModuleLoad:ppolicy.laEOF 配置DBcat<< EOF | ldapadd -Y EXTERNAL -H ldapi:///dn:olcOverlay=ppolicy,olcDatabase={2}hdb,cn=configchangetype:addobjectClass:olcConfigobjectClass:olcOverlayConfigobjectClass:olcPPolicyConfigolcOverlay:ppolicyolcPPolicyDefault:cn=pwdDefault,ou=Policies,dc=laoshiren,dc=comolcPPolicyHashCleartext:TRUEolcPPolicyUseLockout:TRUEEOF 创建组cat<< EOF | ldapadd -x -D cn=
manager,dc=laoshiren,dc=com -Wdn:ou=Policies,dc=laoshiren,dc=comobjectClass:topobjectClass:organizationalUnitou:PoliciesEOF 创建默认密码策略cat<< EOF | ldapadd -x -D cn=manager,
dc=laoshiren,dc=com -Wdn:cn=pwdDefault,ou=Policies,dc=laoshiren,dc=comcn:pwdDefaultobjectClass:topobjectClass:deviceobjectClass:pwdPolicyobjectClass:pwdPolicyCheckerpwdAttribute:userPasswordpwdInHistory:8pwdMinLength:8pwdMaxFailure:3pwdFailureCountInterval:1800pwdCheckQuality:2pwdMustChange:TRUEpwdGraceAuthNLimit:0pwdMaxAge:3600pwdExpireWarning:1209600pwdLockoutDuration:900pwdLockout:TRUEEOF


总结


未授权访问漏洞涉及所有存在授权问题的应用或系统上,而未授权访问漏洞所造成的后果取决于该应用和系统能发挥的最大作用,作为防御者,我们想要杜绝未授权访问的问题,那么就必须要比开发人员更懂各种系统和应用的授权过程,以及授权之后可以做的操作。 将视角扩大,任何安全问题也同理,当我们对一个应用或系统,了解越深入,那么就有可能发现更加隐秘的安全漏洞,能造成的影响也就越大。回到未授权本身,产生未授权漏洞的根本原因其实是访问控制没有做好。 在内网中存在大量的未授权访问漏洞,因为大部分人的神经一进到内网就松懈了,虽然攻击者无法从外部直接攻击,但是一旦进入内网,将对系统造成无法挽回的损失。所以能设置账户密码尽量设置密码,能开启访问控制尽量开启访问控制,或者使用二次认证、零信任网关等形式。





服务热线:400-811-3777
Copyright ©2005-2020 杭州美创科技有限公司. All Rights Reserved. 浙ICP备12021012号-1 网站地图