TGViewer
Standoff Bug Bounty Tips Standoff Bug Bounty Tips @standoff_bb_tips · 1.66K subscribers
Post #215 1.75K
Подводные камни Python: как ошибки разработчиков превращаются в уязвимости 🐍

Разработчики часто предполагают, что встроенные фичи автоматически выполняют очистку или обеспечивают безопасное поведение.

На практике многие из этих фич содержат нестандартные модели поведения, которыми можно злоупотреблять, превращая логические проблемы в уязвимости:

⚫️ os.path.join (built-in): если один из аргументов начинается с /, Python игнорирует предыдущие сегменты пути

import os
payload = "/etc/passwd"

file = os.path.join("/user/uploads/", payload)

with open(file, "r") as f:
print(f.read())
# выведет содержимое “/etc/passwd”


⚫️ pathlib.joinpath (built-in): если какой-либо сегмент является абсолютным путём, он отбрасывает предыдущие части и продолжает работу с абсолютным путём

from pathlib import Path
payload = "/etc/passwd"

file = Path("/var/www/html").joinpath("files", payload)

with open(file, "r") as f:
print(f.read())
# выведет содержимое “/etc/passwd”


⚫️ pickle.loads (built-in): pickle.loads() может выполнять произвольные объекты Python

import pickle, base64
payload = "gASVHQAAAAAAAACMBXBvc2l4lIwGc3lzdGVtlJOUjAJpZJSFlFKULg=="

# Выполнить код при десериализации (системная команда ”id”)
file = pickle.loads(base64.b64decode(payload))


⚫️ urllib.parse.urljoin (built-in): формирует итоговый URL, объединяя базовый URL с одним или несколькими компонентами URL

from urllib.parse import urljoin

payload = "http://evil.com/"
print(urljoin("http://example.com/", payload))
# вывод: http://evil.com/


⚫️ Функция load библиотеки PyYAML (внешняя либа): yaml.load() может выполнять произвольный Python-код, если ты контролируешь YAML

import yaml
user_data = "!!python/object/apply:print ['pwned']"

result = yaml.load(user_data, Loader=yaml.Loader)


⚫️ Python3 class pollution (built-in): некорректное присвоение атрибутов может позволить изменять структуру классов или объектов

Пост вдохновлен докладом Алекса Брумена "Python Pitfalls: Turning Developer Mistakes into Vulnerabilities" (текстовая версия) 💡
  • ❤ 11
  • ❤‍🔥 2
  • 👍 2
  • 👎 2
  • 🔥 1
More from @standoff_bb_tips
  1. Oct 11, 2026Что скрывается в имени HTML-тега? Может быть, JavaScript? Gareth Heyes из PortSwigger пока…
  2. Oct 4, 2026Хочешь прокачать своего багбаунти-агента ❓ Обрати внимание на Model-Context-Protocol (MCP)…
  3. Oct 3, 2026Эксплуатация багов, связанных с ошибками в бизнес-логике 🤔 Логические баги — это когда ко…
  4. Sep 7, 2026Post #255
  5. Sep 5, 2026Мы накидали 6 разных вариантов атак для простого GET-запроса на редактирование профиля ⤵️…
  6. Aug 15, 2026Stored XSS через картинку: проверь Content-Type override 😵‍💫 Иногда загрузка изображений…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →