Извлечение с grep/sed первый шаблон и затем второй шаблон, который произошел некоторые строки прежде и имел отношение к первому

Чтобы успокоить несколько, я не нашел ошибку, наблюдая за эксплуатациями, у меня есть Нет причин полагать, что это было эксплуатировано перед раскрытием (Хотя конечно, я не могу его исключить). Я не нашел это Глядя на Bash код либо.

Я не могу сказать, что в то время я помню, как именно мой поезд мыслей в то время.

Это более или менее пришло из некоторого отражения на некоторых поведении Некоторые программное обеспечение я нахожу опасно (поведение, а не програмное обеспечение). Такое поведение, которое заставляет вас думать: не звучит как хорошая идея .

В этом случае я отражал общую конфигурацию SSH, что позволяет пропускать переменные среды нецизированы из Клиент предоставил свое имя начинается с LC_ . Идея такая что люди могут продолжать использовать свой собственный язык, когда SSH в другие машины. Хорошая идея, пока вы не начнете рассмотреть Насколько сложна обработка локализации, особенно когда UTF-8 принес в уравнение (и видеть, насколько плохо это обрабатывается много приложений).

Вернувшись в июле 2014 года, я уже сообщил о уязвимости в Обработка локализации Glibc, которая в сочетании с этим SSHD config, а Два других Опасное поведение Bash Shell Допускается (аутентифицированные) злоумышленники, чтобы взломать серверы Git при условии, что они смогли загружать файлы там и Bash Используется в качестве входа в систему Shell из пользователя GIT Unix (CVE-2014-0475).

Я думал, что это, вероятно, была плохой идеей использовать Bash как вход в систему Shell из пользователей, предлагающих услуги по SSH, учитывая, что это довольно Комплексная оболочка (когда все, что вам нужно, просто разбирается очень простая командная строка) и унаследовала большинство ошибок KSH. Поскольку я уже определил несколько проблем с Bash используется в этом контексте (интерпретировать SSH Forcecommand , я был Удивительно, если бы там было потенциально больше.

ACCECTENV LC _ * позволяет любую переменную, имя которой начинается С LC_ и у меня была расплывная воспоминания, которую экспортировал Bash Функции (A опасно , хотя и на момент полезной функции) были используя переменные среды, имя которого было что-то вроде Myфункция () и было интересно, если бы не было чего-то Интересно смотреть там.

Я собирался отклонить его на том основании, что худшее Может ли сделать было бы переопределить команду под названием lc_something что не может быть проблемой, так как они не существуют Команды, но тогда я начал удивляться, как Bash импортировал те переменные среды.

Что если переменные были вызваны LC_FOO; Echo Test; f () Например? Поэтому я решил посмотреть.

A:

$ env -i bash -c 'zzz() { :;}; export -f zzz; env'
[...]
zzz=() {  :
}

показал, что моя воспоминания ошибалась в том, что переменные не были названы Myфункция () , но MSFunction (и это значение , которое начинается с () ).

и быстрый тест:

$ env 'true;echo test; f=() { :;}' bash -c :
test
bash: error importing function definition for `true;echo test; f'

подтвердил мое подозрение, что имена переменной не было дезинфицировано, И код был оценен при запуске .

Хуже, намного хуже, значение также не было дезинфицировано:

$ env 'foo=() { :;}; echo test' bash -c :
test

, что означало, что любой переменной среды может быть вектором.

Это когда я понял, что степень проблемы, подтвердила, что это было Эксплуатация также по адресу http ( http_xxx / QueryString ... Env vars), другие, такие как услуги по обработке почты, позже DHCP (и, вероятно, длинный список) и сообщил об этом (тщательно).

0
08.04.2014, 11:48
2 ответа
[1128021]Это должно выполнить трюк:

Explanation[1128447]:

:set novb

file[1128866]: файл, который содержит вы выводимый вами выше

===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 12 34 56 78 9a ...... Intel(R) 82566DM Gigabit Network Connection
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      123.45.67.1   123.45.67.137       10
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      234.254.0.0      255.255.0.0    123.45.67.137   123.45.67.137       20
      123.45.67.0    255.255.255.0    123.45.67.137   123.45.67.137       10
    123.45.67.137  255.255.255.255        127.0.0.1       127.0.0.1       10
   123.45.255.255  255.255.255.255    123.45.67.137   123.45.67.137       10
        224.0.0.0        240.0.0.0    123.45.67.137   123.45.67.137       10
  255.255.255.255  255.255.255.255    123.45.67.137   123.45.67.137       1
    Default Gateway:       123.45.67.1
===========================================================================
Persistent Routes:
  None

grep -oP "Event 100" file[1128868]: Поиск "События 100"

sed -ne 's/<\/\?AZ>///g' -e '7,9p' файл[1128870]:

sed -ne 's/<\/\?AZ>///g' -e '7,9p' файл[1128870]: Если строка найдена, удалите теги [1128871][1128872] и [1128873][1128874] и распечатайте строки с 7 по 9

awk 'BEGIN {RS=""; FS="\n";}[1128876]: установите разделитель полей awk на newline

{printf "%s %s %s %s %s\n", $3, $2, $4, $1}[1128878]: и выведите вывод в нужном порядке

Output[1128459] (если строка найдена):

If string is not found there is no output. [1128030]

0
28.01.2020, 02:37
[1128017]Я придумал этот отвратительный oneliner (разрывы строк для удобочитаемости):

C:\Windows\System32\runas.exe /storecred /user:Domain\UserName "mmc %windir%\system32\dsa.msc"

Он последовательно собирает вещи, которые выглядят как время, дата или тег ([12345]), и если возникает строка типа "Событие 100 произошло", то выводится текущее содержимое переменных. Это и есть нужный вывод?[1128020].

2
28.01.2020, 02:37

Теги

Похожие вопросы