【网络安全】xhCMS代码审计思路

前言

最近想提升一下自己的代审能力,虽然之前复现分析了挺多漏洞的,TP,Laravel,Typcho,yii,但一直感觉对代码审计能力提升用处不太大,很多时候链子和利用点都非常简单,可是如何发现的这确实一个难题,所以就拿熊海CMS为例,如何自己挖它里面的漏洞,看看自己能否发现和利用,最后在和网上存在的漏洞进行对比,再看哪里没有发现,为什么没有发现,希望这也能给才入门代码审计的师傅们一点思路吧

【资料】

审计流程

先看一下入口文件index.php,这个文件一般会定义很多变量,包含很多路径,文件进来,我们只需要注意它和用户的交互的点,入口文件一般会先判断你是否存在安装锁或者配置文件,如果不存在就跳转到安装目录,开始安装整个网站。然后打开文件监控,首先判断是否存在重装漏洞,然后再分析目录结构,大概知道每个文件夹中放的文件功能是什么就行了,比如熊海CMS:
【网络安全】xhCMS代码审计思路_第1张图片
然后安装成功后我习惯先浏览下网站的主要功能,大致了解这些之后就可以静下心来看代码了

重装漏洞

重装漏洞可以以下几种类型:

  1. 自动删除这个安装文件

    通过生成一个 lock 文件来判断程序是否安装过

  2. 根本无验证

    安装完成后不会自动删除文件,又不会生成 lock 判断是否安装过

  3. 安装file

    直接用GET提交step绕过,直接进入下一步

  4. 变量覆盖导致重装

    可以GET,POST,COOKIE任意提交一个变量名 i n s L o c k f i l e , 给 其 赋 空 值 , 覆 盖 掉 insLockfile,给其赋空值,覆盖掉 insLockfileinsLockfile,从而让file_exists为false就不会退出

  5. 判断lock后,无exit

    判断是否存在lock文件,如果存在lock文件,就会header到index.php,但是header后并没有exit,所以
    并不会退出,类似的还有javascript弹个框

  6. 解析漏洞

    在安装完成后会将install.php
    重命名为index.php.bak,但是由于Apache的解析漏洞:如果无法识别到最后一个后缀的话,就会向上解析,那么就又变成了php了,然后结合安装时的变量覆盖又成重装了。

  7. 满足一些条件不会退出的

危害

  1. 因为在安装时我们可控一些变量,因为没有exit,导致配置信息没有过滤的传入安装后,从而写入文件getshell
  2. 重装之后修改管理员信息,进入后台getshell

install/index.php:
【网络安全】xhCMS代码审计思路_第2张图片
并没有发现存在重装漏洞

SQL注入漏洞1

首先就要去查看数据库使用的编码方式,如果是GBK则可能造成宽字节注入,从而直接绕过addslashes这类函数,然后去有对数据库操作的地方查看传入数据是否可控,我们可以注意下,在注入前是否对参数进行了解码,如果进行了解码,可以二次编码注入,在熊海CMS安装的时候就发现它有写入管理员信息的操作,而且是在安装前的操作,并没有对参数进行任何过滤,

insatll\index.php:
【网络安全】xhCMS代码审计思路_第3张图片
在这里插入图片描述
而且它是有报错输出的,所以可以报错注入:
【网络安全】xhCMS代码审计思路_第4张图片
然后就是安装之后了,

文件包含漏洞

首先就从网站入口跟进,发现是一个单入口模式:
【网络安全】xhCMS代码审计思路_第5张图片
这里就存在文件包含漏洞,只是说暂时还没有发现危险文件能够利用,看道这里那就联想到能不能把后面的php后缀截断,然后去上传一个图片马来包含呢,或者是否存在一个文件写入的点来利用呢,可是我试了一下第一个思路,好像并没有成功,但是存在疑惑,因为在PHP<5.3.4的时候,我们是可以利用%00来截断后缀的,但是当我本地将版本调低到5.3.29,按理说是可以截断后缀从而包含任意文件,但是却出了问题,我先在根目录写了一个phpinfo,

【网络安全】xhCMS代码审计思路_第6张图片
这样是可以的,但是:
【网络安全】xhCMS代码审计思路_第7张图片
这样缺不行,然后我又使用长度截断也未成功

然后就跟进files文件夹下的页面文件,首先就是files/index.php,里面很多都是echo数据库里面的信息,但是我们并不可控,因为里面引进了template里面的文件,所以也先看一下,发现里面有没有能利用的,查看fiels/list.php,看起来存在SQL注入漏洞,但是存在addslashes函数,无法注入,然后继续审计,直到看到fiels/download.php的时候,发现了一个XSS漏洞,然后fiels/list.php同理

