前言
由于公司公众号要发文章,作为一个菜鸡确实不知道写什么,所以就从源码网随便下载了一个cms的源码来练习一下代码审计,下载的时候看日期以为是刚出炉的cms,后来发现这个版本出来有几个月了,不过网上没有他的漏洞分析文章,所以决定就它了。
0x01 cms目录大概结构
首先看一下这个cms的目录结构
0x02 后台修改支付方式存储型xss
1.漏洞位置:第24行
先看一下哪里来的?在文件第45行,使用函数定义了全局变量注册,第二个参数为,意思是添加前缀(这个参数并不会造成变量覆盖)
跟到函数,移除反斜杠
跟到函数,移除字符串左右空格
所以就是POST过去的
2.漏洞复现
0x03 后台广告管理模块参数注入
这个cms在全局公共文件有防止sql注入的函数,所以肯定要找没用这个函数过滤的地方,看了好久,前台都被过滤掉了(其实前台商品名可以造成二次注入,但是我觉得管理员不会那么脑残在商品名后加个单引号,所以这里就不说了),找到的都是后台sql注入,很多,这里就看一处就行,先看一下函数
1.漏洞分析
漏洞文件在第101行
跟到函数
所以直接拼接进sql语句,而通过get传递过来,用户可控,最终造成sql注入
0x04 后台敏感信息泄露
漏洞文件:
0x05 url任意跳转漏洞
看到这个函数的时候我感觉有问题,但是不确定,动手测试了之后才发现真的可以跳转,虽然这里不知道能拿来干嘛(自己跳着玩)
漏洞文件:第218行
当!=进入else逻辑,当为false时,如果中不存在字符串,那么就是,如果存在就为的值,那么只要referer中存在就可以实现url任意跳转了
最后发现在函数和函数调用
漏洞触发点很多,任意挑选一处
第104行
漏洞复现:
由于在域名后面有个,比如,那么他的就是,因此这种跳转方式就行不通了,但是可以用截断啊,把后面的当成参数就可以了,使用火狐自带插件修改referer
然后在批量转移商品时触发,可以看到已经跳转到百度了
0x06 session会话固定漏洞
之前写过一篇自己都不想看第二次的session会话固定的文章,再加上最近碰到的session会话固定确实多,所以很喜欢盯着session的问题哈哈哈,测试的时候直接黑盒测试,然后再看得源码
1.漏洞分析
漏洞位置:第12行管理员登录
登录之后没有重新生成sessionid,造成session会话固定漏洞
2.漏洞复现:
攻击者的sessionid
攻击者定制sessionid让受害者登陆
受害者登录之后,攻击者刷新自己的页面,已经进入后台
0x07 任意文件删除+代码执行
代码执行这个漏洞我拿到cms就先看了一下安装文件,因为1.1版本有一个前台漏洞就是通过文件安装完之后没有,再加上代码执行就,不过这个版本漏洞已经补掉了,但是后来发现竟然还有任意文件删除,不得不说安全真的是巧合多了就不巧合.
1.漏洞分析:
漏洞文件:第250行
没做任何限制,只要是文件就删除,最后在后台删除模板的时候触发,通过get传递,是用户可控的
跟到函数
漏洞复现:
提交数据包,即可成功删除文件
这里说一下,一开始测试过程中删除模板一直提示我跨站操作,我就很纳闷,我登陆了后台为啥还提示跨站,后来发现验证token的时候是通过接受post或者get过来的token,且必须与session存的token一样,也不能为空,但是如果删除商品信息就能正常删除,所以抓包看了一下,能正常删除商品是因为数据包中自动通过get传过去了token值,所以能通过函数验证,那么只要先在删除商品处抓包先得到token值然后再删除模板就可以任意删除文件了,那么我们就可以删除安装文件重装系统,然而在安装文件里边,有了不得的事情(摊手)
在文件第25行,没经过任何过滤,直接将post接收过来的数据写入数据库配置文件,造成任意代码执行漏洞,开不开心?惊不惊喜?
漏洞复现:
安装系统时在数据库前缀那里提交
总结
这个cms审计起来并不难,可以说是非常新手向了,但是由于第一次审计cms,所以还是花了不少时间,感觉这个cms应该还有其他问题,但是快到我发文章了,时间耗不起,就先这样吧,果然一个简单一点的cms审计起来是有助于提升信心的QAQ
佛系二维码
千千万万的公众号中
能被你识别都是缘分
硬土壳信息安全
领取专属 10元无门槛券
私享最新 技术干货