Тест против SSTI - PullRequest
       4

Тест против SSTI

0 голосов
/ 18 июня 2020

Я разрабатываю средство визуализации, в котором пользователь может использовать заполнитель %...%. Значение этого заполнителя выбирается в соответствии с контекстом ex. %Contract_Name% => 'Contract N°200'.

Для этого используется шаблон django. Чтобы проверить это, я написал следующие тесты:

def test_render_ssti_1(self):
    content = " %{% globals %}% "
    renderer = Renderer()
    with self.assertRaises(SuspiciousOperation):
        _ = renderer.render(content)

def test_render_ssti_2(self):
    content = " %{% import os %}{{ os.popen('whoami').read() }}% "
    renderer = Renderer()
    with self.assertRaises(SuspiciousOperation):
        _ = renderer.render(content)

def test_render_ssti_3(self):
    content = " % [1 + 1] % "
    renderer = Renderer()
    with self.assertRaises(SuspiciousOperation):
        _ = renderer.render(content)

def test_render_ssti_4(self):
    content = " %{{ 7*'7' }}% "
    renderer = Renderer()
    with self.assertRaises(SuspiciousOperation):
        _ = renderer.render(content)

Интересно, не пропустил ли я другие варианты использования.

...