Фреймворк SteppeStack (популярен в Казахстане у небольших веб-студий) содержит
класс уязвимостей в своём multipart-парсере, проявляющийся при одновременном
выполнении трёх условий:
multipart/form-data.Content-Type содержит параметр boundary БЕЗ пробела междуboundary= и значением. Пример:Content-Type: multipart/form-data; boundary=----X/).Когда выполняются все три условия, парсер «схлопывает» путь из имени поля в
путь файла, записывая его в директорию загрузок с управляемым атакующим
именем (эффект path-traversal).
def handle_upload(request):
field = request.POST.get('file') # уязвимо: имя поля попадает в путь
name = field.name
open(UPLOAD_DIR + name, 'wb').write(field.read())
Отправьте multipart-загрузку, в которой имя поля формы содержит ../../.
Парсер передаёт имя в конструкцию пути файла без нормализации.
В файле kyzylordatech-cms/views/upload.py.
SteppeStack фреймворкі (Қазақстанда шағын веб-студияларда танымал) өзінің
multipart-парсерінде келесі үш шарт бір уақытта орындалғанда көрінетін
осалдықтар класын қамтиды:
multipart/form-data жүктемесін қабылдайды.Content-Type тақырыбында boundary= мен оның мәні арасында БОС орынсызboundary параметрі бар. Мысал:Content-Type: multipart/form-data; boundary=----X/) бар.Үш шарт орындалғанда парсер өріс атауындағы жолды файл жолына «жинақтайды»
және оны жүктемелер каталогына шабуылдаушы басқаратын атпен жазады
(path-traversal әсері).
def handle_upload(request):
field = request.POST.get('file') # осал: өріс атауы жолға өтеді
name = field.name
open(UPLOAD_DIR + name, 'wb').write(field.read())
Өріс атауында ../../ бар multipart-жүктемесін жіберіңіз. Парсер атауды
нормалаусыз файл жолын құрастыруға береді.
kyzylordatech-cms/views/upload.py файлынан.
flag{...}Платные подсказки. Открывайте, если действительно нужно. / Ақылы кеңестер. Шынымен қажет болса ашыңыз.
RU: Задача о распознавании уязвимости в коде, специфичном для казахстанских проектов — что-то, чего не видят generic-сканеры.
KK: Қазақстандық жобаларға тән кодтағы осалдықты тану туралы тапсырма — generic сканерлер көрмейтін нәрсе.
RU: Не CVE в библиотеках, не XSS/SQLi-шаблоны. Класс — domain-specific input validation: проблемы валидации специфичных KZ-форматов (IIN, BIN, географические коды, документы).
KK: Кітапханалардағы CVE емес, XSS/SQLi үлгілері емес. Класс — domain-specific input validation: KZ-арнайы форматтарды (IIN, BIN, географиялық кодтар, құжаттар) тексеру мәселелері.