Python代码审计实战案例总结之SQL和ORM注入(3)
咱们继续看来 Django JSON SQL注入,关于这个漏洞已经有前人分析过了。这个分析有些难度需要咱们了解Django和PostgreSQL,如果感觉吃力不妨先去学习一番。了解在PostgreSQL之中关于JSON数据的查询主要使用ArrayField、JSONField、HStoreField,通过Django如何进行查询PostgreSQL,Json.objects.filter()和QuerySet.filter()实现,准备工作就绪。 查询使用方法如下: # 查询方法 # 查询data数据下名称为test的内容为'user'的整个字段 Json.objects.filter(data__test='user') or Json.objects.filter(**{"data__test":'user'}) 通过补丁判断实现方法使用了 self.key_name ,QuerySet.filter()的调用和self.key_name传递有关。 紧接着发现类 KeyTransformFactory 调用了 KeyTransform 传入了 self.key_name ,后续是字符串拼接。这里不多详细阐述感兴趣的朋友跟下流程。 class KeyTextTransform(KeyTransform): operator = '->>' ... # 字符串拼接 (%s %s %s)" % (lhs, self.operator, lookup) 结合注入的知识进行实施测试,结果如下。 # 使用注入 # 拼接补全SQL语法 Json.objects.filter(**{"""data__breed'='"a"') OR 11=1 OR('d""":'x',}) 总结 本次总结Python的SQL注入和ORM注入的挖掘方法和相关案例,SQL注入方面没有找到对应的实际案例,咱们编写简单的案例作为参考。ORM注入为两个案例,分别是关于模块和框架。综合作为实战挖掘的参考,个人之力,恐有疏漏,盼斧正。 (编辑:ASP站长网) |