最近遇到一个lmxcms的网站,发现存在历史漏洞,于是下载源码进行审计
首先,将源码放入到Seay代码审计工具中进行代码审计,并查看整体框架结果
查看index.php文件,可以看到调用了几个文件,这里为了节省篇幅,就不继续分析了,根据自己的个人习惯进行了解
前端SQL注入漏洞:
发现前端页面存在留言框,会不会有XSS漏洞
进入到根目录下c/index/BookAction.class.php,查看index方法,发现传入到checkData方法里面
继续跟进,XSS被过滤死了,但是有提交,那是否存在SQL注入漏洞
分析filter_strs,直接跟进该函数,看到遍历的全部参数值(键值对的值),然后对传入的参数进行解码及去除html标签及替换%为空
分析P函数,直接跟进,发现调用filter_sql方法
filter_sql函数是过滤sql注入的,对一些非法函数进行过滤,基本都过滤完了,但是过滤函数只过滤了值,没有过滤间,也就是$k,继续分析
直接回到最开始的代码,直接进入add函数
跟进查看内容
继续跟进addModel
继续跟进,发现并没有对sql语句过滤
直接提交留言,抓包
当在mail后面添加)让sql语句错误时
发现留言姓名处会回显,sql语句进行构造,成功查看用户
前台sql注入:
看到有个搜索,尝试进行sql语句测试,发现存在
找到相应代码文件,发现必须存在keywords值,否则程序退出,下面还有几个参数可以增加,我们跟踪程序,将param数组给了$arr数组,然后带入了searchCoutn函数,跟进再跟进
跟进该方法,发现调用新的方法,继续跟进
跟进
继续跟进
存在一定的函数过滤
进行sql语句测试,可以看到成功报错,sqlmap进行测试,这里忘记贴图
后台任意文件删除:
选择一个图片,抓包分析,进行url解密
文件位置c/admin/FileAction.class.php,这里使用post传参接收fid的参数,判断是否为空,不为空进入下一步,我们跟进delete函数
没有什么过滤,只是要求fid接收前面存在#####即可
构造删除文件,成功删除
后台任意文件写入:
找到后台的模板管理的地方,像这种地方一般都存在漏洞,比如目录遍历,文件写入,文件删除,这里 分析文件写入
查看源码,可以看到并没有任何的目录限制
直接把路径改到根目录的index.php,发现打印处该文件的内容
看到seay代码审计工具审计处该处存在漏洞
看到调用了file_put_contents危险函数
创建木马文件写入
访问成功
任意文件上传:
这里就没在分析代码,可以自己添加上传类型的后缀,添加成功后自行进行上传
请登录/注册后在FreeBuf发布内容哦