一、未授权访问
整个宝塔 WAF 核心防护功能的代码写的确实有点粗糙,代码组织方式不像一个成熟软件该有的架构,小 Bug 一眼望不到头,今天分享的是一个未授权访问漏洞,普通用户可以无视宝塔的随机登录地址,无视宝塔的登录密码,直接操作后台的数据,实现人人都是管理员的效果。
start = function ()
... 此处身略若干行
if ngx.var.remote_addr == "127.0.0.1" and ngx.ctx.Server_name == "127.0.0.251" and ngx.var.host == "127.0.0.251" then
if ngx.var.uri == "/get_btwaf_drop_ip" then
Public.return_message(200, uv0.get_btwaf_drop_ip())
elseif ngx.var.uri == "/remove_btwaf_drop_ip" then
Public.return_message(200, uv0.remove_btwaf_drop_ip())
elseif ngx.var.uri == "/clean_btwaf_drop_ip" then
Public.return_message(200, uv0.clean_btwaf_drop_ip())
elseif ngx.var.uri == "/updateinfo" then
Public.return_message(200, uv0.updateInfo())
elseif ngx.var.uri == "/get_site_status" then
Public.return_message(200, uv0.get_site_status())
elseif ngx.var.uri == "/get_global_status" then
Public.return_message(200, uv0.get_global_status())
end
if ngx.var.uri == "/clean_btwaf_logs" then
Public.return_message(200, uv0.clean_btwaf_logs())
end
if ngx.var.uri == "/clear_speed_hit" then
Public.return_message(200, uv0.clear_speed_hit())
end
if ngx.var.uri == "/clear_replace_hit" then
Public.return_message(200, uv0.clear_replace_hit())
end
if ngx.var.uri == "/reset_customize_cc" then
Public.return_message(200,