php代码审计熊海cms1.0

Posted Zad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php代码审计熊海cms1.0相关的知识,希望对你有一定的参考价值。

0x01 环境安装

1. 熊海cms1.0 (http://js.down.chinaz.com/201503/xhcms_v1.0.rar)

2.seay代码审计工具

3. phpstudy (php版本不能太高)

0x02 审计之旅

直接拉到工具中,可以看到可能存在大概34个漏洞,我们一一来看吧。

 

 

 

0x03 文件包含

文件是index.php,一眼就看出来了这**不是文件包含嘛,什么都没过滤

 

 

 include函数,关闭了错误提示。这里参数r没有任何过滤直接放到include()函数中了,但是这里include是在files目录下的,我们验证一下,在files目录下建立一个shell.php ,内容为<?php phpinfo();?>

 

 接着,那就开始访问呗,成功触发。嘻嘻嘻!!

 0x04 sql注入

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

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

得到数据库 seacms,

 

 

 

 

  这边直接给出payload, 在manage表中含有账号和密码

 

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

  

 

 

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

 

 拼接一下,得到密码:123456  账号admin

0x05 sql注入2

 我们跟进去 newlink.php文件,这也太舒服了吧,有太多POST传参的变量,都没进行过滤。但是一般都是看到的select 查询语句,今天第一次遇到 insert values 插入语句 ,好好学习。

 

 

 

这边我们就控制的是name变量,其余变量不能为空也没有过滤,我们就随便输入了,

payload:

123\' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0) or \'

 

 

 

 

这是完整闭合的sql语句,这是为什么我们需要在语句的末尾还要加上一个 \'  

 0x06 sql注入3

这次我们看到reply文件,直接跟着id,  都没过滤任何东西,那就直接搞了。。不不不,渗透测试,,我们可以控制的是id参数,

 

 

 

以上是关于php代码审计熊海cms1.0的主要内容,如果未能解决你的问题,请参考以下文章

代码审计系列:熊海CMS V1.0 (iseaCMS_1.0)

代码审计 熊海cms V1.0

熊海cms v1.0 完全代码审计

熊海CMS 1.0代码审计漏洞集合

熊海cms-文件包含漏洞

代码审计学php还是java