0×00:前言
挖掘米拓cms时发现系统存在一处过滤函数多次调用引起的sql注入,遂记录下来与师父们一起学习下,有啥不足之处,菜鸟勿喷O(∩_∩)O
影响版本:metinfo7.5
0×01:漏洞调试
由于代码繁杂,直接发送payload进行调试。
Payload:
/admin/?n=language&c=language_general&a=doModifyParameter&editor=1&data[system]=1%27%20or&site=0&appno=0&editor=cn&data[system]=2%27%20where%20id=1%20and%20sleep(3)%23
在app/system/language/admin/language_general.class.php的doModifyParameter下断点,发送payload进行调试
往下走,可以看到我们的payload中的单引号反斜杠被转义
再往下走会有一个sql查询语句,查询语句的结果影响到漏洞语句是否执行,所以需要构造payload为数据库中存在的语句
再往下走,经过stripslashes函数之后,转义字符被去除,value已经是正常的payload,但是代码下一步使用preg_replace("/'/","''", $value)将单引号替换为两个单引号,所以payload中的反斜杠有了用武之地,他将其中一个单引号转义
这样的sql语句可以成功被执行
0×02:黑盒测试
0×03:总结
代码审计中,可以重点关注下stripslashes,preg_replace这一类的函数,如果在将数据插入数据库之前进行了不合理的使用,就可能造成安全隐患。
0x04:关注
热烈欢迎关注本安全公众号
关于公众号投稿
接受原创文章投稿
内容免杀 渗透实例 代码审计 溯源 经验技巧
要求 不能水文 从没发表 敏感内容打码
一经采纳根据文章质量给予作者 50-200的稿费。
投稿联系
原文始发于微信公众号(moonsec):代码审计 metinfo
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论