【PHP代码审计】熊海CMS v1.0

0x01 前言

无意间发现一个代码审计的以前文章,是审计一篇cms的文章,然后就想着还没有认真的审计过一次呢,就跟着这篇文章的路子走一次吧,来开启我代码审计的篇章。

0x02 审计之旅

首先在站长之家下载了熊海CMS v1.0的源代码,本地搭建好环境之后,将项目拖到Seay代码审计系统中,来一波自动审计~

【PHP代码审计】熊海CMS v1.0_第1张图片

咳咳,经然后34个漏洞发现。。。好吧,毕竟小站源码,也很正常。
然后就开始一个一个查看了,看看是否有误报和漏报。

0x03 文件包含

【PHP代码审计】熊海CMS v1.0_第2张图片

首先,index.php中的代码如下,明显就是一个文件包含漏洞嘛,这里参数r没有任何过滤直接放到include()函数中了,但是这里include是在files目录下的,所以需要../进行目录改变。我们可以在根目录下新建一个shell.php,写入,然后尝试包含一下

【PHP代码审计】熊海CMS v1.0_第3张图片

果然成功了!嘻嘻

0x04 越权漏洞

看了一下其他的漏洞,发现除了admin没看,其他的都是误报,但是现在我们还没有办法得到管理员的账号和密码,因此admin的先不看,看一下inc目录下的文件。inc目录下的都是配置文件,很重要,要每一个文件都仔细查看。

在看到checklogin.php的时候,发现了一个越权漏洞。

【PHP代码审计】熊海CMS v1.0_第4张图片

这里是从cookie中判断时候是管理员的机制,如果cookie中的user为空,就为跳转到?r=login页面,这个页面是后台登陆页面

【PHP代码审计】熊海CMS v1.0_第5张图片

那么如果我们抓包后将user的值修改成不为空会怎么样呢?
这里用wzlist.php试一下

http://127.0.0.1/admin/?r=wzlist
【PHP代码审计】熊海CMS v1.0_第6张图片

然后就发现进入了后台。。。

【PHP代码审计】熊海CMS v1.0_第7张图片

并且只要保证每次cookie中user参数都有值就可以访问后台的所有内容。

之后再看其他的配置文件就看不出来什么了....那么记下来就是看一下admin目录下的文件吧。

0x05 SQL注入1

首先肯定要看登陆页面了,如果能够爆出用户名和密码就完美了。
查看login.php,入眼的就是一段令人激动的代码

【PHP代码审计】熊海CMS v1.0_第8张图片

这里user和password是直接获取POST传来的参数,并没有进行任何过滤,很容易想到万能密码的使用,但是继续看代码我们发现,这里是先进行user的查询,如果user在数据库中存在,那么就进行password的比较,是将我们输入的password进行md5哈希一下,然后与数据库中的进行比对,所以说万能密码在这里是没有用的,但是我们却可以用报错注入得到用户名和密码。

user=123' or extractvalue(1,concat((select concat(0x7e,password,0x7e) from manage)))#&password=
或者
user=123' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0)#&password=

但是这里有一点比较坑的是,这里注出来的password最多只有27位,但是数据库存的是password的MD5值,有32位,所以说得到的md5是不对的,需要进行两次注入才能得到完整的密码,以extractvalue()函数为例,payload需要这样写

user=123' or extractvalue(1,concat((select concat(0x7e,password) from manage)))#&password=
user=123' or extractvalue(1,concat((select concat(password,0x7e) from manage)))#&password=

两次自己拼接一下就得到了完整的password的md5值了,拿去解密一下就好了~

【PHP代码审计】熊海CMS v1.0_第9张图片
【PHP代码审计】熊海CMS v1.0_第10张图片

0x06 SQL注入2

进入后台之后,可以看一下之前自动审计报的后台的SQL注入漏洞,拿newlink.php为例

【PHP代码审计】熊海CMS v1.0_第11张图片

这里的变量都是直接POST传进来并且没做任何过滤,那么就存在了SQL注入问题。
利用之前的报错注入验证一下

【PHP代码审计】熊海CMS v1.0_第12张图片

得到结果

验证成功。

0x07 CSRF漏洞

这里的内容管理中有一个删除文章的功能,点击后抓包得到url

http://localhost/code_audit/xhcms/admin/?r=wzlist&delete=16

退出管理员账号,根据之前的越权漏洞分析,这里应该会转跳到login的界面,试一下,果然如此。

【PHP代码审计】熊海CMS v1.0_第13张图片

然后重新登陆管理员后点击该url,真的删除了该文章

【PHP代码审计】熊海CMS v1.0_第14张图片

验证成功。

你可能感兴趣的:(【PHP代码审计】熊海CMS v1.0)