########################################################################### ########################### UNSEKURITY TEAM ############################### ########################################################################### Desenvolvido por Nash Leon vulgo coracaodeleao. nashleon@yahoo.com.br Este e outros tutoriais podem ser obtidos em: http://unsekurity.virtualave.net/ http://unsekurity.cyberpunk.com.br/ OBSERVACAO: Nao nos resposabilizamos pelo mau uso das informacoes aqui contidas.Os dados e exemplos aqui descritos possuem somente propositos educacionais. Para um entendimento melhor desse tutorial se faz necessario alguns pre-requisitos como: Basico de Linux, Basico de SQL, Basico de C.Existe um tutorial sobre MySQL que pode ser obtido nas paginas citadas acima que contem um item sobre programacao em MySQL(SQL) que poderah ajudar muito no entendimento deste tutorial.Este tutorial eh voltado para NewBies, se voce eh 'elite' e jah sabe "tudo" sobre isso nao perca seu tempo lendo este tutorial. ******************** * TUTORIAL DE mSQL * ******************** ------------------------------ INDICE -------------------------------- 1. INTRODUCAO. 2. BAIXANDO, INSTALANDO E EXECUTANDO. 3. OPERACOES E ADMINISTRACAO BASICA. 4. TERMINANDO. 4.1 - Links e Referencias. 4.2 - Consideracoes Finais. ---------------------------------------------------------------------- -------------- 1. INTRODUCAO | -------------- Assim como MySQL, mSQL eh um servidor de banco de dados amplamente difundido na Internet.A mesma necessidade do uso de MySQL pode ser extendida para mSQL.Para um fucador, como eu havia dito antes, conhecer o maior numero de Servidores(Fazedores) eh imprescindivel.Existem diversos outros, mas no mundo Unix, pelo que sei, quem mais domina eh MySQL, mSQL e ORACLE.Irei descrever neste tutorial coisas basicas sobre mSQL, mas para um bom entendimento, seria uma boa voce ler o tutorial que fiz sobre MySQL, pois lah eu disponibilizo material sobre SQL.Conhecer Linux eh essencial, esse tutorial eh voltado para Linux.Um bom de C sempre eh bem vindo.Os esquemas aqui descritos podem ser uteis em algumas ocasioes de modo que, espero mesmo que venha a ser util para voce. ------------------------------------- 2. BAIXANDO, INSTALANDO E EXECUTANDO | ------------------------------------- Se voce tem aonde testar os esquemas(algum servidor remoto) e exemplos, voce nao precisa ler este item, mas caso nao tenha, voce pode testa-los em sua maquina local, para isso basta seguir os passos que descreverei. A instalacao descrita aqui eh para Linux Slackware, voce vai necessitar ter instalado os codigos-fontes(sources) da kernel, parece que requer umas libs que soh sao instaladas no sistema quando se tem isso instalado. * Para baixar o servidor : + Vah em http://www.hughes.com.au/ .Registre-se lah, ele vai te mandar um email com uma senha, em seguida voce vai no link referente ao download e baixa o mSQL para sua distribuicao Linux. * Para instalar: + Descompacte-o em um diretorio qualquer: [localhost]# tar zxpvf msql-2.0.11.tar.gz + Entre no dir msql, e leia o INSTALL. + No meu Linux a instalacao seguiu do seguinte modo: [localhost]# make targets [localhost]# cd targets/Linux-2.2.13-i486 [localhost]# ./setup [localhost]# make all [localhost]# make install Se voce nao tiver nenhum problema, serah criado um diretorio padrao em /usr/local/Hughes, nele tem o arquivo msql.conf com as respectivas configuracoes do servidor e tambem todos os executaveis necessarios para a execucao do mSQL.Voce abre esse arquivo msql.conf e altera a seguinte linha: mSQL_User = msql para mSQL_User = root ou se voce preferir(isso eh mais comum Internet a fora) crie um usuario msql.Esse usuario serah o responsavel direto pelas aplicacoes envolvendo o mSQL. Depois voce pode renomear o arquivo msql.acl.sample para msql.acl. Vale notar que isso nao vem dito no arquivo INSTALL, procurei em todos os files e nao achei, creio que o autor esqueceu desse detalhe, se voce nao renomear, o daemon acusarah erro e pode nao funcionar. para executar o daemon: [localhost]# bin/msql2d & Esse servidor, ao meu ver, nem se compara com MySQL.Creio que a simplicidade do MySQL eh seu ponto forte.Sempre tive muitos problemas na execucao de mSQL.Existem diversos exploits para ele, e seus bugs sao incontaveis, sem duvida nao quero aqui desmerecer o autor e os demais programadores que o criaram, mas existem erros alih q nao deviam existir, strcpy recebendo argumentos pela linha de comando eh fogo! ------------------------------------- 3 - OPERACOES E ADMINISTRACAO BASICA | ------------------------------------- Nesse item irei descrever operacoes basicas.Para o seu entendimento faz-se necessario conhecimentos basicos de SQL.Os esquemas aqui serao simples, soh para demonstrar possiveis operacoes envolvendo esse banco de dados e as diferencas entre mSQL e MySQL. Antes de mais nada, para acessar o servidor, necessita que seja criada uma database no mesmo.Para isso, basta digitar, como usuario responsavel pelo mSQL: [localhost]# bin/msqladmin create mo Assim eh criada a database de nome "mo" no sistema.Ela se localiza no diretorio "msqldb/" da instalacao do seu MSQL.Isso pode ser util para acessos a banco de dados de terceiros.Digamos que como usuario normal voce chega num servidor e procura lah pelo msql e digita: [localhost]$ ls -l /usr/local/Hughes/msqldb/ total 1 drwx------ 2 root root 1024 May 29 07:18 mo/ Isso nos mostraria que existe 1 database no sistema e seu nome eh mo. Entao sabendo que lah tem esse database eh soh tentar acessar o servidor que pode ser feito assim: [localhost]$ bin/msql mo Welcome to the miniSQL monitor. Type \h for help. mSQL > Aih estah.Por default, sabendo o nome de algum database, podemos facilmente entrar no banco de dados.Podemos digitar o \h para visualizarmos uma ajuda: mSQL > \h MiniSQL Help! The following commands are available :- \q Quit \g Go (Send query to database) \e Edit (Edit previous query) \p Print (Print the query buffer) mSQL > Voce pode notar que existe muita diferenca em relacao ao MySQL.No MySQL nos podemos usar o ponto e virgula(;) para enviar as informacoes, aqui temos que digitar sempre "\g", mas com pratica, isso se torna simples e comum. Para visualizar quais as tabelas existentes num banco de dados, usa-se o cliente "relshow" que se encontra no diretorio bin da sua instalacao: [localhost]$ bin/relshow mo Database = mo +-------------------------------+ | Table | +-------------------------------+ | vaca | +-------------------------------+ Feito isso, a coisa comeca a ficar mais facil, pois voce jah vai ter tido acesso aos banco de dados e as tabelas.Assim como em MySQL, aqui com mSQL, para vermos dados de uma tabela, nos usamos SELECT, veja: mSQL > select * from vaca -> \g Query OK. 0 row(s) modified or retrieved. +----------------------+ | buu | +----------------------+ +----------------------+ mSQL > Nossa tabela de nome 'vaca' estah vazia.Para inserir dados nelas usamos a instrucao INSERT: mSQL > insert into vaca values ('boi') -> \g Query OK. 1 row(s) modified or retrieved. OBS:"Ao contrario de MySQL, mSQL nao aceita argumentos passados com aspas. ("")." Podemos entao visualizar como ficou nossa tabela apos isso: mSQL > select * from vaca\g Query OK. 1 row(s) modified or retrieved. +----------------------+ | buu | +----------------------+ | boi | +----------------------+ Algumas particularidades realmente sao notaveis, mas com um pouco de pratica, voce poderah assimilar bem elas.Para apagar um tabela segue o mesmo esquema usado em MySQL, a instrucao DROP: mSQL > drop table vaca\g Query OK. 1 row(s) modified or retrieved. Vamos ver via relshow como ficou o database: [localhost]$ bin/relshow mo Database = mo +-------------------------------+ | Table | +-------------------------------+ +-------------------------------+ Database estah vazio.Vamos entao apagar ele tambem.No MySQL podiamos usar diretamente a instrucao DROP dentro do servidor para apagar um database, aqui eh diferente, soh um usuario com permissao de criar um database pode apaga-lo,no nosso caso, root.Como root, executa-se o seguinte: [localhost]# bin/msqladmin drop mo Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed. Do you really want to drop the "mo" database? [Y/N] y Database "mo" dropped Aih estah.Ele chega a perguntar se queremos mesmo apagar a database.Outros pontos devem ser notados, esse programa somente o usuario setado pode executar, nosso caso root.Para 'derrubar' o daemon basta digitar: [localhost]# bin/msqladmin shutdown Normal Server shutdown! mSQL Daemon Shutdown Complete. [3]- Done bin/msql2d Vamos agora fazer algo mais serio, criar uma database com uma simples tabela: * Como usuario com permissao para executar msqladmin, fazemos: [localhost]# bin/msqladmin create hackers Database "hackers" created. * Depois como user normal mesmo, comecamos a manipular dados no database: [localhost]$ bin/msql hackers Welcome to the miniSQL monitor. Type \h for help. mSQL > + criamos uma simples tabela: mSQL > create table unsek -> (home_pages char(40) not null)\g Query OK. 1 row(s) modified or retrieved. + Inserimos dados nela na coluna home_pages: mSQL > insert into unsek values ('http://unsekurity.cyberpunk.com.br')\g Query OK. 1 row(s) modified or retrieved. mSQL > insert into unsek values ('http://unsekurity.virtualave.net/')\g Query OK. 1 row(s) modified or retrieved. + Visualizamos entao nossa tabela: mSQL > select * from unsek\g Query OK. 2 row(s) modified or retrieved. +------------------------------------------+ | home_pages | +------------------------------------------+ | http://unsekurity.cyberpunk.com.br | | http://unsekurity.virtualave.net/ | +------------------------------------------+ Aih estah ela.Abaixo segue o mesmo exemplo, avancando um pouco mais: mSQL > create table grupos( -> de_fora CHAR(10) not null, -> home_page CHAR(30) not null)\g Query OK. 1 row(s) modified or retrieved. Inserimos valores: mSQL > insert into grupos values ('w00w00','http://www.w00w00.org/')\g Query OK. 1 row(s) modified or retrieved. mSQL > insert into grupos values('THC','http://www.infowar.co.uk/thc/')\g Query OK. 1 row(s) modified or retrieved. Apos inserirmos varios dados a mais, finalmente visualizamos: mSQL > select * from grupos\g Query OK. 7 row(s) modified or retrieved. +------------+--------------------------------+ | de_fora | home_page | +------------+--------------------------------+ | w00w00 | http://www.w00w00.org/ | | THC | http://www.infowar.co.uk/thc/ | | CCC | http://www.ccc.de | | b0f | http://b0f.freebsd.lublin.pl/ | | URSS | http://www.ussrback.com/ | | ADM | http://adm.isp.at/ | | RFP | http://www.wiretrip.net/rfp/ | +------------+--------------------------------+ Enfim, manipulacao de dados desse modo eh bem facil, agora vamos deletar um individuo acima, dessa tabela: mSQL > delete from grupos where de_fora = 'RFP'\g Query OK. 1 row(s) modified or retrieved. Tiramos a tal do RFP. Para operacoes basicas, nao existe muito segredo.Se voce errar na digitacao, bem diferente do MySQL, em mSQL voce terah que editar a instrucao anterior.Para isso basta voce digitar \e , entao ele abrirah o vi(editor de texto elvis) e voce poderah alterar o comando anterior. Exemplo: mSQL > create table unsek -> (um int(50) not null, -> Digamos que queiramos mudar o nome da coluna acima 'um', devemos entao: -> \e create table unsek (um int(50) not null, ~ ~ Aqui digitamos 'i', levamos o cursor ateh um e o apagamos ou substituimos: create table unsek (alterado int(50) not null, ~ Feito isso, digitamos Esc, em seguida : (dois pontos) e depois wq. ~ wrote /tmp/msql.0000002.0000208, 2 lines, 47 chars Query buffer ------------ create table unsek (alterado int(50) not null, [continue] -> Eh fundamental para qualquer fucador de sistemas Unix conhecer a fundo o editor de textos "vi".Ele eh um editor padrao, se voce se deparar com AIX, SunOS, e etc, voce nao acharah facilmente joe, ou pico...Eh mais comundo voce se encontrar com redes que soh possuem vi, em muitos casos, nem vi terah, voce terah que se virar com cat, echo e etc. -------------- 4. TERMINANDO | -------------- Isso que descrevi aqui eh o super-ultra-mega basico de mSQL.Dependendo da versao no host alvo, esse servidor possui inumeros furos.O pessoal da sekure SDI(nao sei se 'atual securenet') descobriu inumeros furos em varias versoes do mSQL, e fez alguns exploits para o mesmo.A pagina da sekure estah desativada(www.sekure.org), e eu nao achei esse txt e esses exploits na www.securenet.com.br, de modo que, se voce quiser esse material, voce pode achar na packetstorm(http://packetstorm.securify.com/), manda procurar lah por: SDI-msql.tar.gz.Ao meu ver, um excelente material mostrando varios furos desse Programa.Num futuro proximo, disponibilizaremos mais material sobre mSQL. 4.1 - Links e Referencias -------------------------- * mSQL e SQL: http://www.hughes.com.au/ http://tutorial.virtualave.net/ -> Veja na parte de Apostilas de Informatica. * Home Pages Atuais do Unsekurity Team: http://unsekurity.virtualave.net/ http://unsekurity.cyberpunk.com.br/ * Outras Muito Interessantes: http://www.hacker.com.br/ http://www.taldowin.com.br/ http://www.bufferoverflow.org/ http://www.securenet.com.br/ http://www.sekure.org/ -> Atualmente desativada(01.06.2000). * De fora: http://packetstorm.securify.com/ http://www.securityfocus.com/ -> De uma olhada na mail list BugTraq. http://hispahack.ccc.de/ -> Algo sobre exploits para w3-msql. 4.2 - Consideracoes Finais ---------------------------- Aprender o maximo possivel sobre todo e qualquer programa que possa servir de proveito para um fucador eh mais do que valido.Contemplar teorias fucadoras eh soh com o tempo amigo, chega uma hora que voce nao consegue fazer outra coisa nos programas a nao ser procurar furos e bugs no mesmo.No fundo, a grande maioria do pessoal que meche com hacking jah fucava desde pequeno, seja desmontando um relogio, uma bicicleta ou procurando achar e ver coisas que as outras pessoas nao procurariam em determinados objetos. Mas nao se assuste se voce nunca foi assim!!:)..Nao existe um 'estereotipo' para um fucador como a midia quer empurrar...Jah tah provado que para ser um hacker, basta estar vivo! Termino esse tutorial as pressas, o conteudo estah bastante baixo, mas eh que temos que adiantar outras coisas por aih, algo bem mais util para a comunidade 'fucadora'.Juizo Irmao!! Nash Leon. ----------------------------------EOF-------------------------------------