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的主要内容,如果未能解决你的问题,请参考以下文章