"Domestic spying initiatives never die, they just get new acronyms." "Espionagem doméstica iniciativas nunca morrem, eles apenas buscar novas siglas".-- Blogger Frank Sennet - Frank Sennet Blogger
Published by: Pulse , on 2007-08-22 05:50:52 Publicado por: Pulso, em 2007-08-22 05:50:52
Naturally, the first step in this direction should be to uncover web applications that are vulnerable to the attack. Naturalmente, o primeiro passo neste sentido deve ser a descobrir que aplicações web estão vulneráveis ao ataque.The attack takes advantage of poor code and website administration. O ataque tira proveito da má administração e do site código.In SQL injection, user controlled data is placed into a SQL query without being validated for correct format or embedded escape strings. Na injeção SQL, controlada dados usuário é colocado em uma consulta SQL sem ter sido validado para o formato correto ou de cordas embutida escapar.It has been known to affect majority of applications which use a database backend and do not filter variable types. Ficou conhecido por afetar maioria das aplicações que utilizem um banco de dados backend e não variável tipos de filtro.It has been estimated that at least 50% of the large e-commerce sites and about 75% of the medium to small sites are vulnerable to this attack. Foi estimado que pelo menos 50% dos grandes sites de comércio eletrônico e cerca de 75% da média a pequenos sites são vulneráveis a esse ataque.The dominant cause is the improper validation in CFML, ASP, JSP, and PHP codes. A causa está a inadequado dominante validação em CFML, ASP, JSP, PHP e códigos.Attackers go about uncovering the susceptible web application by looking at web pages for anything resembling an ID number, category, or name. Atacantes vão descobrindo sobre a aplicação web suscetíveis ao olhar para as páginas da web para algo semelhante um número de identificação, categoria, ou do nome.The attacker may sift through all forms of variables as well as cookies. O atacante maio filtrarem todas as formas de variáveis, bem como os cookies.Many a times session cookies are stored in a database and these cookies are passed into SQL queries with little or no format checks. Muitas vezes uma sessão cookies são armazenados em um banco de dados e estes cookies são passadas em consultas SQL com pouco ou nenhum formato controlos.They may try placing various strings into form fields and in query variables. Eles podem tentar colocar várias seqüências em campos de formulário e em consulta variáveis.However, typically, someone looking for SQL vulnerability will start off with single and double quotes and then try with parenthesis and the rest of the punctuation characters. No entanto, normalmente, alguém olhando para o SQL vulnerabilidade vai começar com aspas simples e duplas, e então tente com parênteses e no resto do caracteres de pontuação.The response expected is any response signifying an error. A resposta é esperada qualquer resposta significando um erro.
CODE : CÓDIGO:
(OLE DB Errors)(OLE DB Erros)
The user filled fields are enclosed by single quotation marks (').Os campos estão cheios usuário delimitada por aspas simples ( ').So a simple test of the form would be to try using (') as the username.Portanto, um simples teste do formulário seria tentar usar ( ') como o nome de usuário. When we just enter in a form that is vulnerable to SQL insertion.Quando acabamos de entrar em um formulário que é vulnerável à inserção SQL.If you get OLE Database error, then you can try SQL injections.Se você obter OLE Erro na base de dados, então você pode tentar o SQL injeções.
Example 1Exemplo 1 Attackers start by using the single quote in the User ID field of the login page. Atacantes comece por utilizar o apóstrofo no campo User ID da página de login.It returned an error just as they wanted it. Ele retornou um erro da mesma forma que ele queria.
CODE : CÓDIGO:
Microsoft OLE DB Provider for ODBC Drivers (Ox80040E14)Fornecedor Microsoft OLE DB para controladores ODBC (Ox80040E14) [Microsoft] [ODBC SQL Server Driver] [SQL Server] Unclosed quotation mark before the character string '''.[Microsoft] [ODBC SQL Server Driver] [SQL Server] aberto aspas antes da seqüência de caracteres'' '. /corner/asp/checklogin1.asp, line 7/ corner/asp/checklogin1.asp, linha 7 Browser Type:Navegador Tipo: Mozilla/(version) (compatible; MSIE 6.0; Windows NT 5.0)Mozilla / (versão) (compatible; MSIE 6.0; Windows NT 5,0) Page: #Página: # POST 36 bytes to /corner/asp/checkloginl.aspPOST 36 bytes para / esquina / asp / checkloginl.asp POST Data:Os dados POST: userid=%27&userpwd=%27&Submit=Submituserid% = 27 & userpwd% = 27 & Submit = Submeter
This output is the first lead the attacker can use. Esta é a primeira saída de levar o atacante pode usar.He has a greater chance of succeeding if he can find out which database he is pitted against. Ele tem uma maior chance de sucesso se ele pode descobrir em qual banco ele está opondo.This is called database footprinting. Isso é chamado de dados footprinting.Database footprinting is the process of mapping out the tables on the database. Database footprinting é o processo de mapear as tabelas no banco de dados.Identifying the configuration of the server is crucial in deciding how the site will be attacked. Identificando a configuração do servidor é fundamental para decidir a forma como o site vai ser atacado.The method chosen to do this will depend on how poorly the server has been configured. O método escolhido para fazer isso dependerá da forma como o servidor tenha sido mal configurado.In the error statement shown above, it is clear that the site is using a SQL Server. Na declaração de erro mostrada acima, fica claro que o site está usando um SQL Server.Note that SQL Injection is the attack on the web application, not the web server or services running in the OS. Note que o SQL Injection é o ataque à aplicação web, e não o servidor web ou de serviços em execução no sistema operativo.It is typical of an HTML page to use the POST command to send parameters to another ASP page. É típico de uma página HTML para usar o comando POST para enviar parâmetros para outra página ASP.On a closer look at the source code we find the "FORM" tag, <form name="form1" method="post" action="checklogin1.asp"> Let us look at the implications. Em uma análise mais atenta do código fonte, encontramos o "FORMULÁRIO" tag, <form name="form1" method="post" action="checklogin1.asp"> Olhemos para as implicações.
Exploits occur due to coding errors and inadequate validation checks as well. Exploits ocorrer devido a erros de codificação e validação controlos inadequados tão bem.Often, the emphasis is on acquiring an input and delivering a suitable output. Muitas vezes, a ênfase é sobre adquirir uma entrada e uma prestação adequada de saída.Web applications that do not check the validity of its input, are exposed to the attack. Aplicações web que não se verifique a validade da sua entrada, são expostos ao ataque.
Another attack type is Login script. Outro tipo de ataque é de login script.The login page at site.com/login.htm is based on this code. A página de login em site.com / login.htm baseia-se neste código.
The above form points to checklogin.asp where we come across the following code. O formulário acima aponta para checklogin.asp onde deparamos com o seguinte código.
If (objRS.EOF) ThenIf (objRS.EOF) Then Response.Resposta.Write "Invalid login."Escreve "Invalid login." ElseDiferente Response.Resposta.Write "You are logged in as" & objRS("user_name")Escreva "Você está conectado como" & objRS ( "user_name") End IfEnd If
Set objRS = NothingSet objRS = Nada
At a cursory glance this code looks alright and does what it is supposed to do - check for a valid username and password and allow the user to access the site if it the credentials are valid. Numa sumária este código é certo e faz aquilo que é suposto fazer - para verificar um nome de usuário e senha válidos e permitem ao usuário acessar o site, se as credenciais forem válidas.
However, note the above statement where the user input from the form is directly used to build a SQL statement. No entanto, note a declaração acima onde o utilizador directamente a partir do formulário é usada para construir uma declaração SQL.There is no input validation regarding the nature of input. Não existe nenhuma validação de entrada quanto à natureza do input.It gives direct control to an attacker who wants to access the database. Ele dá controle direto de um atacante que deseja ter acesso ao banco de dados.
For instance if the attacker enters a SELECT statement such as SELECT * FROM tblUsers WHERE user_name=" or "=" and pwdpass = " or "=", the query will be executed and all the users from the queried table will be displayed as output. Por exemplo, se o atacante entra numa declaração SELECT, como SELECT * FROM tblUsers ONDE user_name = "ou" = "e pwdpass =" ou "=", a consulta será executada e todos os usuários do questionaram a tabela será mostrado como saída .Moreover, the first attacker will be logged in as the first user identified by the first record in the table. Além disso, o primeiro atacante será o primeiro login como usuário identificado pelo primeiro registro na tabela.It is quite probable that the first user is the superuser or the administrator. É bastante provável que o primeiro é o super usuário ou do administrador.Since the form does not check for special characters such as "=", the attacker is able to use these to achieve his malicious intent. Uma vez que o formulário não se verifique por caracteres especiais como "=", o atacante é capaz de utilizar estes para conseguir a sua intenção maliciosa.For clarity sake, let us look at a secure code. Para maior clareza bem, vamos olhar um código seguro.Note the use of the REPLACE function to take care of the single quote input. Note o uso da função REPLACE para cuidar de citar o único factor de produção.
SQL Server, among other databases, delimits queries with a semi-colon. O SQL Server, entre outras bases de dados, delimita consultas com um ponto e vírgula.The use of a semicolon allows multiple queries to be submitted as one batch and executed sequentially. A utilização de um ponto e vírgula permite múltiplas buscas para ser apresentado como um lote e executadas seqüencialmente.For example, the query Username: 'or 1=1; drop table users; -- will be executed in two parts. Por exemplo, a consulta Nome de usuário: 'ou 1 = 1; gota tabela usuários; - será executada em duas partes.Firstly, it would select the username field for all rows in the users table. Em primeiro lugar, iria seleccionar o campo de usuário para todas as linhas na tabela usuários.Secondly, it would delete the users table. Em segundo lugar, seria excluir os usuários tabela.
Login Guessing & Insertion is anoterh way of trying to Hack. Adivinhar Login & Inserção é anoterh maneira de tentar Hack.The attacker can try to login without a password. O atacante pode tentar fazer o login sem uma senha.Typical usernames would be 1=1 or any text within single quotes. Usuário típico seria 1 = 1 ou qualquer texto dentro de aspas simples.The most common problem seen on Microsoft MS - SQL boxes is the default <blank>sa password. O problema mais comum visto em Microsoft MS - SQL caixas é o padrão <blank> senha sa. The attacker can try to guess the username of an account by querying for similar user names (ex: ad%' is used to query for "admin"). O atacante pode tentar adivinhar o nome de usuário de uma conta para buscas por nomes semelhantes usuário (ex: ad% 'é usado para consultar "admin"). The attacker can insert data by appending commands or writing queries. O atacante pode inserir dados acrescentando-se ou escrever comandos SQL.
From database fingerprinting, if the attacker has determined that the database backend is SQL server, he will try his luck with the default admin login credentials - namely sa and a blank password. A partir de impressão digital de dados, caso o invasor tenha determinado que o banco de dados backend for SQL Server, ele vai tentar a sua sorte com as credenciais de login padrão administrativo - ou seja sa e uma senha em branco.Alternatively he can issue a query so that his query would retrieve a valid username. Alternativamente ele pode emitir uma consulta para que sua query iria recuperar um nome de usuário válido.For instance, to retrieve the administrative account, he can query for users.userName like 'ad%' -- Por exemplo, para recuperar a conta administrativa, ele pode consulta para users.userName como 'ad%' --
Now if the attacker does not want to login and just wants to 'harvest' the site, he may try to view extra information which is not otherwise available. Agora, se o atacante não quer fazer o login e só quer 'colheita' do site, ele pode tentar visualizar informações adicionais, que não está disponível em contrário.He can choose to transform the url such as the ones shown below to retrieve information. Ele pode optar por transformar a url, como os que são apresentados a seguir para obter informações.
Here, the "sCategory" is the variable name, and "Tools" is the value assigned to the variable. Aqui, o "sCategory" é o nome da variável, e "Ferramentas" é o valor atribuído à variável.The attacker changes this valid url into: O atacante mudanças nesta válido url:
If the code underlying the page has a segment similar to the one shown below: Se o código subjacente a página tem um segmento similar a um mostrado abaixo:
CODE : CÓDIGO:
sub_cat = request ("sCategory") sqlstr="SELECT * FROM product WHERE Category='" & sub_cat &'"" Set rs=conn.execute (sqlstr)sub_cat = request ( "sCategory") sqlstr = "SELECT * FROM produto WHERE Categoria = '" & sub_cat &' "" Set rs = conn.Execute (sqlstr)
Now, the value "Kits" taken in by the variable "sCategory" is attributed to sub_cat and hence the SQL statement becomes: Agora, o valor de "Kits" pelas tomadas de a variável "sCategory" é atribuído ao sub_cat e, consequentemente, torna-se o comando SQL:
CODE : CÓDIGO:
SELECT * FROM product WHERE Category='Kits'SELECT * FROM produto Categoria = ONDE 'Kits'
Therefore the output will be a result set containing rows that match the WHERE condition. Portanto o resultado será um conjunto de resultados contendo linhas que correspondam a WHERE condição.If the attacker appends the following to the valid url, Se o atacante anexa o seguinte válido para o url,
The SQL statement becomes SELECT * FROM product WHERE Category='Tools' or 1=1 --' A declaração SQL SELECT * FROM produto se torna Categoria = ONDE 'Ferramentas' ou 1 = 1 -'
This leads the query to select everything from the product table irrespective of whether Category equals "Tools' or not. The double dash " --" instructs the SQL Server to ignore the rest of the query. This is done to eliminate the last hanging single quote ('). Sometimes, it is possible to replace double dash with single hash "#". Isto leva a consulta para selecionar tudo a partir da tabela de produtos independentemente de categoria igual "Ferramentas" ou não. Dupla Os pitada "-" instrui o SQL Server para ignorar o restante da consulta. Isto é feito para eliminar o último enforcamento único citação ( '). Às vezes, é possível substituir com duplo traço único hash "#".
If the database backend in question is not an SQL Server, it will not recognize the double dash. Se o banco de dados backend em causa não é um SQL Server, ele não irá reconhecer o duplo traço.The attacker can then try appending ' or 'a'='a, which should return the same result. O atacante pode então tentar anexar 'ou' a '=' um, que deverá regressar ao mesmo resultado.
Depending on the actual SQL query, the various possibilities available to the attacker are: Dependendo do real consulta SQL, as diversas possibilidades disponíveis para o atacante são:
CODE : CÓDIGO:
'or 1=1--'ou 1 = 1 -- "or 1=1--"ou 1 = 1 -- or1=1--OR1 = 1 -- ' or 'a'='a'Ou' a '=' um " or "a"="a"Ou" um "=" um ') or ('a'='a') Ou (' a '=' um
To use the database for his malevolent intent, the attacker needs to figure out more than just what database is running at the backend. Para usar o banco de dados para a sua intenção dolosa, o atacante tem de descobrir muito mais do que aquilo que está a ser executado na base de dados backend.He will have to determine the database structure and tables. Ele terá de determinar a estrutura de dados e tabelas.Revisiting our product table, we see that the attacker can insert commands such as: insert into Category value (library) Revisitar o nosso produto quadro, vemos que o atacante pode inserir comandos como: inserir na categoria valor (biblioteca)
Suppose the attacker wants to add a description of the files he wants to upload, he will need to determine the structure of the table. Suponha que o atacante deseja adicionar uma descrição dos arquivos que ele quer fazer o upload, ele terá de determinar a estrutura da tabela.He might be able to do just that, if error messages are returned from the application according to the default behaviour of ASP and decipher any value that can be read by the account the ASP application is using to connect to the SQL Server. Ele pode ser capaz de fazer exatamente isso, se as mensagens de erro são retornados a partir do pedido, de acordo com o comportamento padrão do ASP e decifrar qualquer valor que possa ser lido por conta da aplicação é o ASP usando para se conectar ao SQL Server.
The insertion methods will vary according to the database at the backend. A inserção métodos irão variar de acordo com o banco de dados no backend.For instance, MS SQL is considered to be the easiest system for SQL Insertion. Por exemplo, o MS SQL é considerado o sistema mais fácil Inserção de SQL.Oracle has no native command execution capability. Oracle não tem capacidade de execução nativa comando.In Sybase, the Command exec is disabled by default. Em Sybase, o comando exec é desativado por padrão.However, it is similar to MS SQL - though without as many stored procedures. No entanto, é similar ao MS SQL - embora sem tantos procedimentos armazenados.MySQL is very limited in scope. O MySQL é muito limitado no seu âmbito.SubSelects are a possibility with newer versions. SubSelects são uma possibilidade com as versões mais recentes.It is typically restricted to one SQL command per query. É normalmente restrita a um comando SQL por consulta.One of SQL Server's most powerful commands is SHUTDOWN WITH NOWAIT, which causes it to shutdown, immediately stopping the Windows service. SQL Server Um dos comandos está mais poderosos da SHUTDOWN COM nowait, o que faz com que ele seja o desligamento, parar imediatamente o serviço do Windows.
CODE : CÓDIGO:
Username: ' ; shutdown with nowait; -- Password [Anything]Nome de usuário: '; desligamento com nowait; - Senha [Tudo]
This can happen if the script runs the following query: Isso pode acontecer se o script executa a seguinte consulta:
CODE : CÓDIGO:
select userName from users where userName='; shutdown with nowait;-' and user_Pass=' 'userName selecionar a partir de onde os usuários userName = '; desligamento com nowait; -' e user_Pass = ""
The default installation of SQL Server has the system account (sa) which is accorded all the privileges of the administrator. A instalação padrão do SQL Server tem conta do sistema (sa), que é atribuído todos os privilégios do administrador.An attacker who happens to stumble across this account while harvesting websites can take advantage of this and gain access to all commands, delete, rename, and add databases, tables, triggers, and more. Um atacante que acontece a tropeçar em toda essa conta, enquanto apanha sites podem tirar proveito disso e ganhar acesso a todos os comandos, excluir, renomear, e adicionar bases de dados, tabelas, triggers, e muito mais.One of the attacks he can carry out when he is done with the site is to issue a denial of service by shutting down the SQL Server. Um dos ataques que ele pode realizar quando ele é feito com o site está a emitir uma negação de serviço pelo desligamento do SQL Server.A powerful command recognized by SQL Server is SHUTDOWN WITH NOWAIT. Um poderoso comando reconhecidos pelo SQL Server é SHUTDOWN COM nowait.This causes the server to shutdown, immediately stopping the Windows service. Isso faz com que o servidor para o desligamento, parar imediatamente o serviço do Windows.After this command has been issued, the service must be manually restarted by the administrator. Após este comando foi emitido, o serviço deve ser reiniciado manualmente pelo administrador.Let us take a look at an example. Vamos dar uma olhada em um exemplo.At an input form such as login, which is susceptible to SQL injection, the attacker issues the following command. Em um formulário de entrada, tais como login, que é suscetível a injeção SQL, o atacante emite o seguinte comando.
CODE : CÓDIGO:
Username: '; shutdown with nowait; -- Password: [Anything]Nome de usuário: '; desligamento com nowait; - Senha: [Tudo]
This would make our login.asp script run the following query: Isso tornaria o nosso script login.asp executar a seguinte consulta:
CODE : CÓDIGO:
select userName from users where userName="; shutdown with nowait; --'and userPass="userName selecionar a partir de onde os usuários userName = "; desligamento com nowait; - 'e userPass ="
The '--' character sequence is the 'single line comment' sequence in Transact -SQL, and the ';' character denotes the end of one query and the beginning of another. O carácter '-' é a seqüência "única linha comentário» na sequência do Transact-SQL, e os ";" denota o caráter final de uma consulta eo início de outro.If he has used the default sa account, or has acquired the required privileges, SQL server will shut down, and will require a restart in order to function again. Se ele tiver utilizado o padrão sa conta, ou tenha adquirido o exigido privilégios, o SQL Server irá desligar, e irá necessitar de um reinício para ele funcionar novamente.
Stored PorceduresArmazenados Porcedures
There are several extended stored procedures that can cause permanent damage to a system. Há vários procedimentos armazenados estendido que pode causar danos permanentes ao sistema. We can execute an extended stored procedure using our login form with an injected command as the username as follows: Podemos executar um procedimento armazenado estendido login usando o nosso formulário com um comando como o nome de usuário injetado como se segue:
A stored procedure is a collection of SQL statements that can be called as though they were a single function. Uma stored procedure é um conjunto de comandos SQL que podem ser chamados como se fossem uma única função.A SQL stored procedure is similar to a batch file - both are text files consisting of commands, and can be run by invoking the name of the procedure or batch file. Um procedimento armazenado no SQL é semelhante a um arquivo de lote - ambos são arquivos texto que consiste de comandos, e pode ser executado, invocando o nome do procedimento ou um arquivo em lotes.An extended stored procedure (XP) takes the notion of a stored procedure one step further. Um procedimento armazenado estendido (XP) toma a noção de um procedimento armazenado um passo mais além.Where stored procedures consist of text files, XPs are written in high-languages like C and compiled into .DLLs. Quando armazenados procedimentos consistem em arquivos de texto, XPS são escritos em linguagens como C alto e compilados em. DLLs.Stored procedures primarily consists of SQL commands, while XPs can provide entirely new functions via their code. Procedimentos armazenados principalmente constituída por comandos SQL, enquanto XPS pode oferecer integralmente as suas novas funções através de código.An attacker can take advantage of extended stored procedure by entering a suitable command. Um atacante pode tirar partido do procedimento armazenado estendido, digitando um comando adequado.This is possible if there is no proper input validation. Isto é possível, se não houver uma boa entrada validação.xp_cmdshell is a built-in extended stored procedure that allows the execution of arbitrary command lines. xp_cmdshell é um built-in procedimento armazenado estendido para permitir a execução arbitrária de linhas de comando.For example: exec master..xp_cmdshell 'dir' will obtain a directory listing of the current working directory of the SQL Server process. Por exemplo: exec master .. xp_cmdshell 'dir' irá obter uma listagem do diretório atual diretório de trabalho do SQL Server processo.In this example, the attacker may try entering the following input into a search form can be used for the attack. Neste exemplo, o invasor pode tentar digitar o seguinte entrada em um formulário de pesquisa podem ser usados para o ataque.
When the query string is parsed and sent to SQL Server, the server will process the following code: Quando a query string é analisada e enviada para o SQL Server, o servidor irá processar o seguinte código:
CODE : CÓDIGO:
SELECT * FROM PTable WHERE input text =" exec master..xp_cmdshell ' product handycam/DELETE' --'SELECT * FROM PTable ONDE input texto = "exec master .. xp_cmdshell 'produto Handycam / DELETE' - '
The advantage of this attack method is that the DLL file only needs to be present on a machine accessible by the SQL Server. A vantagem deste método é que o ataque DLL só precisa de estar presente em uma máquina acessível através do SQL Server.Here, the first single quote entered by the user closes the string and SQL Server executes the next SQL statements in the batch including a command to delete a product to the product table in the database. Aqui, a primeira citação único digitados pelo usuário fecha a string do SQL Server e executa a próxima instruções SQL no lote incluindo um comando para excluir um produto para o produto na tabela do banco de dados.
Server TalksServidor Talks
This command uses the 'speech.voicetext' object, causing the SQL Server to speak: Esse comando usa o 'speech.voicetext' objeto, fazendo com que o SQL Server para falar:
CODE : CÓDIGO:
admin'; declare @o int, @retadmin "; declare @ o int, @ ret int exec sp_oacreateint exec sp_oacreate 'speech.voicetext', @o,«speech.voicetext ', @ o, 'register', NULL,'foo',"registo", NULL, 'foo', 'bar' exec sp_oasetproperty'bar' exec sp_oasetproperty @o, 'speed',150 exec@ 'o', 'velocidade', 150 exec sp_oamethod @o, 'speak',sp_oamethod @ 'o', 'fala', NULL, 'all your sequelNULL, 'todos os seus sequela servers are belong to us',servidores são pertence a nós', 528 waitfor delay '00:00:05'--528 waitfor atraso'00: 00:05 '--
It is possible for an attacker to leverage built-in extended stored procedures which are provided for the creation of ActiveX Automation scripts in SQL server. É possível a um atacante para alavancar built-in estendido procedimentos armazenados que estão previstas a criação de scripts ActiveX Automation no SQL Server.These scripts are typically written in VBScript or JavaScript, and they create automation objects and interact with them. Esses scripts são normalmente escritos em JavaScript e VBScript, e eles criam objetos automação e interagir com eles.They are functionally similar to ASP scripts. Eles são funcionalmente semelhantes aos scripts ASP.Similarly an automation script written in Transact-SQL can accomplish what an ASP script or a WSH script will do. Da mesma forma um script escrito em automação Transact-SQL pode conseguir aquilo que um script ASP ou um script WSH fará.
Example 2Exemplo 2
CODE : CÓDIGO:
declare @o int, @ret intdeclare @ o int, @ ret int exec sp_oacreate 'speech.voicetext', @o outexec sp_oacreate 'speech.voicetext', @ o out exec sp_oamethod @o, 'register', NULL, 'foo', 'bar'exec sp_oamethod @ 'o', 'cadastro', NULL, 'foo', 'bar' exec sp_oasetproperty @o, 'speed', 150exec sp_oasetproperty @ 'o', 'velocidade', 150 exec sp_oamethod @o, 'speak', NULL, 'all your sequel servers belong to us', 528exec sp_oamethod @ 'o', 'fala', NULL, 'todos os seus servidores sequela pertence a nós', 528 waitfor delay '00:00:05'waitfor atraso'00: 00:05 '
This uses the 'speech.voicetext' object, causing the SQL Server to speak. Este utiliza o 'speech.voicetext' objeto, fazendo com que o SQL Server para usar da palavra.
Preventing AttacksPrevenir Ataques
Minimize Privileges of Database Connection, Disable verbose error messages, Protect the system account 'sa', Audit Source Code, Escape Single Quotes, Allow only good input, Reject known bad input, Restrict length of input and finally update Database and back it up! Privilégios de minimizar Database Connection, verboso Desativar mensagens de erro, o sistema conta Proteja 'sa', Auditoria Source Code, Escape Único Citações, só boa Allow entrada, Rejeitar conhecida má entrada, entradas de Restrito comprimento e finalmente atualização volta de Dados e tudo!The majority of injection attacks require the user of single quotes to terminate an expression. A maioria dos ataques exigem que o usuário injeção de aspas para encerrar uma única expressão.By using a simple replace function and converting all single quotes to two single quotes, you're greatly reducing the chance of an injection attack succeeding. Usando uma simples substituição função única e convertendo todos os orçamentos para duas aspas simples, você está reduzindo grandemente as chances de uma injecção ataque bem sucedido.Using ASP, it's a simple matter of creating a generic replace function that will handle the single quotes automatically, like this: Usando ASP, é uma simples questão de criar uma função genérica que irá substituir a alça única aspas automaticamente, assim: function stripQuotes(strWords) <br /> função stripQuotes (strWords) <br /> stripQuotes = replace (strWords, "'", """ ;) <br /> stripQuotes = replace (strWords, " '", "" ";) <br /> end function fim função
Now if you use the stripQuotes function in conjunction with our first query for example, then it would go from this: Agora, se você usar o stripQuotes funcionar em articulação com a nossa primeira consulta, por exemplo, então ele iria desde esta:
CODE : CÓDIGO:
select count(*) from users where userName='alice' and userPass=" or 1=1 --'select count (*) a partir de onde os usuários userName = 'Alice' e userPass = "ou 1 = 1 - '
To this: Para isso: CODE : CÓDIGO:
select count(*) from users where userName='alice' and userPass="' or 1=1 --'select count (*) a partir de onde os usuários userName = 'Alice' e userPass = "" ou 1 = 1 - '
This, in effect, stops the injection attack from taking place, because the clause for the WHERE query now requires both the userName and userPass fields to be valid. Este, de fato, pára o ataque de injeção a ter lugar, porque a cláusula WHERE para a consulta agora exige tanto o userName e userPass campos para ser válido.
Some countermeasure would be to, Remove Culprit Characters/Character Sequences: Certain characters and character sequences such as; --, select, insert and xp_ can be used to perform an SQL injection attack. Alguns represália seria a de, remover Culprit Personagens / Sequências de caracteres: Algumas seqüências de caracteres e caracteres tais como; -, selecionar, inserir e xp_ pode ser usada para executar um ataque injeção SQL.By removing these characters and character sequences from user input before we build a query, we can help reduce the chance of an injection attack even further. Ao eliminar esses caracteres e seqüências de caracteres de entrada de usuário antes de se construir uma consulta, nós podemos ajudar a diminuir a probabilidade de um ataque ainda mais injeção.As with the single quote solution, we just need a basic function to handle this: Tal como acontece com as aspas simples solução, só precisamos uma função básica para lidar com esta:
CODE : CÓDIGO:
function killChars(strWords)função killChars (strWords) dim badCharsdim badChars dim newCharsdim newChars badChars = array("select", "drop",";","--", "insert",badChars = array ( "select", "drop ",";","--"," inserir ", " delete", "xp_")"Apagar", "xp_") newChars = strWordsnewChars = strWords for i = o to uBound(badChars)para i = o que uBound (badChars) newChars = replace(newChars, badChars(i),"")newChars = replace (newChars, badChars (i ),"") nextpróximo killChars = newCharskillChars = newChars end functionfim função
Using stripQuotes in combination with killChars greatly removes the chance of any SQL injection attack from succeeding. Usando stripQuotes em combinação com killChars grandemente elimina a possibilidade de qualquer ataque de injeção SQL suceda.So if the query: Então, se a consulta:
CODE : CÓDIGO:
select prodName from products where id=1; xp_cmdshell 'format c: /q /yes '; drop database targetDB; --prodName selecionar os produtos a partir de onde id = 1; xp_cmdshell "format c: / q / sim"; targetDB gota de dados; --
is run through stripQuotes and then killChars, it would end up looking like this: É executado através stripQuotes e, em seguida, killChars, iria acabar procurando desta forma:
CODE : CÓDIGO:
prodName from products where id=1 cmdshell "format c: /q /yes " database targetDBprodName de produtos onde id = 1 cmdshell "format c: / q / yes" database targetDB
This is basically useless, and will return no records from the query. Este é basicamente inúteis, e não vai retornar registros da consulta.By keeping all text boxes and form fields as short as possible, the number of characters that can be used to formulate an SQL injection attack is greatly reduced. , Mantendo todas as caixas de texto e campos forma tão breve quanto possível, o número de caracteres que podem ser usados para formular uma injeção SQL ataque é bastante reduzido.Additional countermeasures include checking data type, and using the post method where possible to post forms. Contramedidas adicionais incluem verificação tipo de dados, e utilizando o método post onde possível publicar formulários.
ConclusionConclusão
SQL Injection is an attack methodology that targets the data residing in a database through the firewall that shields it. SQL Injection é uma metodologia que visa atacar os dados residentes em um banco de dados através do firewall que protege-lo. It attempts to modify the parameters of a Web -based application in order to alter the SQL statements that are parsed to retrieve data from the database. Ele tenta modificar os parâmetros de uma aplicação baseada na Web, a fim de modificar os comandos SQL que são analisados para se obter os dados do banco de dados.Database footprinting is the process of mapping out the tables on the database and is a crucial tool in the hands of an attacker. Database footprinting é o processo de mapear as tabelas no banco de dados e é um instrumento fundamental nas mãos de um atacante.Exploits occur due to coding errors as well as inadequate validation checks. Exploits ocorrer devido a erros de codificação, bem como inadequados verificações de validação.Prevention involves enforcing better coding practices and database administration procedures. A prevenção envolve melhor fazer respeitar as práticas e de banco de dados codificação procedimentos administrativos.You have finally read this article and I hope, it gave you a deeper understanding about today web security and attacks. Você tem finalmente ler este artigo, e espero, ele deu-lhe hoje uma compreensão mais profunda sobre segurança na web e ataques.Remember always patch and update holes because exploits are found commonly and the attacker is not going to wait. Recordo nunca correção e atualização buracos porque explora são comumente encontrados e que o atacante não vai esperar.Thank you all for reading and continue to show your support to Hackers Centre by spreading good word about our site! Obrigado a todos pela leitura e continuar a mostrar o seu apoio para a difusão Observatório Hackers boa palavra sobre o nosso site! by Doz por Doz
Cast your vote on this article Elenco seu voto sobre este artigo *Note: the order of the votes has been reversed. * Nota: a ordem das votações foi revertida.
Bliepo32 - 12:35 am Thursday August 23rd, 2007Bliepo32 - 12:35 am quinta-feira 23 de agosto de 2007
A good article, although the lay-out could have been better. Um bom artigo, embora o lay-out poderia ter sido melhor.For example, use [ code ] for ASP and such. Por exemplo, use [code] para ASP e tal. Still, the article was very informing, and those who take the time to read it will learn about SQL injections. Ainda assim, o artigo foi muito informar, e aqueles que tomam o tempo para lê-lo irão aprender sobre SQL injeções.I can clearly see that you researched the subject (even the error messages are included) thoroughly. Eu posso ver claramente que você pesquisou o assunto (mesmo as mensagens de erro estão incluídos) cuidadosamente.8/10. 8 / 10.
futex - 02:54 am Saturday August 25th, 2007Futex - 02h54 Sabado 25 de agosto de 2007
nice, covered alot lol you seem to know about your SQL injections lol. nice, lol abrangeu um lote que você parece saber sobre o seu SQL injeções lol.9/10 9 / 10
Kane - 11:51 am Saturday August 25th, 2007Kane - 11:51 Sabado 25 de agosto de 2007
A good article, although the lay-out could have been better. Um bom artigo, embora o lay-out poderia ter sido melhor. For example, use [ code ] for ASP and such. Por exemplo, use [code] para ASP e tal.
Still, the article was very informing, and those who take the time to read it will learn about SQL injections. Ainda assim, o artigo foi muito informar, e aqueles que tomam o tempo para lê-lo irão aprender sobre SQL injeções. I can clearly see that you researched the subject (even the error messages are included) thoroughly. Eu posso ver claramente que você pesquisou o assunto (mesmo as mensagens de erro estão incluídos) cuidadosamente. 8/10. 8 / 10.