Нужен аудит скрипта

Serg_pnz
На сайте с 05.03.2008
Offline
140
860

Требуется аудит скрипта: проверка на всевозможные инъекции и т.д. и т.п.

Подскажите, пожалуйста, кого, желательно с репутацией (античат не предлагать).

Спасибо.

Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
Bor-ka
На сайте с 16.11.2004
Offline
256
#1

Serg_pnz,

объем скрипта? выполняемые задачи?

Serg_pnz
На сайте с 05.03.2008
Offline
140
#2

Чат на ajax. Объем? - ссылка в подписи.

P
На сайте с 10.03.2008
Offline
168
#3
Serg_pnz:
Объем? - ссылка в подписи.

Думаю, примерное количество строчек все хотят узнать :) ВордПресс снаружи выглядит не так громоздко как внутри.

UPD: сори, не увидел "скачать" на сайте :)

Serg_pnz
На сайте с 05.03.2008
Offline
140
#4
pistol:
Думаю, примерное количество строчек все хотят узнать :) ВордПресс снаружи выглядит не так громоздко как внутри.

UPD: сори, не увидел "скачать" на сайте :)

Ой, букаф там, в скрипте, не так много. И всё блочно...

Я готов даже консультировать специалиста по логике, ну что бы ускорить процесс.

Givandos
На сайте с 25.06.2007
Offline
33
#5
Serg_pnz:
Я готов даже консультировать специалиста по логике, ну что бы ускорить процесс.

А вот этого, ИМХО, делать не нужно. И тогда станет понятно насколько легко догадаться о логике Вашего движка, ну и как следствие взломать его.

Serg_pnz
На сайте с 05.03.2008
Offline
140
#6
Givandos:
А вот этого, ИМХО, делать не нужно. И тогда станет понятно насколько легко догадаться о логике Вашего движка, ну и как следствие взломать его.

Уговорили - консультаций не будет)) Или будут... но пока нет предложений. Нету на серче спецов?

Bor-ka
На сайте с 16.11.2004
Offline
256
#7

Открыл первый попавшейся файл, взглянул на первый запрос:

$db->sql_query("UPDATE  ".$prefix."_chat_users SET user_visit='".time()."', color = '#".$_GET['ncolor']."'  WHERE user_name = '".$_SESSION['usersm']['1']."' ");

Полез посмотреть на метод sql_query

function sql_query($query = "", $transaction = false) {
unset($this->query_result);
if ($query != "") {
$tdba = explode(" ", microtime());
$tdba = $tdba[1] + $tdba[0];
$this->query_result = @mysql_query($query, $this->db_connect_id);

Красота, без фильтрации в базу. Дальше, я так понимаю, объяснять про SQL-инъекции не нужно?

UPD: Хотя сдается мне, что где-то все-таки этот GET фильтруется, но так неявно, что не поймешь - ошибка или нет. Во всяком случае потенциальная ошибка на лицо.

UPD2: По вышеприведенному коду идет разборка и запись в $_GET - моветон.

А вот здесь переопределение id не нашел :)

require_once ("../mysql.php");
$db->sql_query("UPDATE ".$prefix."_chat_users SET timeout=timeout".$zap." WHERE user_name = '".$_GET['id']."' ");
$result = $db->sql_query("SELECT timeout FROM ".$prefix."_chat_users WHERE user_name = '".$_GET['id']."'");
Serg_pnz
На сайте с 05.03.2008
Offline
140
#8
Bor-ka:
Открыл первый попавшейся файл, взглянул на первый запрос:
$db->sql_query("UPDATE  ".$prefix."_chat_users SET user_visit='".time()."', color = '#".$_GET['ncolor']."'  WHERE user_name = '".$_SESSION['usersm']['1']."' ");

Это закрыто тремя строками выше, просто не стал новую переменную заводить

	$_GET['ncolor'] = preg_replace("#[^a-f0-9]#i", "", $_GET['ncolor']);

str_pad($_GET['ncolor'], 6 , "0");
Bor-ka:
Полез посмотреть на метод sql_query
function sql_query($query = "", $transaction = false) {

unset($this->query_result);
if ($query != "") {
$tdba = explode(" ", microtime());
$tdba = $tdba[1] + $tdba[0];
$this->query_result = @mysql_query($query, $this->db_connect_id);

Красота, без фильтрации в базу. Дальше, я так понимаю, объяснять про SQL-инъекции не нужно?

UPD: Хотя сдается мне, что где-то все-таки этот GET фильтруется, но так неявно, что не поймешь - ошибка или нет. Во всяком случае потенциальная ошибка на лицо.

UPD2: По вышеприведенному коду идет разборка и запись в $_GET - моветон.

Ни фига не понял))

Bor-ka:
А вот здесь переопределение id не нашел :)
require_once ("../mysql.php");

$db->sql_query("UPDATE ".$prefix."_chat_users SET timeout=timeout".$zap." WHERE user_name = '".$_GET['id']."' ");
$result = $db->sql_query("SELECT timeout FROM ".$prefix."_chat_users WHERE user_name = '".$_GET['id']."'");

Это админская часть, к файлу доступ прикрыт в самом верху, поэтому такая небрежность в кодинге.

if ($_SESSION['jcrc_admin']!=1) {echo "Убить мохнатую тварь!";die();}

Serg_pnz добавил 17.10.2008 в 10:18

Bor-ka, спасибо большое!

Bor-ka
На сайте с 16.11.2004
Offline
256
#9

Т.е. админу можно оставлять SQL-инъекцию? Небрежности в коде не должно быть ни при каких оправданиях. Вообще кода немного, но вот стиль написания конечно ...

Serg_pnz
На сайте с 05.03.2008
Offline
140
#10
Т.е. админу можно оставлять SQL-инъекцию? Небрежности в коде не должно быть ни при каких оправданиях.

Понял, исправлюсь

Вообще кода немного, но вот стиль написания конечно

😕

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий