<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sharepoint - RiskInsight</title>
	<atom:link href="https://www.riskinsight-wavestone.com/tag/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/tag/sharepoint/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Wed, 15 Oct 2025 08:15:05 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>Sharepoint - RiskInsight</title>
	<link>https://www.riskinsight-wavestone.com/tag/sharepoint/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SharePoint &#038; App Registrations : Vecteur de compromission du SI et RETEX Red Team</title>
		<link>https://www.riskinsight-wavestone.com/2025/10/sharepoint-app-registrations-vecteur-de-compromission-du-si-et-retex-red-team/</link>
					<comments>https://www.riskinsight-wavestone.com/2025/10/sharepoint-app-registrations-vecteur-de-compromission-du-si-et-retex-red-team/#respond</comments>
		
		<dc:creator><![CDATA[Nathan HAMARD]]></dc:creator>
		<pubDate>Wed, 15 Oct 2025 08:15:00 +0000</pubDate>
				<category><![CDATA[Eclairage]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[App Registrations]]></category>
		<category><![CDATA[compromission]]></category>
		<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[Detection]]></category>
		<category><![CDATA[Elevation des privileges]]></category>
		<category><![CDATA[EntraID]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[protection]]></category>
		<category><![CDATA[red team]]></category>
		<category><![CDATA[RETEX]]></category>
		<category><![CDATA[RETEX Red Team]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=27926</guid>

					<description><![CDATA[<p>Alors que les environnements Active Directory on-premise se renforcent face aux menaces (modèle en tiers, segmentation réseau, bastions d&#8217;administration, durcissement des contrôleurs de domaine), une nouvelle composante est aujourd’hui exploitée par les attaquants pour compromettre leurs cibles&#160;: les ressources cloud,...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/10/sharepoint-app-registrations-vecteur-de-compromission-du-si-et-retex-red-team/">SharePoint &amp; App Registrations : Vecteur de compromission du SI et RETEX Red Team</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;">Alors que les environnements Active Directory on-premise se renforcent face aux menaces (modèle en tiers, segmentation réseau, bastions d&rsquo;administration, durcissement des contrôleurs de domaine), une nouvelle composante est aujourd’hui exploitée par les attaquants pour compromettre leurs cibles&nbsp;: les ressources cloud, et notamment les <em>App Registrations</em> associées aux services Microsoft 365.</p>
<p style="text-align: justify;">Par défaut sous-estimées par les équipes techniques internes et de défense, souvent sur-privilégiées, les <em>App registrations</em> peuvent permettre des pivots puissants suite à la compromission de l’environnement cloud.</p>
<p style="text-align: justify;">Parmi les services les plus exposés, <em>Microsoft SharePoint</em> se distingue. Présent sur la majorité des tenants M365, souvent configuré de manière permissive, il offre un <strong>accès aux fichiers de l’entreprise via SharePoint et des collaborateurs au travers de OneDrive</strong>.</p>
<p style="text-align: justify;">Cet article revient sur plusieurs constats observés en opération Red Team&nbsp;: comment une simple<em> App Registration</em>, liée de près ou de loin à SharePoint, peut offrir un accès élargi à votre SI on-premise, et comment l’exploitation de ce maillon faible permet parfois de faire de votre segmentation en Tiers une simple formalité pour l&rsquo;attaquant.</p>
<p style="text-align: justify;">&nbsp;</p>
<h2 class="Title2" style="text-align: justify;"><span lang="FR">Introduction aux App Registrations</span></h2>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Dans Microsoft Azure, l’enregistrement d’une application (<em>App Registration</em>) dans Entra ID permet de créer une identité pour cette application, ainsi qu’une <em>Enterprise Application</em> associée. L’<em>App Registration</em> définit l’application (identifiants, clés, permissions), tandis que l’<em>Enterprise Application</em> représente son instance dans le tenant, sur laquelle sont appliquées les politiques d’accès (comme l’authentification conditionnelle portée par les politiques d’accès conditionnels ou les rôles attribués).</p>
<p style="text-align: justify;">Une <em>App Registration</em> contient les informations requises pour s’authentifier auprès d’Entra ID et obtenir des jetons d’accès pour interagir avec des services Microsoft 365 via des API comme Microsoft Graph. Selon les permissions qui lui sont accordées (déléguées (scopes) ou applicatives (rôles)) elle peut lire ou modifier des ressources telles que des mails, des fichiers, des utilisateurs ou des groupes tant que l’<em>Enterprise Application</em> est instanciée dans le tenant.</p>
<p style="text-align: justify;">&nbsp;</p>
<figure id="attachment_27932" aria-describedby="caption-attachment-27932" style="width: 1527px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-27932 " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/1.png" alt="App Registration dans EntraID" width="1527" height="796" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/1.png 1452w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/1-366x191.png 366w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/1-71x37.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/1-768x400.png 768w" sizes="(max-width: 1527px) 100vw, 1527px" /><figcaption id="caption-attachment-27932" class="wp-caption-text"><em>App Registration dans EntraID</em></figcaption></figure>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Généralement utilisées pour enregistrer une application visant à automatiser des processus métiers (gestion des utilisateurs, nettoyage de fichiers SharePoint, supervision de l’activité O365…), elles constituent une <strong>surface peu surveillée</strong>, mais à fort impact.</p>
<p style="text-align: justify;">En effet, les secrets des <em>App Registrations</em> (certificats, client secrets) sont souvent stockés de manière non sécurisée (dans des dépôts de code, postes de travails, serveurs). Ces secrets permettent de personnifier une application avec des privilèges potentiellement élevés (listés dans l’<em>App Registration</em>) entraînant une<strong> persistance discrète sur les ressources de l’entreprise.</strong></p>
<p style="text-align: justify;">Pour un attaquant, compromettre une <em>App Registration</em> revient à <strong>s’approprier une identité applicative EntraID disposant d’un accès direct à certaines données de l&rsquo;entreprise</strong>, sans nécessiter de rebond par des comptes utilisateurs interactifs ni MFA. Alors que les sécurités se multiplient autour des comptes utilisateurs (MFA obligatoire, accès conditionnel imposant une adresse IP ou un appareil de confiance), il est souvent constaté que celles-ci ne sont pas encore appliquées aux applications.</p>
<p style="text-align: justify;">&nbsp;</p>
<h3 class="Title3" style="text-align: justify;"><span lang="FR">Se connecter en tant qu&rsquo;une App Registration</span></h3>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Les <strong>applications Azure</strong> peuvent s’authentifier auprès d’Entra ID à l’aide de secrets d’application générés dans <strong>l’App registration</strong> associée&nbsp;:</p>
<ul style="text-align: justify;">
<li>
<p><em><span style="text-decoration: underline;">AppId + App Secret</span>: </em>Ce moyen d’authentification, équivalent à l’usage d’un nom d’utilisateur et d’un mot de passe est soumis aux mêmes limitations&nbsp;: il est <strong>compliqué d’assurer leur protection</strong> car ils peuvent facilement se retrouver stockés de manière non sécurisée, exposés dans les historiques de commandes, etc…</p>
</li>
<li>
<p><em><span style="text-decoration: underline;">AppId + Certificat</span>: </em>Cette méthode de connexion est davantage sécurisée, puisque les solutions de sécurité installées sur les machines protègent de manière efficace les certificats installés. Néanmoins, celle-ci est généralement moins utilisée en raison des contraintes d&rsquo;utilisation qu&rsquo;elle implique, telle que l&rsquo;installation du certificat sur chaque machine nécessitant l&rsquo;utilisation du compte.</p>
</li>
</ul>
<p style="text-align: justify;">&nbsp;</p>
<figure id="attachment_27934" aria-describedby="caption-attachment-27934" style="width: 1480px" class="wp-caption aligncenter"><img decoding="async" class=" wp-image-27934" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2-437x160.png" alt="Certificats et secrets de l'App Registration" width="1480" height="542" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2-437x160.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2-71x26.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2-768x281.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2-1536x563.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/2.png 1801w" sizes="(max-width: 1480px) 100vw, 1480px" /><figcaption id="caption-attachment-27934" class="wp-caption-text"><em>Certificats et secrets de l&rsquo;App Registration</em></figcaption></figure>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Les identifiants et secrets d&rsquo;une application lui permettent de récupérer un jeton d’accès <em>OAuth2</em>, afin de s’authentifier et d’appeler des API Microsoft (Graph, SharePoint, Exchange, etc.) qu&rsquo;elle est autorisée à contacter. Ce mode de connexion est généralement difficile à détecter si les journaux d’accès ne sont pas activés ni supervisés.</p>
<p style="text-align: justify;">&nbsp;</p>
<h3 class="Title3" style="text-align: justify;"><span lang="FR">Les droits d&rsquo;une App Registration</span></h3>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Chaque <em>App Registration</em> définit les <strong>permissions API associées à l’application enregistrée</strong>. Elles sont décrites sous forme de rôles ou de scopes, sur différents services Microsoft. A titre d’exemples, ces autorisations d’application peuvent permettre de&nbsp;:</p>
<ul style="text-align: justify;">
<li>Lire ou modifier des profils utilisateurs (<em>User.ReadWrite.All</em>)&nbsp;;</li>
<li>Gérer des objets dans l’annuaire Entra ID (<em>Directory.ReadWrite.All</em>)&nbsp;;</li>
<li>Lire, écrire ou supprimer des fichiers SharePoint ou OneDrive (<em>Files.ReadWrite.All</em>)&nbsp;;</li>
<li>Lire ou écrire des mails dans toutes les boîtes mails (<em>Mail.ReadWrite</em>)&nbsp;;</li>
<li>Etc.</li>
</ul>
<p style="text-align: justify;">Lors des audits, il est constaté que ces droits sont <strong>souvent surdimensionnés</strong> par rapport aux besoins réels des applications. Ils peuvent ainsi offrir à un attaquant un <strong>levier d’élévation de privilèges majeur</strong> s’ils sont récupérés.</p>
<p style="text-align: justify;">D’autre part, un attaquant peut <strong>identifier les droits d’une application au travers de l’</strong><em>App Registration</em><strong> associée et compromise</strong> en s’authentifiant via l’URL <a href="https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token"><span style="color: #000080;">https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token</span></a><span style="color: #000080;">&nbsp;</span>:</p>
<p style="text-align: justify;">&nbsp;</p>
<figure id="attachment_27936" aria-describedby="caption-attachment-27936" style="width: 1423px" class="wp-caption aligncenter"><img decoding="async" class=" wp-image-27936" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3-437x128.png" alt="Récupération d’un jeton d’accès à l’API Microsoft Graph" width="1423" height="417" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3-437x128.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3-71x21.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3-768x225.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3-1536x451.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/3.png 1667w" sizes="(max-width: 1423px) 100vw, 1423px" /><figcaption id="caption-attachment-27936" class="wp-caption-text"><em>Récupération d’un jeton d’accès à l’API Microsoft Graph</em></figcaption></figure>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">Le jeton d’accès obtenu est au format <em>base64</em>, et les droits définis par l’App Registration y sont présents&nbsp;:</p>
<p style="text-align: justify;">&nbsp;</p>
<figure id="attachment_27997" aria-describedby="caption-attachment-27997" style="width: 720px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27997 " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/4.png" alt="Récupération des droits de l’App Registration compromiseRécupération des droits de l’App Registration compromise" width="720" height="602" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/4.png 1035w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/4-229x191.png 229w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/4-47x39.png 47w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/4-768x642.png 768w" sizes="auto, (max-width: 720px) 100vw, 720px" /><figcaption id="caption-attachment-27997" class="wp-caption-text"><em>Récupération des droits de l’App Registration compromiseRécupération des droits de l’App Registration compromise</em></figcaption></figure>
<p style="text-align: justify;">&nbsp;</p>



<h2 style="text-align: justify;">Compromission d&rsquo;App Registrations en opération Red Team</h2>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Dans le cadre d&rsquo;une attaque, il est très fréquent que la compromission s&rsquo;opère de manière progressive.</p>
<p style="text-align: justify;">Généralement, un premier serveur est compromis, puis un second, etc. jusqu&rsquo;à atteindre des composants plus critiques de l&rsquo;infrastructure ou des utilisateurs davantage privilégiés : accès initial, élévation de privilèges, latéralisation, et ainsi de suite.</p>
<p style="text-align: justify;">Ces dernières années, l&rsquo;implémentation du modèle en Tiers (Tier-0, Tier-1 et Tier-2) au sein des infrastructures Active Directory s&rsquo;est généralisée, avec par la même occasion une augmentation du niveau de sécurité des SI on-premise. Un nouveau facteur s’est également ajouté avec le développement des agents EDR : la détection !</p>
<p style="text-align: justify;">Dorénavant au sein d&rsquo;environnements matures, il est plus difficile de compromettre le Tier-0 (contrôleur de domaine, PKI, etc.) par la simple compromission d&rsquo;un serveur Tier-1, le tout sans se faire détecter par la Blue Team, l’équipe de défense.</p>
<p style="text-align: justify;">Toutefois, au cours de plusieurs opérations au sein d&rsquo;environnement très variés, SharePoint s&rsquo;est présenté comme un vecteur d&rsquo;élévation de privilèges redoutable, et où <strong>aucune détection</strong> n&rsquo;a été remontée côté Blue Team.</p>
<p style="text-align: justify;">Plusieurs retours d&rsquo;expériences d&rsquo;opérations Red Team illustrant ce propos sont partagés ci-dessous.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Cas n°1 : Administrateur Tier-2 d&rsquo;un sous-domaine vers la compromission de la forêt Active Directory</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Ce cas illustre une opération pour un client international dont le SI se compose de plusieurs milliers de serveurs, qu&rsquo;il s&rsquo;agisse de serveurs applicatifs et métiers, industriels, d&rsquo;infrastructure, etc. La compromission d&rsquo;un premier serveur a engendré la <strong>compromission de comptes administrateurs Tier-1 puis Tier-2</strong>.</p>
<p style="text-align: justify;">Dès l’obtention de privilèges d’administration acquis sur des postes de travail (Tier-2), une phase de collecte ciblée s&rsquo;est amorcée dans le but d’identifier des secrets applicatifs.</p>
<p style="text-align: justify;">Sur plusieurs postes d’utilisateurs à profil technique (équipes DevOps, Cloud, etc.), des scripts PowerShell sont découverts. Certains contiennent des <strong>identifiants liés à des App Registrations</strong>, avec un <em>AppId</em>, un <em>AppSecret</em>, ainsi que l&rsquo;identifiant du tenant Azure auquel ils sont associés :</p>
<p style="text-align: justify;"> </p>
<figure id="attachment_27940" aria-describedby="caption-attachment-27940" style="width: 1570px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27940 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5.png" alt="Script PowerShell contenant les identifiants de l'App Registration" width="1570" height="1066" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5.png 1570w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5-281x191.png 281w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5-57x39.png 57w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5-768x521.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/5-1536x1043.png 1536w" sizes="auto, (max-width: 1570px) 100vw, 1570px" /><figcaption id="caption-attachment-27940" class="wp-caption-text"><em>Script PowerShell contenant les identifiants de l&rsquo;App Registration</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">L’exploitation de ces secrets permet à l’attaquant de <strong>se connecter directement à la </strong><em>Microsoft Graph API</em>, avec les autorisations déjà consenties définies dans l’<em>App Registration</em> compromise.</p>
<p style="text-align: justify;">L’<em>App Registration</em> identifiée dans ce contexte contient des droits d’application étendus sur O365, notamment :</p>
<ul style="text-align: justify;">
<li><em>User.ReadWrite.All</em>: Lire et modifier tous les profils utilisateurs.</li>
<li><em>Directory.Read.All</em>: Lire les données du répertoire.</li>
<li><em>Directory.ReadWrite.All</em>: Lire et écrire les données du répertoire.</li>
<li><em>Group.ReadWrite.All</em>: Lire et écrire toutes les informations des groupes.</li>
<li><span style="color: #ff0000;"><em>Files.ReadWrite.All</em>:</span> Lire et écrire tous les fichiers.</li>
<li><em>Mail.ReadWrite</em>: Lire, créer, supprimer des mails en toutes les boîtes mails.</li>
<li><em>Calendars.ReadWrite</em>: Lire et écrire tous les calendriers.</li>
<li><em>Contacts.ReadWrite</em>: Lire et écrire tous les contacts.</li>
<li><em>Tasks.ReadWrite</em>: Lire et écrire toutes les tâches.</li>
</ul>
<p style="text-align: justify;">Parmi cet ensemble de permissions d’application, le droit <em>Files.ReadWrite.All</em> s’avère <strong>particulièrement critique et intéressant pour un attaquant</strong>, autorisant un accès complet à tous les fichiers stockés sur <em>SharePoint</em> et <em>OneDrive</em>.</p>
<p style="text-align: justify;"><em><strong><span style="text-decoration: underline;">Note :</span></strong> Ces permissions peuvent être « déléguées » et dans ce cas ne s’appliquent que dans le contexte de ce que peut faire l’utilisateur.</em></p>
<p style="text-align: justify;">Un script PowerShell a été développé par l&rsquo;équipe Red Team Wavestone <span style="color: #000080;">(<a style="color: #000080;" href="https://github.com/Ethical-Kaizoku/SharePwned">SharePwned</a>)</span> afin d&rsquo;effectuer des recherches sur SharePoint et OneDrive basées sur des mots-clefs, et télécharger les fichiers souhaités.</p>
<p style="text-align: justify;">Par le biais de ce script et via une <strong>recherche sur le nom de domaine de la forêt d&rsquo;administration Active Directory</strong> (<em>admin.xx.xxxx.net</em>), plusieurs fichiers ont été identifiés au sein d&rsquo;espaces OneDrive d&rsquo;utilisateurs, puis téléchargés :</p>
<p style="text-align: justify;"> </p>
<figure id="attachment_27942" aria-describedby="caption-attachment-27942" style="width: 1988px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27942 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR.png" alt="Identification dans OneDrive de fichiers contenant des secrets" width="1988" height="361" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR.png 1988w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR-437x79.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR-71x13.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR-768x139.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/6-FR-1536x279.png 1536w" sizes="auto, (max-width: 1988px) 100vw, 1988px" /><figcaption id="caption-attachment-27942" class="wp-caption-text"><em>Identification dans OneDrive de fichiers contenant des secrets</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<figure id="attachment_27944" aria-describedby="caption-attachment-27944" style="width: 635px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27944 " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/7.png" alt="Récupération de comptes sur la forêt d’administration AD" width="635" height="414" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/7.png 1398w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/7-293x191.png 293w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/7-60x39.png 60w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/7-768x500.png 768w" sizes="auto, (max-width: 635px) 100vw, 635px" /><figcaption id="caption-attachment-27944" class="wp-caption-text"><em>Récupération de comptes sur la forêt d’administration AD</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Ces fichiers, stockés sur l&rsquo;espace OneDrive d&rsquo;utilisateurs à privilèges, permettent d&rsquo;identifier les <strong>serveurs de rebond utilisés pour accéder à la forêt Active Directory d&rsquo;administration du SI</strong>.</p>
<p style="text-align: justify;">Le <strong>stockage non sécurisé des secrets</strong> sur les postes de travail et espaces Cloud représente une faille de sécurité majeure. Pour autant, l&rsquo;absence de sécurité et de supervision autour de cette <em>App Registration</em> liée à d’importants privilèges représente une vulnérabilité critique dès lors qu’une <em>Enterprise Application</em> associée est instanciée dans le tenant.</p>
<p style="text-align: justify;">Dans le cas présent, la compromission du Tier-2, puis l&rsquo;accès en lecture aux fichiers stockés sur les espaces OneDrive des collaborateurs a permis d&rsquo;<strong>identifier rapidement les secrets et rebonds réseaux nécessaires à la compromission du Tier-0 de l&rsquo;entreprise</strong>.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Cas n°2 : Accès distant au réseau d&rsquo;entreprise du Groupe à partir de la compromission d&rsquo;une filiale</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Ce second cas présente une opération Red Team ciblant une entreprise disposant de nombreuses filiales et dont les réseaux ne communiquent pas entre eux.</p>
<p style="text-align: justify;">Tout d&rsquo;abord, le SI d&rsquo;une <strong>première filiale a été compromis</strong>, ainsi que son tenant Azure.</p>
<p style="text-align: justify;">A des fins de persistances et de recherches, une <em>App Registration</em> a alors été créée par la Red Team, tout en ajoutant l’autorisation d’application <em>Files.Read.All.</em></p>
<p style="text-align: justify;">En téléchargeant les secrets de l&rsquo;application lors de sa création, il est une nouvelle fois possible d&rsquo;utiliser l&rsquo;outil développé par la RT Wavestone pour effectuer des recherches SharePoint et OneDrive :</p>
<p style="text-align: justify;"> </p>
<figure id="attachment_27946" aria-describedby="caption-attachment-27946" style="width: 1920px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27946 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR.png" alt="Découverte de secrets dans les espaces OneDrive d’utilisateurs" width="1920" height="344" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR.png 1920w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR-437x78.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR-71x13.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR-768x138.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/8-FR-1536x275.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><figcaption id="caption-attachment-27946" class="wp-caption-text"><em>Découverte de secrets dans les espaces OneDrive d’utilisateurs</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">En effectuant des recherches de mots de passe, des <strong>comptes associés à des solutions d’accès distants</strong> à l&rsquo;entreprise cible du Red Team sont identifiés. En effet, certains membres des équipes Finance de la filiale compromise disposent d’<strong>accès à la solution de bureau distant du groupe</strong>, et stockent leur mot de passe en clair sur leur espace OneDrive.</p>
<p style="text-align: justify;">Bien qu&rsquo;un MFA soit configuré pour l&rsquo;ensemble des utilisateurs de cette solution, seule une approbation de la notification est requise, et aucun code n&rsquo;est demandé. En noyant les utilisateurs de notifications MFA, l’un d’eux a finalement validé l’authentification, permettant aux opérateurs Red Team <strong>d’accéder temporairement à la solution de bureau distant.</strong></p>
<p style="text-align: justify;">Finalement, en accédant à l&rsquo;application de Finance hébergée sur une machine virtuelle Windows, un <strong>accès au réseau interne du groupe</strong> est récupéré.</p>
<p style="text-align: justify;">Ainsi, à partir d&rsquo;une compromission de filiale sans interconnexion directe avec le réseau groupe, l&rsquo;usage d&rsquo;<em>App Registrations</em> a permis une fois encore de <strong>découvrir des secrets et rebondir sur le SI groupe</strong>.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Cas n°3 : Compromission de l&rsquo;EDR déployé sur les contrôleurs de domaine à partir de la chaîne CICD</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">La compromission de l’environnement CICD du client (hébergé sur AWS) a mené à la compromission de son serveur <em>GitLab</em>. Avec les droits <em>root</em> sur le serveur <em>GitLab</em>, il est possible d&rsquo;accéder à sa base de données, et aux secrets qui y sont stockés. Bien que ceux-ci soient chiffrés, il est possible de les déchiffrer via la console <em>GitLab Rails</em>.</p>
<p style="text-align: justify;">Parmi ces secrets, des <em>clientID</em> et <em>clientSecrets</em> Azure d’une App Registration sont récupérés. Ces identifiants d&rsquo;accès permettent de se connecter à Azure sous l’identité de l’application associée, dans le cas présent sous l’identité de l’application <em>GitLab</em>.</p>
<p style="text-align: justify;">Sur le tenant client, l’application <em>GitLab</em> dispose d’un rôle de <strong>contributeur</strong> sur les ressources d’une souscription Azure. Cela signifie qu’elle peut <strong>gérer les accès</strong> aux ressources, et en <strong>lire le contenu</strong>.</p>
<p style="text-align: justify;">Parmi les ressources accessibles, des secrets sont stockés (et accessibles en lecture) dans un coffre-fort Azure Vault. En particulier, des <em>clientId</em> et <em>clientSecret</em> y sont présents :</p>
<p style="text-align: justify;"> </p>
<figure id="attachment_27948" aria-describedby="caption-attachment-27948" style="width: 1931px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27948 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9.png" alt="Exfiltration des secrets d’une App Registration dans un Vault" width="1931" height="809" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9.png 1931w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9-437x183.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9-768x322.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/9-1536x644.png 1536w" sizes="auto, (max-width: 1931px) 100vw, 1931px" /><figcaption id="caption-attachment-27948" class="wp-caption-text"><em>Exfiltration des secrets d’une App Registration dans un Vault</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Une nouvelle application Azure, nommée <em>xxxxx-NettoyageSharePoint</em>, est ainsi obtenue. Celle-ci possède les permissions nécessaires pour <strong>lire l’intégralité de SharePoint et OneDrive</strong>.</p>
<p style="text-align: justify;">En utilisant une première version de l&rsquo;outil <em>SharePwned</em>, une recherche de secrets est effectuée au sein des espaces OneDrive des collaborateurs. Des secrets stockés de manière non sécurisée sont découverts dans des fichiers de configuration d’outils d’administration, tels que <em>mRemoteNg</em>. Ces fichiers de configuration contiennent généralement des mots de passe <strong>chiffrés avec une clé publique connue</strong>. Ainsi, il est possible de les <strong>déchiffrer et obtenir les mots de passe en clair</strong> des utilisateurs :</p>
<p style="text-align: justify;"> </p>
<figure id="attachment_27950" aria-describedby="caption-attachment-27950" style="width: 1927px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-27950 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10.png" alt="Obtention de secrets stockés de manière non sécurisée dans OneDrive" width="1927" height="165" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10.png 1927w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10-437x37.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10-71x6.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10-768x66.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10-1536x132.png 1536w, https://www.riskinsight-wavestone.com/wp-content/uploads/2025/10/10-1920x165.png 1920w" sizes="auto, (max-width: 1927px) 100vw, 1927px" /><figcaption id="caption-attachment-27950" class="wp-caption-text"><em>Obtention de secrets stockés de manière non sécurisée dans OneDrive</em></figcaption></figure>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Le compte récupéré ici dispose de <strong>privilèges d&rsquo;administration sur l&rsquo;application IAM</strong> de l&rsquo;entreprise.</p>
<p style="text-align: justify;">Après de multiples <strong>recherches de documentations</strong> sur SharePoint, toujours en utilisant l&rsquo;outil <em>SharePwned</em> afin de cibler les recherches, l&rsquo;équipe Red Team a pu comprendre les moyens d’intervention de l’équipe SOC sur le Système d’Information, les coffres-forts où sont stockés leurs secrets, et les droits nécessaires pour y accéder.</p>
<p style="text-align: justify;">Alors, en utilisant le compte administrateur de l’IAM récupéré dans OneDrive, une attaque se basant sur les procédures d’intervention du SOC a été réalisée pour <strong>compromettre </strong><strong>intégralement le Système d&rsquo;Information</strong> on-premise du client.</p>
<p style="text-align: justify;">Dans ce cas de figure également, des recherches ciblées sur SharePoint et OneDrive ont permis de <strong>récupérer de l&rsquo;information technique très intéressante pour un attaquant</strong>, notamment l&rsquo;agent EDR déployé sur les DC, les secrets nécessaires à son utilisation, les droits à s&rsquo;attribuer pour y accéder.</p>
<p style="text-align: justify;">Au-delà des mots de passe récupérés (chiffrés ou non) dans l’ensemble des scénarios précédemment décrits, SharePoint et OneDrive représentent un <strong>accès à la connaissance du SI</strong> pour l’attaquant. Lorsque l’attaquant se veut discret, il doit <strong>reproduire au mieux les flux métiers et d’administrations légitimes de l’entreprise</strong>. Le prérequis à cela est tout d’abord de les connaître, pour ensuite les comprendre et les appliquer.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Protéger et détecter les usages malveillants des App Registrations</h2>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Comme énoncé précédemment, SharePoint et OneDrive ont permis l’obtention de secrets relativement sensibles et compromettants pour les SI clients. Il reste donc primordial de <strong>sensibiliser les collaborateurs</strong> au stockage sécurisé des secrets et de les outiller à ces mêmes fins.</p>
<p style="text-align: justify;">Malgré cela, il convient d’appliquer des processus et des mesures de sécurité à ces applications afin de leur faire respecter les <strong>principes de moindre privilège</strong> et de <strong>défense en profondeur</strong>. Ci-dessous sont listées des recommandations à appliquer à ces App Registrations.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Revue régulière et principe de moindre privilège</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Il convient d’<strong>inventorier</strong> les applications disposant des permissions sur SharePoint et <strong>restreindre ces applications au strict minimum</strong>. Les permissions en question sont les suivantes :</p>
<ul style="text-align: justify;">
<li>Sites.Read.All;</li>
<li>Sites.ReadWrite.All;</li>
<li>Sites.FullControl;</li>
<li>Files.Read.All;</li>
<li>Files.ReadWrite.All.</li>
</ul>
<p style="text-align: justify;">Au même titre que pour les utilisateurs et groupes à privilèges, une <strong>revue régulière</strong> de ces <em>App</em> <em>Registrations</em> est nécessaire.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Gestion et supervision des secrets</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Afin d&rsquo;éviter que des <em>App Secret</em> ne se retrouvent stockés de manière non sécurisée (au sein de scripts, documentations, mails, etc.), il est recommandé de <strong>préférer l&rsquo;usage de certificats de connexion</strong>.</p>
<p style="text-align: justify;">De manière générale, <strong>les secrets</strong> de connexion doivent faire l&rsquo;objet d&rsquo;un<strong> renouvellement régulier et automatisé</strong>.</p>
<p style="text-align: justify;">La création d’une <em>App Registration</em> génère automatiquement la création d’une <em>Enterprise Application</em>. Lorsque celle-ci se voit attribuer des permissions de lecture sur SharePoint, un consentement de la part d&rsquo;un <em>Global Administrator</em> est nécessaire. Il n&rsquo;est ainsi pas trivial pour un attaquant de créer ce type d&rsquo;applications privilégiées et l&rsquo;ajout d&rsquo;un secret à une application existante à privilèges sera souvent préférée par l’attaquant.</p>
<p style="text-align: justify;">Il convient donc de <strong>superviser la création de nouveaux secrets de connexion sur les applications à privilèges</strong>.</p>
<p style="text-align: justify;"> </p>
<h3 style="text-align: justify;">Réduire la surface d’exposition</h3>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Enfin, il est recommandé de <strong>limiter les capacités d&rsquo;utilisation de ces applications</strong>. Il peut s&rsquo;agir de <strong>restrictions sur l&rsquo;adresse IP</strong> source ou encore sur les <strong>plages horaires</strong> d&rsquo;utilisation de l&rsquo;application.</p>
<p style="text-align: justify;"><em><span style="text-decoration: underline;"><strong>Note :</strong></span> Il n’est pas toujours nécessaire d’appliquer ces mesures en mode « bloquant ». En effet, une détection sans blocage peut déjà permettre à la Blue Team de prendre connaissance de l’attaque et amorcer sa réponse.</em></p>






<p>Cet article <a href="https://www.riskinsight-wavestone.com/2025/10/sharepoint-app-registrations-vecteur-de-compromission-du-si-et-retex-red-team/">SharePoint &amp; App Registrations : Vecteur de compromission du SI et RETEX Red Team</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2025/10/sharepoint-app-registrations-vecteur-de-compromission-du-si-et-retex-red-team/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
