代码审计之RadpidCMS

公众号:泷羽Sec---风宵

对OSCP感兴趣的可以找我交流喔~

目录

公众号:泷羽Sec---风宵

RapidCMS

影响版本

下载地址

登录存在未授权访问

利用Burp Suite进行抓包操作,定位登录接口所在代码文件。

查看runlogin.php文件

读取sql.json文件

文件上传1

文件上传2

sql注入

获取数据库

SQL注入修复方式

登录逻辑绕过

第一步:

第二步:

第三步:


RapidCMS

                      一款基于 Blazor 框架的内容管理系统(CMS)构建工具 

影响版本

RapdiCMS(1.3.1版本)

下载地址

GitHub - OpenRapid/rapidcms: 快速简单好用的CMS系统

登录存在未授权访问

利用Burp Suite进行抓包操作,定位登录接口所在代码文件。

采用POST方法发送请求,具体在runlogin.php文件中,涉及到两个参数的传递。

查看runlogin.php文件

读取sql.json文件

   可以直接通过GET读取sql.json文件

访问:http://xxx.com/install/sql-config/sql.json

文件上传1

   登录后台管理系统成功后,针对“基本设置”模块中的图标上传功能,进行了代码审查,相关文件是admin/uploadicon.php

在观察到未实施充分校验和限制的情况下,我们可以使用Burp Suite对数据包进行拦截并修改,进而通过更改上传文件的后缀名来实现限制的绕过。

文件上传2

新增文章admin/upload. php

和上面一样,使用burp抓包即可

sql注入

新增分类cate-add-run. php

<?php
include("../check.php");
header ( "Content-type:text/html;charset=utf-8" );
$json_string = file_get_contents('../../install/sql-config/sql.json');
$dataxxx = json_decode($json_string, true);
$link=mysqli_connect($dataxxx['server'],$dataxxx['dbusername'],$dataxxx['dbpassword']);
if($link)
{
    $select=mysqli_select_db($link,$dataxxx['dbname']);
  if($select)
  {
      $str='INSERT INTO `rapidcmscategory`(`id`, `name`, `pic`, `num`) VALUES ("'.$_POST["id"].'","'.rawurlencode($_POST["name"]).'","'.$_POST["pic"].'",'.$_POST["num"].')';
   $result=mysqli_query($link,$str);
      sendalert("增加成功!");
  }
}
?>

在处理POST请求时,提取了四个核心参数:(id、name、pic、num),并形成了SQL插入命令,将这些信息存入rapidcmscategory表中。

然而,系统中并未对这些由POST请求传递的参数执行必要的验证和过滤,这样的情况等同于直接向rapidcmscategory表插入数据。

获取数据库

整个CMS中存在很多的SQL注入漏洞

SQL注入修复方式

$stmt = $link->prepare('INSERT INTO `rapidcmscategory`(`id`, `name`, `pic`, `num`) VALUES (?, ?, ?, ?)');
$stmt->bind_param('sssi', $_POST["id"], rawurlencode($_POST["name"]), $_POST["pic"], $_POST["num"]);
$stmt->execute();

整个CMS中存在很多的SQL注入漏洞,比如。

登录逻辑绕过

一旦password11匹配正确,即可成功登录,此时可以利用SQL注入来绕过密码验证,将password通过md5、sha1、md5三种方式加密后的结果应用。

第一步:

对password=admin进行md5、sha1、md5加密,得到加密后的字符串:83C72CE1CAB133635EF751487234A947。

第二步:

通过SQL注入方法,向数据库中注入加密后的密码

select password from `rapidcmsadmin` Where username = 'admin' union select '83C72CE1CAB133635EF751487234A947' -- a;

第三步:

利用burp进行抓包,将password字段设置为admin,并在password)))后进行匹配,使之与数据库中的密码相对应。


好啦,本文的内容就到这了,希望你能喜欢~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值