禅道在9版本存在sql注入漏洞,原理是limit后的参数采用了直接拼接,但是现在这个版本的禅道对所有的sql语句都做了转义处理,并且get参数都有严格的限制,不能出现"()"等特殊符号,所以说要想要通过get去注入获得数据,会显得非常困难,另外要提到的一点就是禅道很多参数都会有base64的解码,这其实也是一个比较不错的突破口,但是这里发现了一个更明显的sql注入漏洞。漏洞代码位于module/api/model.php文件的sql函数
这里是有很多限制的,比如说只能用select语句,并且其中可能还不能出现“()”这样的符号,因此这里只能采用最古老的的select语句去读数据库信息,虽然简单但是十分有效。
漏洞
url:
http://127.0.0.1/zentao/api-getModel-api-sql-sql=select account,password from zt_user
禅道所采用的pathinfo模式,首先通过传参确定进入的control文件为api,对应的method为getModel,接着开始对参数进行赋值,其中moduleName为api,methodName=sql,最后的param为sql=select account,password from zt_user,那么调用了call_user_func_array函数后,会进入到api目录下的model文件,对应调用其中的sql函数,并通过赋值,将sql变量赋值为select account,password from zt_user,最后执行query语句,造成数据库泄露。
推荐文章++++