Спустя больше года с момента прошлого выпуска увидел свет (http://www.cacti.net/release_notes_0_8_7h.php) релиз системы мониторинга Cacti 0.8.7h (http://www.cacti.net), отображающей изменения отслеживаемых параметров в виде наглядных графиков. В новой версии исправлено 63 ошибки, среди которых несколько уязвимостей: возможность подстановки SQL-кода через страницу входа в систему (login page) и ошибки, приводящие к размещению JavaScript-кода в контексте страниц Cacti (межсайтовый скриптинг).<center><a href="http://www.cacti.net/get_image.php?image_id=43&x=1095&y=972&... src="https://www.opennet.ru/opennews/pics_base/31860_1317098975.jp... style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>
Из изменений также можно отметить:
- Несколько оптимизаций производительности в poller, направленных на увеличение скорости опроса параметров сервисов.
- Изменен размер шрифта по умолчанию;
- Переработан мето...URL: http://www.cacti.net/release_notes_0_8_7h.php
Новость: https://www.opennet.ru/opennews/art.shtml?num=31860
> возможность подстановки SQL-кодапокажите уже кто-нибудь им PDO.
prepared statements можно использовать и без PDO, если вы об этом. А вообще их спасёт только переписывание всей системы с нуля. Потому что тот код что там сейчас - это полнейшая джигурда
обоснуйте и покажите нормальный код.
по моему мнению там отличный код.
Да забейте, автор стертого всего лишь ярый адепт культа "вы тут все пи...сы, а я Д`Артаньян". Говорят это лечится только путем 5-ведерной клизмы с патефонными иголками.
1000 извинений, но sql инъекция с login page - это отличный код?
пруф http://svn.cacti.net/viewvc/cacti/tags/0.8.7h/auth_login.php...
http://svn.cacti.net/viewvc/cacti/tags/0.8.7h/auth_login.php...
- $user = db_fetch_row("SELECT * FROM user_auth WHERE username = '" . $username . "' AND realm = 2");
+ $user = db_fetch_row("SELECT * FROM user_auth WHERE username = " . $cnn_id->qstr($username) . " AND realm = 2");странно, но перед этим делается
$username = sanitize_search_string($username);
которая в свою очередь/* sanitize_search_string - cleans up a search string submitted by the user to be passed
to the database. NOTE: some of the code for this function came from the phpBB project.
@arg $string - the original raw search string
@returns - the sanitized search string */
function sanitize_search_string($string) {
static $drop_char_match = array('^', '$', '<', '>', '`', '\'', '"', '|', ',', '?', '~', '+', '[', ']', '{', '}', '#', ';', '!', '=', '*');
static $drop_char_replace = array(' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');/* Replace line endings by a space */
$string = preg_replace('/[\n\r]/is', ' ', $string);/* HTML entities like */
$string = preg_replace('/\b&[a-z]+;\b/', ' ', $string);/* Remove URL's */
$string = preg_replace('/\b[a-z0-9]+:\/\/[a-z0-9\.\-]+(\/[a-z0-9\?\.%_\-\+=&\/]+)?/', ' ', $string);/* Filter out strange characters like ^, $, &, change "it's" to "its" */
for($i = 0; $i < count($drop_char_match); $i++) {
$string = str_replace($drop_char_match[$i], $drop_char_replace[$i], $string);
}return $string;
}
теперь пусть кто-нибудь сможет объяснить как сделать инъекцию