文章作者:rebeyond
注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台。I.S.T.O版权所有,转载需注明作者。
受影响版本:貌似都受影响。
漏洞文件:user/City_ajax.aspx
漏洞分析:这个页面里的getCityList函数,通过用户传入的CityId参数来进行省份和城市查询。请求,都没有进行权限的验证,游客权限就可以调用其中的所有方法,很危险的写法,于是有了下面的漏洞。
getCityList函数继续调用Foosun.CMS.News类的GetProvinceOrCityList函数:
最终调用数据库操作类中的函数,参数在各个环节都没有进行过滤,直接带进数据库查询,从而导致SQL注射漏洞。
通过如下方式可以触发漏洞:
http://xxx.com:8009/user/City_ajax.aspx?CityId=3%27;create%20table%20rebeyond(int%20a);--
通过MSSQL企业管理器可以看到rebeyond表已经成功添加,如下图:
实例演示:
1.通过google搜索powered by dotnetcms,试了下前5个,100%存在,没再继续试了(-__-)b。
V1.0版本
2.通过官网成功案列页面随便找一个站http://www.ccfa.com.cn。
V2.0版本
3.但是官网却神奇的不存在该漏洞,参数被过滤掉了,在官网下载的源代码中没发现过滤的过程,可能官网用了第三方防注入( ╯□╰ )。