1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#use wml::debian::translation-check translation="ae4a72744f84be54cae3e4ec65a8488af3af84d1" maintainer="Lev Lamberov"
<define-tag moreinfo>
<p>Выход при переполнении, но screen теряет права суперпользователя до выполнения
кода.
<p>Изначально о проблеме сообщил Khelbin <khelbin@connix.com>
<p>Программа screen 3.07.02, если она имеет флаг прав доступа, позволяющий запускать её от лица суперпользователя, возможно
вызывает переполнение буфера на некоторых платформах. Я не ознакомился со всем
исходным кодом, а лишь быстро просмотрел его. Я заметил, что attacher.c выполняет
следующее:
<pre>
struct passwd ppp;
char fullname[100];
strcpy(fullname, ppp->pw_gecos);
</pre>
<p>Мне удалось подготовить небольшой эксплоит, но он не заработал на BSDI
1.1 из-за того, что chpass/chfn не принимает некоторые символы. Таким образом, чтение
в коде командной оболочки в поле Full Name приводит к выводу сообщения об ошибке "В поле
Full Name обнаружен некорректный символ, редактировать [y]?" или чему-то
подобному.
<p>Любая операционная система или версия chfn/chpass, которые не осуществляют проверки наличия 'некорректных
символов', либо длины того, что помещается в указанное поле (BSDI 1.1
не проверяет длину, но проверяет наличие некорректных символов) могут оказаться уязвимыми (я
не проверял, теряет программа права суперпользователя или нет, я собирался проверить этой
путём переполнения буфера с помощью моей строки кода командной оболочки).
<p>Я лишь поместил мою строку кода командной оболочки в переменную ENV
(с NOP и ret-адресом обратно в NOP) и отправил
переменную ENV в файл. Затем прочитал данный файл во время нахождения в chpass/chfn
как новую информацию gecos.
</define-tag>
<define-tag description>программа "screen" имеет переполнение буфера, которое проявляется во время копирования поля gecos.</define-tag>
# do not modify the following line
#include '$(ENGLISHDIR)/security/1997/19970220.data'
|