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

前言

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

资料

审计流程

先看一下入口文件index.php,这个文件一般会定义很多变量,包含很多路径,文件进来,我们只需要注意它和用户的交互的点,入口文件一般会先判断你是否存在安装锁或者配置文件,如果不存在就跳转到安装目录,开始安装整个网站。然后打开文件监控,首先判断是否存在重装漏洞,然后再分析目录结构,大概知道每个文件夹中放的文件功能是什么就行了,比如熊海CMS:


在这里插入图片描述

然后安装成功后我习惯先浏览下网站的主要功能,大致了解这些之后就可以静下心来看代码了

重装漏洞

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

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

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

  2. 根本无验证

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

  3. 安装file

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

  4. 变量覆盖导致重装

    可以GET,POST,COOKIE任意提交一个变量名insLockfile,给其赋空值,覆盖掉insLockfile,从而让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:


在这里插入图片描述

并没有发现存在重装漏洞

SQL注入漏洞1

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

insatll\index.php:


在这里插入图片描述

在这里插入图片描述

而且它是有报错输出的,所以可以报错注入:


在这里插入图片描述

然后就是安装之后了,

文件包含漏洞

首先就从网站入口跟进,发现是一个单入口模式:


在这里插入图片描述

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

在这里插入图片描述

这样是可以的,但是:


在这里插入图片描述

这样缺不行,然后我又使用长度截断也未成功

然后就跟进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:


在这里插入图片描述

直接echo可控变量,所以存在XSS漏洞,


在这里插入图片描述

然后继续往后看,点击下载会跳转到files/content.php,跟进,发现存在SQL注入漏洞,

SQL注入漏洞2

files/content.php:

这里的原因就是没有使用单引号闭合用户可控变量,导致绕过addslashes函数,


在这里插入图片描述

在这里插入图片描述

继续跟进,发现调用files/submit.php提交评论,


在这里插入图片描述

跟进files/submit.php,


在这里插入图片描述

都可控,且未经过addslashes函数,
在这里插入图片描述

很明显的一个SQL注入漏洞,但是需要注意的是后面还有一个插入语句:

在这里插入图片描述

开始我也卡了一下,因为你只闭合前面,后面是会报错的:


在这里插入图片描述

闭合后面:


在这里插入图片描述

还是不行,但是突然想到只需要用报错注入,让前面报错了,后面自然就不用管了:
name=1&mail=1') or updatexml(1,concat(0x7e,(select(database())),0x7e),1)#&content=哈哈
在这里插入图片描述

往后走还有SQL注入,


在这里插入图片描述

后面相同利用的地方就不赘叙了,因为发现这里有可控数据插入数据库的操作,那是否存在存储型XSS呢?

存储型XSS1

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

在files/content.php,我们能提交昵称、邮箱、网址、评论内容,但是在files/submit.php中,


在这里插入图片描述

他过滤了$content的HTML代码,所以不能利用,而且在显示评论和留言的地方有昵称,所以我们只能利用昵称处进行存储XSS

还有一个files/contact.php,存在和files/content.php一样的留言框,大概看了下代码,也是存在存储型XSS


在这里插入图片描述

最后还有一个files/software.php文件,在下载的时候会跳转到该界面,

又存在明显的SQL注入漏洞,


在这里插入图片描述

这里就不再重复讲述了

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

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

首先查看login.php,


在这里插入图片描述

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

成功越权登录


在这里插入图片描述

然后就是./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/

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,046评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,877评论 0 2
  • 今天上午陪老妈看病,下午健身房跑步,晚上想想今天还没有断舍离,马上做,衣架和旁边的的布衣架,一看乱乱,又想想自己是...
    影子3623253阅读 2,912评论 1 8