A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/django/django/commit/053cc9534d174dc89daba36724ed2dcb36755b90 below:

[2.2.x] Fixed CVE-2021-33203 -- Fixed potential path-traversal via ad… · django/django@053cc95 · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+29

-2

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+29

-2

lines changed Original file line number Diff line number Diff line change

@@ -15,6 +15,7 @@

15 15

from django.http import Http404

16 16

from django.template.engine import Engine

17 17

from django.urls import get_mod_func, get_resolver, get_urlconf

18 +

from django.utils._os import safe_join

18 19

from django.utils.decorators import method_decorator

19 20

from django.utils.inspect import (

20 21

func_accepts_kwargs, func_accepts_var_args, get_func_full_args,

@@ -328,7 +329,7 @@ def get_context_data(self, **kwargs):

328 329

else:

329 330

# This doesn't account for template loaders (#24128).

330 331

for index, directory in enumerate(default_engine.dirs):

331 -

template_file = Path(directory) / template

332 +

template_file = Path(safe_join(directory, template))

332 333

if template_file.exists():

333 334

with template_file.open() as f:

334 335

template_contents = f.read()

Original file line number Diff line number Diff line change

@@ -6,4 +6,14 @@ Django 2.2.24 release notes

6 6 7 7

Django 2.2.24 fixes two security issues in 2.2.23.

8 8 9 -

...

9 +

CVE-2021-33203: Potential directory traversal via ``admindocs``

10 +

===============================================================

11 + 12 +

Staff members could use the :mod:`~django.contrib.admindocs`

13 +

``TemplateDetailView`` view to check the existence of arbitrary files.

14 +

Additionally, if (and only if) the default admindocs templates have been

15 +

customized by the developers to also expose the file contents, then not only

16 +

the existence but also the file contents would have been exposed.

17 + 18 +

As a mitigation, path sanitation is now applied and only files within the

19 +

template root directories can be loaded.

Original file line number Diff line number Diff line change

@@ -134,6 +134,22 @@ def test_no_sites_framework(self):

134 134

self.assertContains(response, 'View documentation')

135 135 136 136 137 +

@unittest.skipUnless(utils.docutils_is_available, 'no docutils installed.')

138 +

class AdminDocViewDefaultEngineOnly(TestDataMixin, AdminDocsTestCase):

139 + 140 +

def setUp(self):

141 +

self.client.force_login(self.superuser)

142 + 143 +

def test_template_detail_path_traversal(self):

144 +

cases = ['/etc/passwd', '../passwd']

145 +

for fpath in cases:

146 +

with self.subTest(path=fpath):

147 +

response = self.client.get(

148 +

reverse('django-admindocs-templates', args=[fpath]),

149 +

)

150 +

self.assertEqual(response.status_code, 400)

151 + 152 + 137 153

@override_settings(TEMPLATES=[{

138 154

'NAME': 'ONE',

139 155

'BACKEND': 'django.template.backends.django.DjangoTemplates',

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4