Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-32830-poc — PoC code to download files with CVE-2024-32830 | Kitploit
Инструменты/GitHubGitHub/ptrstr/cve-2024-32830-poc
Payload GenerationVulnerability AnalysisCode AnalysisExploitationWeb Application Exploitation
GitHubptrstr/cve-2024-32830-poc

CVE-2024-32830-poc

PoC code to download files with CVE-2024-32830

Репозиторий
1 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2024-32830-poc

PoC-код для загрузки файлов с CVE-2024-32830

Обход getimagesize

Чтобы обойти ограничение getimagesize, мы можем создать простое изображение image/vnd.wap.wbmp для PHP.

Проверка типа файла очень проста:

root@kitploit:~
// https://github.com/php/php-src/blob/0029d2b08bbd3cb3aa293d9c8d55bf31faa9e203/ext/standard/image.c#L917
static int php_get_wbmp(php_stream *stream, struct gfxinfo **result, int check)
{
	int i, width = 0, height = 0;

	if (php_stream_rewind(stream)) {
		return 0;
	}

	/* get type */
	if (php_stream_getc(stream) != 0) {
		return 0;
	}

	/* skip header */
	do {
		i = php_stream_getc(stream);
		if (i < 0) {
			return 0;
		}
	} while (i & 0x80);

	/* get width */
	do {
		i = php_stream_getc(stream);
		if (i < 0) {
			return 0;
		}
		width = (width << 7) | (i & 0x7f);
		/* maximum valid width for wbmp (although 127 may be a more accurate one) */
		if (width > 2048) {
			return 0;
		}
	} while (i & 0x80);

	/* get height */
	do {
		i = php_stream_getc(stream);
		if (i < 0) {
			return 0;
		}
		height = (height << 7) | (i & 0x7f);
		/* maximum valid height for wbmp (although 127 may be a more accurate one) */
		if (height > 2048) {
			return 0;
		}
	} while (i & 0x80);

	if (!height || !width) {
		return 0;
	}

	if (!check) {
		(*result)->width = width;
		(*result)->height = height;
	}

	return IMAGE_FILETYPE_WBMP;
}

Самый простой способ создать корректное изображение — это использовать два NUL-байта, за которыми следуют два байта < 0x80 для ширины и высоты.

Это можно сделать для любого файла, используя php://filter.

Первый уровень должен применить кодировку base64, чтобы гарантировать, что все данные являются ASCII, тем самым удовлетворяя ограничению < 0x80.

Второй фильтр должен добавить первые два NUL-байта. Это возможно, принудительно выполнив преобразование из UTF-16BE в UTF-32BE. Это заставит iconv интерпретировать каждый блок из двух байт как корректный символ UTF-16BE, а затем добавить перед ним два NUL-байта, чтобы преобразовать его в UTF-32BE. Фактический фильтр для использования: convert.iconv.utf-16be.utf-32be.

Наш окончательный payload: php://filter/convert.base64-encode/convert.iconv.utf-16be.utf-32be/resource=<file here>.

Скачать инструмент