免责声明
由于传播、利用WK安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负
责,WK安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除
并致歉。谢谢!
0x01 漏洞介绍
FUEL CMS是一款基于Codelgniter框架的内容管理系统(CMS)。
FUELCMSv1.5.2中的一个SQL注入漏洞。该漏洞是由于在/controllers/Blocks.php中,id参数未正确验证而导致的。
0x02 影响版本
FuelCMS v1.5.2或更高版本
0x03 漏洞复现
fuel/modules/fuel/controllers/Blocks.php
第64行的import_view方法开始执行
第70行接收POST请求的id参数并进入导入方法
fuel/modules/fuel/libraries/Fuel_blocks.php
然后在第307行进入find_by_key方法
由于find_by_key方法不存在,进入当前对象的__call方法
this->db->where()方法
this->db->where()方法插入SQL语句中。但是由于CodeIgniter对where方法的安全处理,外部输入将被单引号包围,因此尚未发生注入。
直到第4450行,此时用户外部输入被存储在other_args数组中,但尚未安全处理。
进入this->db->order_by()方法,此时外部输入再次被插入SQL语句中,但未包含单引号。
this->db->get()方法执行数据库命令,导致SQL注入。
Sqlamp:
0X04 修复建议
1.使用参数化查询:使用参数化查询可以避免SQL注入攻击,因为它将用户输入作为参数传递给数据库,而不是将其直接插入到SQL语句中。
2.对用户输入进行验证和过滤:在将用户输入传递给数据库之前,应该对其进行验证和过滤。例如,可以使用正则表达式来检查输入是否符合预期的格式,或者使用白名单来限制允许的输入值。
3.避免使用动态生成SQL语句:尽量避免使用动态生成SQL语句,因为它们容易受到SQL注入攻击。如果必须使用动态生成SQL语句,请确保对用户输入进行充分的验证和过滤。
4.使用最小权限原则:为数据库账户设置最小必要的权限,以减少攻击者可以利用的攻击面。例如,只授予必要的SELECT权限,而不是INSERT、UPDATE或DELETE权限。
5.定期更新和修补软件:定期更新和修补软件可以修复已知的安全漏洞,包括SQL注入漏洞。因此,建议定期更新和修补软件,以确保系统的安全性。
参考链接
https://github.com/daylightstudio/FUEL-CMS/issues/604
https://github.com/bcvgh/fuel-cms-sqlinjection/blob/main/README.md
欢迎加我wx,一起交流交流
湘安无事团队 知识星球 一次付费,永久免费,享受两大内部群+星球双重福利(付费之后会拉入内部成员群,直接免费续上)。有需要的直接添加上面微信 118永久,私我支付,直接拉内部成员群,扫码支付,三天后拉内部成员群。
内部群共享
1.fofa高级会员账号
2.360quake高级会员
3.某在线高级会员靶场账号(附带wp)
4.专属内部漏洞库(持续更新)
5.原创漏洞挖掘报告
6.it课表众多好课(持续更新,内容涉及安全+开发等)
7.在线答疑,不定期直播技术分享【湘南第一深情、wuli、Awake等】
星球介绍:
星球针对安全新人有优秀学习资源,星球专属嘉宾进行问题解答,
性价比很高。
如果你是入门不久,想要提升漏洞挖掘能力,那该星球是个不错的选择,星球内拥有
专属漏洞报告,
各种奇淫技巧、挖洞技术、专属嘉宾在线问答等。
欢迎您的加入,星球部分内容请你查看!!
星球内容介绍
星球内部提供众多好课
安全类:web安全、内网、src挖掘、kail、逆向、游戏漏洞挖掘、免杀等
开发类:python安全开发、java、Golang、php等开发课程
专栏提供内部漏洞库
专栏内容预览
扫码查看更多内容
文章引用微信公众号"WK安全",如有侵权,请联系管理员删除!