反射型XSS漏洞1

XSS也分为反射型、存储型以及DOM型,当我们想挖掘反射型XSS漏洞时,需要重点关注程序的输出,比如echo/print等,当程序直接将未经过滤的用户输入输出除了,就会造成反射型XSS。

而存储型XSS是由于网站将用户输入存储进数据库中,当用户再次浏览某页面时,从数据库中获取之前的输入并输出,如果在输入->数据库这块过程中没有进行实体化编码以及输出->页面的过程中没进行实体化编码,则很容易产生存储型XSS。所以对于这类XSS,重点关注insert,查找insert表内数据的输出位。

fiels/download.php:
【网络安全】xhCMS代码审计思路_第8张图片
直接echo可控变量,所以存在XSS漏洞,
【网络安全】xhCMS代码审计思路_第9张图片
然后继续往后看,点击下载会跳转到files/content.php,跟进,发现存在SQL注入漏洞,

SQL注入漏洞2

files/content.php:

这里的原因就是没有使用单引号闭合用户可控变量,导致绕过addslashes函数,
【网络安全】xhCMS代码审计思路_第10张图片
【网络安全】xhCMS代码审计思路_第11张图片

继续跟进,发现调用files/submit.php提交评论,
在这里插入图片描述
跟进files/submit.php,
【网络安全】xhCMS代码审计思路_第12张图片
都可控,且未经过addslashes函数,
在这里插入图片描述
很明显的一个SQL注入漏洞,但是需要注意的是后面还有一个插入语句:

【网络安全】xhCMS代码审计思路_第13张图片
开始我也卡了一下,因为你只闭合前面,后面是会报错的:
【网络安全】xhCMS代码审计思路_第14张图片
闭合后面:
【网络安全】xhCMS代码审计思路_第15张图片
还是不行,但是突然想到只需要用报错注入,让前面报错了,后面自然就不用管了:

name=1&mail=1') or updatexml(1,concat(0x7e,(select(database())),0x7e),1)#&content=哈哈

【网络安全】xhCMS代码审计思路_第16张图片
往后走还有SQL注入,
在这里插入图片描述
后面相同利用的地方就不赘叙了,因为发现这里有可控数据插入数据库的操作,那是否存在存储型XSS呢?

存储型XSS1

分析已经在上面的流程分析了

在files/content.php,我们能提交昵称、邮箱、网址、评论内容,但是在files/submit.php中,
在这里插入图片描述
他过滤了$content的HTML代码,所以不能利用,而且在显示评论和留言的地方有昵称,所以我们只能利用昵称处进行存储XSS

还有一个files/contact.php,存在和files/content.php一样的留言框,大概看了下代码,也是存在存储型XSS
【网络安全】xhCMS代码审计思路_第17张图片
最后还有一个files/software.php文件,在下载的时候会跳转到该界面,

又存在明显的SQL注入漏洞,
【网络安全】xhCMS代码审计思路_第18张图片
这里就不再重复讲述了

审计到这里差不多前端的代码就审完了,漏洞就SQL注入漏洞和XSS漏洞,然后就是去审计后台的代码了

首先对于后台代码,我会先查看是否存在越权漏洞,是否存在CSRF漏洞,然后登录后台,寻找PHP文件写入,寻找命令执行,

首先查看login.php,
【网络安全】xhCMS代码审计思路_第19张图片
又是重复的SQL注入,后面就不重复这些漏洞了,在审计代码的时候,并未发现admin/login.php存在什么越权漏洞,但是后面查看存在漏洞的时候,他却存在这个漏洞,因为在成功登录上admin账号后,他是存在一个user的cookie的,但是退出之后又没有了,所以他就是通过cookie中的user值来判断登录是否成功的,所以只需要伪造一个cookie即可:

成功越权登录
【网络安全】xhCMS代码审计思路_第20张图片
然后就是./inc/checklogin.php中存在越权漏洞了,:

<?php
$user=$_COOKIE['user'];
if ($user==""){
     
header("Location: ?r=login");
exit;   
}
?>

所以只要调用了该文件都存在越权漏洞

后面的话其实就是前面提到过的漏洞了,这里就不再赘叙了,

总结

其实这个CMS很简单,我主要想讲的并不是这个CMS如何审计,而是一个思路,希望能帮到刚入门代审的师傅们,其实很多漏洞,利用点都很简单,难的就是去发现它的思路

参考
https://threezh1.com/2019/05/18/PHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E4%B9%8B%E9%87%8D%E8%A3%85%E6%BC%8F%E6%B4%9E/

关注我,持续更新······

私我获取【网络安全学习资料·攻略

你可能感兴趣的:(程序员,安全,网络,web安全,安全,网络安全,计算机网络)