#知识点:
1、服务攻防-数据库类型安全 2、influxdb-未授权访问-jwt验证 3、H2database-未授权访问-配置不当 4、CouchDB-权限绕过配合RCE-漏洞 5、ElasticSearch-文件写入&RCE-漏洞 这些数据库在特定的环境上用到,特用的程序固定的。使用面不广,但是有一定的应用价值。会根据应用功能选择数据库。
#章节内容:
常见服务应用的安全测试: 1、配置不当-未授权访问 2、安全机制-特定安全漏洞 3、安全机制-弱口令爆破攻击
Influxdb
InfluxDB 是一种时序数据库,时序数据库通常被用在监控场景,比如运维和 IOT(物联网)领域。这类数据库旨在存储时序数据并实时处理它们。时序数据库通常都是采用LSM Tree 的变种,顺序写磁盘来增强数据的写入能力。
比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中写入一条数据。接着,我们写一个查询语句,查询过去 30 秒 CPU 的平均使用情况,然后让这个查询语句也每隔 10 秒钟执行一次。最终,我们配置一条报警规则,如果查询语句的执行结果>xxx,就立刻触发报警。
上述就是一个指标监控的场景,在 IOT 领域中,也有大量的指标需要我们监控。比如, 机械设备的轴承震动频率,农田的湿度温度等等。
Influxdb-未授权访问-Jwt验证不当
默认端口:8086 8088 8083 influxdb是一款著名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行SQL语句。空加密秘钥串。
- 8086端口HTTP API的X-Influxdb-Version标志头
访问:192.168.233.128:8086/debug/vars
需要访问特定地址或者执行SQL语句,看看有没有漏洞
请求地址:192.168.233.128:8086/query
POST提交去执行SQL语句:db=sample&q=show+users
这个提交就需要登录才可以进行数据库执行。
通过 https://jwt.io/生成Cookie,绕过身份验证,构造所需的 Token:
username需要为已存在的用户,exp是时间戳,代表该 Token 的过期时间,所以需要生成一个未来的时间戳,
其中1728797762转换为时间是:2024-10-13 13:36:02 将secret的值置空,得到编码后的 Token:
抓取/query页面的数据包,并将请求方式修改为 POST,添加请求头:
添加 POST 请求键值对:
db=sample&q=show+users
并在请求头里面加入:
否则请求的时候是会404的
发送数据包,得到查询结果。
成功利用进入数据库
CouchDB
couchDB权限绕过配合RCE-漏洞
默认端口:5984 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)专门用来存储文档的数据库
fofa语法:
"CouchDB"&&port="5984"
(1)访问首页
(2) 抓包访问
修改请求包
发送如下数据包 修改host部分即可
返回403错误,只有管理员才能设置role角色
(3)发送包含两个roles的数据包,即可绕过限制:
状态码201 创建成功
成功创建管理员,账户密码均为vulhub:
(4) 进行登录
登录成功