Segurança do php

Started by branco, 19 de February , 2007, 09:40:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

branco

Muitas pessoas não entendem do porque das coisas, utilizam o metodo de tentativas, pra evitar isso na hora de um ataque vo fazer esse tutorial pra vcs.

obs : as configurações podem mudar de acordo com as versões do php.

Safe Mode
quando o safe mode está habilitado ele faz muitas limitações como por exemplo, não podemos executar comandos shell no sistema, ele desabilita funções como shell, exec,shell_exec, etc
ele tambem é o responsavel por uploads/downloads não funcionarem no servidor, quando está habilitado verifica se o proprietario do script atual é o proprietario do arquivo que esta sendo envolvido na operação, por exemplo pra nós fazermos o upload no servidor vamos ter que por nosso arquivo em um diretorio no servidor, e como o nosso usuario nao é o mesmo que criou o diretorio entao nao vamos poder fazer upload.
os valores dele são ON/OFF

safe_mode_include_dir
checagem de uid não são feitas no diretorio que espeficarmos nessa diretiva, com isso usuarios poderemos fazer uploads nele.
alguem pode configurar essa opção errada e podemos tirar proveito disso, por exemplo safe_mode_include_dir = c:/site
ele esqueceu de feixar o diretorio com barra, então tambem temos acesso ao c: pra evitar isso temos que fazer da seguinte maneira
safe_mode_include_dir = c:/site/

safe_mode_exec_dir
lembra do safe mode bloqueando nossos shells ? ele bloquea inclusive os arquivos que queremos executar no servidor...com essa opção podemos executar arquivos que estejam nos diretorios especificados por essa diretiva.
o valor padrao com safe mode on, é executar apenas arquivos que estejam no mesmo diretorio do script que está sendo executado.

safe_mode_allowed_env_vars
por padrão só podemos editar variaveis de ambiente que comecem com PHP_ porem com essa opção podemos especificar outros tipos de variaveis
obs : "se essa diretiva estiver vazia, o PHP deixará o usuário modificar QUALQUER variável de ambiente!"

safe_mode_protected_env_vars
essa variavel contem uma lista com os prefixos das variaveis de ambiente que o usuario não pode mudar, mesmo que elas estejam no safe_mode_allowed_env_vars... é bom lembrar, no site disse que ele nao pode mudar com putenv, entao se acharmos uma outra opção que possa ser usada pra mudar variaveis de ambientes, funcionará.

doc_root
o diretorio 'raiz' do php no servidor, com safe mode on nenhum arquivo fora desse diretorio pode ser acessado.


As variaveis abaixo não são afetadas por safe mode, on ou off.

open_basedir
quando queremos abrir um arquivo no servidor, ele é aberto com comandos de php como por exemplo fopen(), se especificarmos um diretorio pra open_basedir, os arquivos a serem abertos só podem estar dentro do diretorio, se nao a operaçao vai falhar.
O valor especial .  indica que o diretório de trabalho, onde o script é rodado, será usado como o diretório base. Isso é, no entanto, um pouco perigoso, já que o diretório de trabalho do script pode ser facilmente alterado com a função chdir().

disable_functions
permite desabilitar funções, como por exemplo system, exec, fopen, etc
na cmd do darkers utilizei uma opção pra mostrar as funções que estao sendo bloqueadas por essa diretiva.

include_path
espeficida os diretorios aonde as opções require(), include()  e fopen_with_path() buscaram por arquivos, para abrirem
por exemplo se colocarmos include_path = c:/site/
e usar fopen("arquivo.txt", "r"), então o php procurará pelo arquivo lá na pasta c:/site/ tambem


detalhe : na maioria das cmds existem a opção phpinfo, onde mostra a configuração do php
aconselho a todos a da uma olhada antes de começar a fazer alguma coisa no servidor.
t+
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?

lcs

esses comando vc inclui no codigo?
Pra que viver sem sentido.

branco

não amigo, supondo que você obteu acesso a um determinado servidor e quer saber como ele funciona pra saber oque você pode fazer, então terá de olhar no phpinfo do servidor as configurações dele.

essas configurações ficam no arquivo php.ini porem o phpinfo é um array que contem as informações de configuração dele, só que ao inves de arquivo é no site.

ate mais
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?