2024年软件系统安全赛攻防赛web题CachedVisitor题解

💡 原文中文,约2600字,阅读约需6分钟。
📝

内容提要

本文探讨了通过Redis进行SSRF测试的过程,利用Docker环境执行Lua脚本读取特定文件(/readflag)以获取flag。分析了两种方法:一种是将main.lua写入Redis,另一种是写入visit.script,最终实现提权和读取flag。

🎯

关键要点

  • 本文探讨通过Redis进行SSRF测试的过程。
  • 利用Docker环境执行Lua脚本读取特定文件(/readflag)以获取flag。
  • 分析了两种方法:将main.lua写入Redis和写入visit.script。
  • 通过Redis提升权限并执行命令以读取flag。
  • 思路一:用Redis保存键值的方式写文件,执行main.lua读取flag。
  • 思路二:写入visit.script中,避免冗余字符导致无法执行。
  • 使用Lua脚本在Nginx中执行外部命令/readflag并输出结果。
  • 请求记录在Redis中,通过临时web服务器实现flag的获取。

延伸问答

如何通过Redis进行SSRF测试?

通过Redis进行SSRF测试可以利用Docker环境执行Lua脚本,读取特定文件以获取flag。

在Redis中如何提升权限以读取flag?

可以通过将Lua脚本写入Redis并执行命令来提升权限,从而读取flag。

使用Lua脚本执行外部命令的具体步骤是什么?

使用Lua脚本可以通过ngx.say(io.popen('/readflag'):read('*a'))来执行外部命令并输出结果。

为什么将main.lua写入Redis会导致无法执行?

因为写入时可能会出现冗余字符,导致main.lua无法正确执行。

visit.script与main.lua的区别是什么?

visit.script避免了冗余字符的问题,能够正确执行,而main.lua可能因为多余内容而无法执行。

如何在Redis中保存和执行Lua脚本?

可以通过设置Redis的配置,保存Lua脚本到指定文件,并在访问时执行该脚本。

➡️

继续阅读