{"id":642,"date":"2020-05-21T20:13:00","date_gmt":"2020-05-21T18:13:00","guid":{"rendered":"http:\/\/pentester.blog\/?p=642"},"modified":"2021-01-04T22:52:34","modified_gmt":"2021-01-04T21:52:34","slug":"adselfservice-plus-histoire-dune-0-day","status":"publish","type":"post","link":"https:\/\/hacktarus.fr\/?p=642","title":{"rendered":"ADSelfService Plus, histoire d&rsquo;une 0-day"},"content":{"rendered":"\n<p>Avant de rentrer dans le vif du sujet, quelques mots sur ADSelfService Plus.<\/p>\n\n\n\n<p>ADSelfService Plus est une solution de gestion de mot de passe en libre-service dans un environnement Active Directory.<\/p>\n\n\n\n<p>Ce logiciel aide les utilisateurs du domaine \u00e0 effectuer en libre-service la r\u00e9initialisation de leur mot de passe ainsi que le d\u00e9verrouillage de leur compte.<\/p>\n\n\n\n<p>Ce logiciel est r\u00e9put\u00e9 et utilis\u00e9 par un tr\u00e8s grand nombre de clients de part le monde :<\/p>\n\n\n\n<p><a href=\"https:\/\/www.manageengine.com\/products\/self-service-password\/customers.html?topMenu\">https:\/\/www.manageengine.com\/products\/self-service-password\/customers.html?topMenu<\/a><\/p>\n\n\n\n<p><em>Il \u00e9tait une fois&#8230;<\/em><\/p>\n\n\n\n<p>un matin de septembre 2019 o\u00f9 j&rsquo;ai voulu r\u00e9initialiser mon mot de passe \u00e0 l&rsquo;aide de ADSelfService Plus. Je l&rsquo;avais d\u00e9j\u00e0 fait une fois et cela avait fonctionn\u00e9 sauf que ce jour l\u00e0 le serveur h\u00e9bergeant la solution \u00e9tait down&#8230;.<\/p>\n\n\n\n<p>Au lieu d&rsquo;obtenir une erreur Windows classique, j&rsquo;avais eu une fen\u00eatre d&rsquo;erreur HTTP.<\/p>\n\n\n\n<p>Tiens ? Cela m&rsquo;a surpris, je pensais qu&rsquo;il s&rsquo;agissait d&rsquo;une application avec une GUI Windows mais non je venais de comprendre qu&rsquo;il s&rsquo;agissait d&rsquo;une application de type mini-browser web pr\u00e9sentant des pages HTML. Cela m&rsquo;a d&rsquo;autant plus intrigu\u00e9 qu&rsquo;en scrutant les processus Windows, j&rsquo;avais not\u00e9 qu&rsquo;ADSelfService Plus tournait sous l&rsquo;utilisateur Local System, int\u00e9ressant.<\/p>\n\n\n\n<p>Je me suis aussit\u00f4t dit que s&rsquo;il existait une vuln\u00e9rabilit\u00e9 sur ce logiciel, cela pourrait servir pour de l&rsquo;\u00e9l\u00e9vation de privil\u00e8ges.<\/p>\n\n\n\n<p>Du coup j&rsquo;ai regard\u00e9 c\u00f4t\u00e9 r\u00e9seau quel nom de domaine et protocole cherchait \u00e0 joindre le client ADSelfservice Plus. Un coup de netstat et c&rsquo;\u00e9tait r\u00e9gl\u00e9, j&rsquo;avais le FQDN avec le protocole, du HTTPS. <\/p>\n\n\n\n<p>Avec ces \u00e9l\u00e9ments je me suis demand\u00e9 comment allait r\u00e9agir le client ADSelfService Plus si au lieu de lui pr\u00e9senter son v\u00e9ritable serveur je lui pr\u00e9sentais un \u00ab\u00a0fake\u00a0\u00bb serveur ? <\/p>\n\n\n\n<p>Rien de plus simple sous Linux et Python que de lancer un mini serveur Web. En revanche  je me suis dit que j&rsquo;allais avoir du mal \u00e0 g\u00e9n\u00e9rer un certificat SSL valide identique \u00e0 celui du vrai serveur&#8230; il d\u00e9tecterait forc\u00e9ment une anomalie.<\/p>\n\n\n\n<p>Je me suis dit, tant pis, faisons un certificat SSL autosign\u00e9 et on verra. Bien m&rsquo;en a pris, vous allez comprendre pourquoi \ud83d\ude42<\/p>\n\n\n\n<p>Je passe sous silence le fait qu&rsquo;il m&rsquo;a aussi fallu lanc\u00e9 un fake DNS serveur zappant toutes les requ\u00eates DNS sauf celle correspondant au serveur h\u00e9bergeant ADSelfservice Plus ; le but \u00e9tant de rediriger les \u00ab\u00a0bonnes\u00a0\u00bb requ\u00eates DNS vers mon fake ADSelfService Web serveur.<\/p>\n\n\n\n<p>Voila j&rsquo;avais tout ce qui me fallait pour lancer un test. <\/p>\n\n\n\n<p>Le pr\u00e9-requis pour cette attaque \u00e9tait simplement d&rsquo;avoir un acc\u00e8s physique \u00e0 un PC \u00e9quip\u00e9 d&rsquo;ADSelfService Plus.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Je d\u00e9branche le c\u00e2ble r\u00e9seau du PC victime<\/li><li>Je place un c\u00e2ble crois\u00e9 entre ce PC et une b\u00e9cane sous Kali<\/li><li>Sous Kali je lance mon fake DNS serveur et mon fake ADSelfService Plus Web Serveur <\/li><li>Sur le PC victime je demande \u00e0 ADSelfService Plus de r\u00e9initialiser mon mot de passe<\/li><li>Sur Kali je vois les requ\u00eates DNS pass\u00e9es et celles pour ADSelfService Plus partent bien vers mon fake Web serveur, super !<\/li><li>Paf, sur le PC victime le client ADSelfService Plus est bern\u00e9 mais me toque une erreur de certificat SSL. Normal me direz-vous, mince&#8230;<\/li><\/ul>\n\n\n\n<p>Et oui c&rsquo;est normal cette erreur de certificat SSL car justement j&rsquo;ai g\u00e9n\u00e9r\u00e9 un certificat SSL auto-sign\u00e9.<\/p>\n\n\n\n<p>Et l\u00e0 je me suis dit&#8230;vu que le client ADSelfService tourne sous Local System, cette fen\u00eatre d&rsquo;alerte de certificat SSL, elle tourne aussi sous Local System, y aurait pas moyen de lancer un shell ?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image.png\" alt=\"\" class=\"wp-image-645\" width=\"655\" height=\"491\"\/><\/figure>\n\n\n\n<p>Alors j&rsquo;ai cliqu\u00e9 sur \u00ab\u00a0Afficher le certificat\u00a0\u00bb, puis dans l&rsquo;onglet \u00ab\u00a0D\u00e9tails\u00a0\u00bb :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"946\" height=\"653\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-1.png\" alt=\"\" class=\"wp-image-646\"\/><\/figure>\n\n\n\n<p>Qu&rsquo;est-ce qu&rsquo;on voit en bas de cet onglet \u00ab\u00a0D\u00e9tails\u00a0\u00bb ? <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"745\" height=\"231\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-2.png\" alt=\"\" class=\"wp-image-647\"\/><\/figure>\n\n\n\n<p>\u00ab\u00a0Copier dans un fichier&#8230;\u00a0\u00bb et voila le tour est jou\u00e9, il n&rsquo;y avait plus qu&rsquo;\u00e0 lancer un invite de commandes dans la fen\u00eatre \u00ab\u00a0Enregistrer sous&#8230;\u00a0\u00bb pour se retrouver dans un shell avec les droits <strong>\u00ab\u00a0Local System\u00a0\u00bb<\/strong> !<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"502\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-3.png\" alt=\"\" class=\"wp-image-648\"\/><figcaption><br><\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"943\" height=\"379\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-4.png\" alt=\"\" class=\"wp-image-649\"\/><\/figure>\n\n\n\n<p>C&rsquo;est dingue je me suis dit que non seulement je pouvais \u00e9lever mes privil\u00e8ges mais qu&rsquo;au final c&rsquo;\u00e9tait bien plus grave. <\/p>\n\n\n\n<p>En effet cette vuln\u00e9rabilit\u00e9 permettait de tout faire : cr\u00e9er une backdoor, ins\u00e9rer un malware, exfiltrer des donn\u00e9es utilisateurs le tout <strong>sans m\u00eame avoir besoin de s&rsquo;authentifier<\/strong> sur le poste de travail.<\/p>\n\n\n\n<p>Et oui le bonus avec ADSelfService Plus c&rsquo;est qu&rsquo;il est accessible directement sur la mire d&rsquo;authentification ! <\/p>\n\n\n\n<p>Wahou !<\/p>\n\n\n\n<p>C&rsquo;\u00e9tait si facile que je me suis dit que cette vuln\u00e9rabilit\u00e9 devait d\u00e9j\u00e0 \u00eatre connue de l&rsquo;\u00e9diteur, r\u00e9f\u00e9renc\u00e9e en tant que CVE quelque part, que je n&rsquo;avais pas la derni\u00e8re version du logiciel, etc&#8230; et bien que nenni !<\/p>\n\n\n\n<p>Je me suis donc rapproch\u00e9 de l&rsquo;\u00e9diteur et comme c&rsquo;est de plus en plus souvent le cas, il dispose d&rsquo;un programme de Bug Bounty et j&rsquo;ai ainsi d\u00e9clar\u00e9 un nouveau \u00ab\u00a0bug\u00a0\u00bb :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"869\" height=\"709\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-6.png\" alt=\"\" class=\"wp-image-652\"\/><\/figure>\n\n\n\n<p>Au bout de quelques mois (heum&#8230;), l&rsquo;\u00e9diteur m&rsquo;a r\u00e9pondu, le 16 mars 2020 exactement,  en me remerciant et en publiant une mise \u00e0 jour, la <strong>build 5814<\/strong> avec une petite mention sur cette vuln\u00e9rabilit\u00e9, <em>\u00ab\u00a0A vulnerability issue in the ADSelfService Plus login agent has been fixed\u00a0\u00bb<\/em> : <\/p>\n\n\n\n<p><a href=\"https:\/\/www.manageengine.com\/products\/self-service-password\/release-notes.html\">https:\/\/www.manageengine.com\/products\/self-service-password\/release-notes.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1097\" height=\"439\" src=\"https:\/\/hacktarus.fr\/wp-content\/uploads\/2020\/05\/image-7.png\" alt=\"\" class=\"wp-image-658\"\/><\/figure>\n\n\n\n<p>Moralit\u00e9, je passe souvent un temps consid\u00e9rable \u00e0 d\u00e9terrer de nouvelles vuln\u00e9rabilit\u00e9s mais parfois c&rsquo;est si simple, il n&rsquo;y a qu&rsquo;\u00e0 se pencher pour en trouver.<\/p>\n\n\n\n<p><em>Fin<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Avant de rentrer dans le vif du sujet, quelques mots sur ADSelfService Plus. ADSelfService Plus est une solution de gestion de mot de passe en libre-service dans un environnement Active Directory. Ce logiciel aide les utilisateurs du domaine \u00e0 effectuer en libre-service la r\u00e9initialisation de leur mot de passe ainsi que le d\u00e9verrouillage de leur &hellip; <a href=\"https:\/\/hacktarus.fr\/?p=642\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">ADSelfService Plus, histoire d&rsquo;une 0-day<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-642","post","type-post","status-publish","format-standard","hentry","category-pentest"],"_links":{"self":[{"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/posts\/642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=642"}],"version-history":[{"count":71,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/posts\/642\/revisions"}],"predecessor-version":[{"id":723,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=\/wp\/v2\/posts\/642\/revisions\/723"}],"wp:attachment":[{"href":"https:\/\/hacktarus.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hacktarus.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}