首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响

作为铁杆Django用户,发现昨天Django进行了更新,且修复了一个SQL注入漏洞。我印象里这应该是Django第一个SQL注入漏洞,且的确是可能在业务里出现的漏洞,于是进行了分析。...Django中也支持了Postgresql的数据类型: JSONField ArrayField HStoreField 这三种数据类型因为都是非标量,且都能用JSON来表示,我下文就用JSONField...我们可以很简单地Django的model中定义JSONField: from django.db import models from django.contrib.postgres.fields import...).all() JSONField的强大让我们能灵活地关系型数据库与非关系型数据库间轻松地切换,因此我们的很多业务中都会使用到这个功能。...原因是,Django-Admin中就支持用户控制queryset的查询键名,我2017年微博中说到过这一点,不过当时没有测过JSONField,sad。 ?

2K32

CVE-2019-14234:Django JSONField SQL注入漏洞复现

0x01 漏洞概述 ---- 该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名,键名的位置注入SQL语句。...Django通常搭配postgresql数据库,而JSONField是该数据库的一种数据类型。...该漏洞的出现的原因在于DjangoJSONField类的实现,Django的model最本质的作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单的字符串拼接。...通过JSONField类获得KeyTransform类并生成sql语句的位置。...0x04 漏洞利用 ---- 通过对代码的分析,可以知道如果在你的Django中使用了JSONField并且查询的“键名”可控,就可以进行SQL注入 访问http://ip:8000/admin 输入用户名

2.3K00
您找到你想要的搜索结果了吗?
是的
没有找到

Django漏洞系列

Django是啥就不多介绍了,直接步入正题吧 Django debug page XSS 漏洞编号:CVE-2017-12794 该漏洞利用版本需小于1.11.5以下(1.11.5以上已修复漏洞)。...path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞,这里简单演示下吧!搭建环境,直接开干!...Django JSONField/HStoreField SQL注入漏洞 漏洞编号:CVE-2019-14234 开发者Django中使用了JSONField/HStoreField,且用户可控queryset...Django 3.0.3版本以下的GIS查询功能模块(GPS定位相关模块)中存在的SQL注入漏洞,其产生漏洞的原因是GIS的聚合查询功能中,用户oracle的数据库且可控tolerance变量,并且要命的是未对该变量做任何的用户输入检查...id=-1 union select null,null,null from dual --+ # 获取信息 ?

2.7K40

Django ORM:天使与魔鬼

的类型 有时候希望它简单一点 有时候希望它坚持自我 多对多和 values() ORM 终究只是 ORM 隐式转换 Mysql 低版本时间精度问题 虚假的 .query 天使的眼泪 巧用 extra JsonField...from django.db import connection # 语句提交之后,立即打印 # 同时需要记得开启 DEBUG = True print(connection.queries) 再或者...,在数据量较大时有比较好的效果,比如: queryset = queryset.extra(select={'username': "CONCAT(username, '@', domain)"}) 模糊查询时...username 内容转义 Entry.objects.extra(where=['headline=%s'], params=[username]) JsonField 的福音—— JSON_SEARCH...所以还是一个道理,把这个逻辑交给 DB select * from profiles_profile where JSON_SEARCH(extras, "one", "aaa") is not null

79340

Django 2.0 新特性 转

所有从GeoJSON导入的GEOSGeometry拥有SRID集合; 添加OSMWidget.default_zoom属性,用于自定义地图的默认缩放级别; metadata现在是可读可编辑的; 允许GDAL...现在支持fastupdate和gin_pending_list_limit参数; 新的GistIndex类允许在数据库中创建GiST索引; inspectdb现在可以内省JSONField和RangeFields...Form.errors.get_json_data()方法返回字典类型的表单错误,以适应JSON类型x响应; Generic Views通用视图 新的ContextMixin.extra_context属性允许View.as_view...,现在它将返回配置TEMPLATES中的多个DjangoTemplates引擎中的第一个,而不是弹出ImproperlyConfigured错误; 自定义模版标签现在接收强制关键字参数; Tests测试...为LiveServerTestCase添加多线程支持; Validators验证器 新的ProhibitNullCharactersValidator不允许CharField及其子类的表单输入为空;

2.6K20

FastJson中@JSONField注解使用

最近做项目中,使用了json格式服务器之间进行数据传输。但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式。...由于json中的key与bean中的属性不能匹配,因此转换过程中出现了部分属性为null的情况。经过查看官方文档,发现可以使用@JSONField进行解释,但是并没有详细的使用说明。...Setter 和 Getter方法 注:FastJson进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。...desc":"只是一个测试","name":"xianglj"} 需要转换的json:{"AGE":"20","DESC":"只是一个测试","NAME":"XIANGLJ"} json to bean:null...当作用在getter上时,bean转换为json时,其key值为name定义的值。

95920

Django ORM:天使与魔鬼 II

最近重操 CRUD 旧业,又有一些新的发现,故增加一篇 Django ORM:天使与魔鬼 Part II。... Django 中我们通常会使用 selected_related 或prefetch_related 来预取关联对象,来减少和 DB 之间的交互,但是使用上也需要有一些注意的地方。...class Baz(models.Model): """A very large table""" foo = models.ForeignKey(Foo) 我们查询 Foo 时,会尝试预取关联字段以加速后续数据读取...,但如果我们调用时不加任何参数:Foo.objects.all().prefetch_related() ,默认地 Django 会将所有关联字段都取出来,加入 Baz 表无比巨大,本来用作性能优化的...class Baz(models.Model): bar = models.ForeignKey(Bar, related_name="bazs") large_config = models.JSONField

69750
领券