pgjdbc 存在SQL注入漏洞( CVE-2024-1597)
pgjdbc 存在SQL注入漏洞( CVE-2024-1597)
原创 信安路漫漫 信安路漫漫 2024-02-22 07:00
漏洞简介pgjdbc 是PostgreSQL的JDBC驱动程序。pgjdbc 受影响版本中配置为使用简单查询模式(preferQueryMode=SIMPLE,非默认情况)时存在SQL注入。当SQL占位符前存在负号(-)时,用户传入的参数值中负号会被错误解释为行注释,攻击者可利用该特征造成SQL注入,破坏原有语句结构。影响版本org.postgresql:postgresql@[9.3-1103-jdbc41, 42.7.1]利用条件需要满足下面的三个条件:1)pgjdbc在漏洞版本内2)配置为使用简单查询模式(preferQueryMode=SIMPLE,非默认情况)3)SQL占位符前存在负号(-)如下的例子:SELECT -?, ?如果用户输入第一个参数为-1,第二个参数为带有换行符的任意内容如”\nWHERE false”,则可以执行额外的sql语句。具体的修复方式可以看下面的链接:https://github.com/pgjdbc/pgjdbc/commit/93b0fcb2711d9c1e3a2a03134369738a02a58b40利用分析个人认为这个漏洞在实际中很难会遇到,首先这种写法一般都不会出现在代码中,并且还不是默认情况下的配置。因此可以根据企业的实际情况进行修复。修复方案官方已发布补丁:https://github.com/pgjdbc/pgjdbc/commit/93b0fcb2711d9c1e3a2a03134369738a02a58b40
由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流,谢谢大家了~~