[【通过】] ideacms代码执行

[复制链接]
chock 发表于 2017-8-21 10:00:18 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 6

本帖最后由 chock 于 2017-8-21 10:00 编辑

ideacms 官网地址: http://www.ideacms.net  需要的朋友可以自行下载 Ideacms有两个大产品,一个是建站系统,一个是商城系统,这里两个漏洞都存在代码执行,因为核心代码都大同小异,所以,这里以商城系统的代码来做分析。


其实这个漏洞也可以说是服务端模板注入攻击  SSTI

Ideacms的模板解析是通过正则匹配将一系列模板标签进行解析替换的,但在模板解析类里,有一个parseif()函数,里面调用了危险函数Execute(),导致了代码执行,那我们来看看这个函数:inc\Template_class.asp
1.png


调用parseif方法时,会传给它一个content值,这个content值就是即将输出页面的conten值,如果里面含有符合正则{if:([\s\S]+?)}([\s\S]*?){end\s+if} 的标签,那么就会进入下面的逻辑,使用Execute进行代码执行,
这个{if:([\s\S]+?)}([\s\S]*?){end\s+if} 其实就是模板标签里的条件判断标签,比如
{if:1==1}you can see me{end if}
1==1,这个条件就会进入execute函数
所以,我们的攻击payload可以这样:
{if:response.write(233)}1{end if} 或者 {if:eval(request(1))}1{end if}
那我们要怎么才可以控制content的值成功触发这个parseif呢?

在源码里直接搜索parseif,就会发现搜索页面search/index.asp有调用到这个方法:
2.png


这里就是把infostr传值给parseif,而infostr已经经过上面一系列 变量标签的替换,把搜索的key值输入到infostr里了,
也就是说,在到达parseif之前,我们可以通过搜索的key值,把我们的攻击payload注入到infostr里,再传给parseif进行if标签的解析,这样就可以产生我们要的效果,那我们到官网的demo试试看:

3.png


成功执行response.write(233)
那换成一句话就是keys={if:eval(request(1))}1{end if},然后菜刀密码为 1

以上讲的是商城系统的搜索页面,其他页面如果也有调用parseif,而且在content值进入其之前可控,就可以构造攻击。
建站系统的搜索页面虽然也调用了parseif,因为key值没有输出到content值里,所以没办法利用,但是它的留言板那里是存在的。


点评

p';o9p0= \`  发表于 2017-8-21 12:00

评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

Joseph 发表于 2017-8-21 16:11:03 | 显示全部楼层

90Sec Team|主题 |帖子 |积分 1754

这个怎么这么像mac cms的那个
 楼主 chock 发表于 2017-8-21 16:20:14 | 显示全部楼层

正式成员|主题 |帖子 |积分 6

RE: ideacms代码执行

Joseph 发表于 2017-8-21 16:11
这个怎么这么像mac cms的那个

是的,是很像,你如果看过maccms 的asp版本的话你就会发现了
Joseph 发表于 2017-8-23 00:51:45 | 显示全部楼层

90Sec Team|主题 |帖子 |积分 1754

RE: ideacms代码执行

chock 发表于 2017-8-21 16:20
是的,是很像,你如果看过maccms 的asp版本的话你就会发现了

php版就存在!只是因为webscan的原因导致没法利用

 楼主 chock 发表于 2017-8-23 09:12:46 | 显示全部楼层

正式成员|主题 |帖子 |积分 6

RE: ideacms代码执行

Joseph 发表于 2017-8-23 00:51
php版就存在!只是因为webscan的原因导致没法利用

我知道php版maccms是存在的。。。不过吐司有个人一直说有绕过的方法,请教了也不说,郁闷
Joseph 发表于 2017-8-23 13:31:22 | 显示全部楼层

90Sec Team|主题 |帖子 |积分 1754

RE: ideacms代码执行

chock 发表于 2017-8-23 09:12
我知道php版maccms是存在的。。。不过吐司有个人一直说有绕过的方法,请教了也不说,郁闷

还是在于绕过360 webscan,只要搞出绕过那个就行了
Blck 发表于 2017-12-5 17:38:15 | 显示全部楼层

正式成员|主题 |帖子 |积分 180

网上没见过有过webscan的绕过资料
快速回复 返回顶部 返回列表