{"id":2293,"date":"2022-09-19T13:37:30","date_gmt":"2022-09-19T11:37:30","guid":{"rendered":"https:\/\/www.dsecbypass.com\/?p=2293"},"modified":"2024-02-07T10:49:39","modified_gmt":"2024-02-07T09:49:39","slug":"windchill-vulnerability","status":"publish","type":"post","link":"https:\/\/www.dsecbypass.com\/en\/windchill-vulnerability\/","title":{"rendered":"Windchill vulnerability"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/www.dsecbypass.com\/wp-content\/uploads\/2022\/07\/PTC_Windchill-300&#215;69.png&#8221; alt=&#8221;keyshot logo&#8221; title_text=&#8221;PTC_Windchill&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;RGBA(255,255,255,0)&#8221; width=&#8221;50%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p style=\"text-align: justify;\">Vladimir had the opportunity to test the security of the <a href=\"https:\/\/www.ptc.com\/fr\/products\/windchill\" target=\"_blank\" rel=\"noopener\" title=\"Link to Windchill published by PTC\">Windchill PLM<\/a> software published by PTC during an intrusion test mission.<\/p>\n<p style=\"text-align: justify;\">Using basic <a href=\"https:\/\/www.dsecbypass.com\/en\/website-pentest\/\" title=\"pentest website security audit\">website security auditing<\/a> techniques, he discovered a vulnerability affecting all versions of the software. It allowed him to read the configuration files accessible in the application folder.<\/p>\n<p style=\"text-align: justify;\">These files, if badly configured, can contain service accounts in plain text, and thus allow an attacker to pivot in the Information System.<\/p>\n<p style=\"text-align: justify;\">The <a href=\"https:\/\/www.ptc.com\/en\/support\/article\/CS375403\" target=\"_blank\" rel=\"noopener\" title=\"PTC Security Advisory\">Security Advisory of the vulnerability<\/a> is available on the PTC&#8217;s support interface.<\/p>\n<p>[\/et_pb_text][et_pb_text module_id=&#8221;sauvegarder&#8221; _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2 class=\"part\" data-startline=\"14\" data-endline=\"14\">URL Fuzzing<\/h2>\n<p style=\"text-align: justify;\">An essential step during a pentest is the discovery and enumeration of the exposed applications. On a web interface, this will usually result in a bruteforce of files and folders.<\/p>\n<p style=\"text-align: justify;\">The most used tools for this purpose are <a href=\"https:\/\/www.kali.org\/tools\/dirbuster\/\" target=\"_blank\" rel=\"noopener\" title=\"File bruteforcing website security audit\">Dirbuster<\/a>, <a href=\"https:\/\/www.kali.org\/tools\/gobuster\/\" target=\"_blank\" rel=\"noopener\" title=\"File bruteforcing website pentest\">Gobuster<\/a>, <a href=\"https:\/\/www.kali.org\/tools\/wfuzz\/\" target=\"_blank\" rel=\"noopener\" title=\"Folders bruteforcing website penetration test\">wfuzz<\/a> or <a href=\"https:\/\/portswigger.net\/burp\/documentation\/desktop\/tools\/intruder\/using\" target=\"_blank\" rel=\"noopener\" title=\"Using Burp to enumerate files and folders\">Burp<\/a> with its Intruder.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dsecbypass.com\/wp-content\/uploads\/2022\/07\/burp_fuzzing.png\" alt=\"Fuzzing with Burp Intruder\" class=\"wp-image-2278 size-full\" width=\"548\" height=\"294\" srcset=\"https:\/\/www.dsecbypass.com\/wp-content\/uploads\/2022\/07\/burp_fuzzing.png 548w, https:\/\/www.dsecbypass.com\/wp-content\/uploads\/2022\/07\/burp_fuzzing-480x258.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 548px, 100vw\" \/><\/p>\n<p style=\"text-align: justify;\">It is a dictionary attack: a list of known paths and files is given to these tools, which will make an HTTP request to the server to determine if the item exists.<\/p>\n<p style=\"text-align: justify;\">The dictionaries used by our pentesters are numerous and depend on the technologies used by the clients. However, the <a href=\"https:\/\/github.com\/Bo0oM\/fuzz.txt\/blob\/master\/fuzz.txt\" target=\"_blank\" rel=\"noopener\" title=\"Bruteforce dictionary of files and folders\">fuzz.txt<\/a> file remains a safe bet and has proven itself on many missions.<\/p>\n<p style=\"text-align: justify;\">Many &#8220;modern&#8221; technologies do not expose the file system directly and instead interpret the URL in terms of application routes. We will rather talk about URL <em>fuzzing<\/em> even if the technique remains the same. A very common case is URL fuzzing on a REST API to discover <a href=\"https:\/\/github.com\/danielmiessler\/SecLists\/blob\/master\/Discovery\/Web-Content\/common-api-endpoints-mazen160.txt\" target=\"_blank\" rel=\"noopener\" title=\"API fuzzing dictionary example\">exposed actions and objects<\/a>.<\/p>\n<p style=\"text-align: justify;\"><em>Fuzzing<\/em> as many paths as possible generally pays off and allows you to discover new functionalities, generate application errors or find vulnerabilities such as inclusion\/arbitrary file reading (LFI).<\/p>\n<p>[\/et_pb_text][et_pb_text module_id=&#8221;virus&#8221; _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>Discovery of the vulnerability<\/h2>\n<p style=\"text-align: justify;\">The pentester, authenticated on Windchill, observes the requests that pass between his browser and the website thanks to an offensive proxy: an HTML page generates many transparent requests for the user. For example the downloading of images, JavaScript files, but also requests essential to the operation of the application such as an API call. All these calls are made on very specific URLs that the pentester undertakes to fuzz.<br \/>After several routes that yielded nothing, one of the URLs looks promising: the application responded with an HTTP code 200 to an entry from fuzz.txt. The entry in question is as follows:<\/p>\n<blockquote>\n<pre>\/WEB-INF\/web.xml<\/pre>\n<\/blockquote>\n<p style=\"text-align: justify;\">Connoisseurs will have recognized the path to the configuration file of a Java web application. Although not directly accessible, the Windchill developers seem to have misconfigured the <a href=\"https:\/\/WINDCHILLURL\/Windchill\/protocolAuth\/\">https:\/\/WINDCHILLURL\/Windchill\/vulnerable\/path\/<\/a> route and expose the server file system behind the vulnerable servlet!<\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_text module_id=&#8221;mobiles&#8221; _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>The vulnerability<\/h2>\n<p style=\"text-align: justify;\">By accessing the filesystem behind the vulnerable servlet, the attacker actually lands in the <a href=\"https:\/\/support.ptc.com\/help\/wnc\/r12.0.0.0\/en\/index.html#page\/Windchill_Help_Center%2FWCCG_Oview_WCDevEnviron_DirectoryStructure.html%23\" title=\"Windchill Application File System Structure\" target=\"_blank\" rel=\"noopener\"><em>codebase<\/em><\/a> folder. Various <a href=\"https:\/\/support.ptc.com\/help\/wnc\/r12.0.0.0\/en\/index.html#page\/Windchill_Help_Center%2FWCCG_Oview_WCDevEnviron_PropertyFiles.html%23\" target=\"_blank\" rel=\"noopener\" title=\"Windchill Configuration Files\">configuration files<\/a> are accessible and may contain interesting information such as internal host names and Information System user names. In rare cases, secrets may be left unencrypted in these configuration files. By default, Windchill <a href=\"https:\/\/support.ptc.com\/help\/wnc\/r12.0.0.0\/en\/index.html#page\/Windchill_Help_Center%2FWCSysAdminPasswordPasswordSystemEncrypt.html\" target=\"_blank\" rel=\"noopener\" title=\"Windchill Secrets Encryption Documentation\">encrypts the secrets used at installation<\/a>.<\/p>\n<p style=\"text-align: justify;\">We are therefore on an authenticated information disclosure, relatively inocuous in most cases, but which can also reveal secrets when good practices are not followed.<\/p>\n<p style=\"text-align: justify;\">This vulnerability discovered by Vladimir TOUTAIN presents a risk qualified as important with a <a href=\"https:\/\/nvd.nist.gov\/vuln-metrics\/cvss\/v3-calculator?vector=AV:N\/AC:L\/PR:L\/UI:N\/S:U\/C:H\/I:N\/A:N&amp;version=3.1\" target=\"_blank\" rel=\"noopener\" title=\"Windchill Vulnerability CVSS Score\">CVSS score of 6.5<\/a>. It impacts all versions of Windchill.<\/p>\n<p>[\/et_pb_text][et_pb_text module_id=&#8221;motsdepasse&#8221; _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>Communication with the software publisher<\/h2>\n<p style=\"text-align: justify;\">PTC&#8217;s Coordinated Vulnerability Disclosure process is well documented at the following URL: <a href=\"https:\/\/www.ptc.com\/fr\/documents\/security\/coordinated-vulnerability-disclosure\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ptc.com\/en\/documents\/security\/coordinated-vulnerability-disclosure<\/a>.<\/p>\n<p style=\"text-align: justify;\">Communication with PTC was very professional although a bit long to set up: a meeting was organized by the Chief Product Security Officer with several PTC employees in connection with the Windchill software in order to establish a clear roadmap of actions to perform. PTC addressed the vulnerability within 120-days, which is <a href=\"https:\/\/www.zerodayinitiative.com\/advisories\/disclosure_policy\/\" target=\"_blank\" rel=\"noopener\">industry standard<\/a>.<\/p>\n<p style=\"text-align: justify;\">The vulnerability is documented by the publisher at the following link : <a href=\"https:\/\/www.ptc.com\/en\/support\/article\/CS375403\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ptc.com\/en\/support\/article\/CS375403<\/a>.<\/p>\n<p><span style=\"text-decoration: underline;\">18\/05\/2022 :<\/span> First contact email sent<\/p>\n<p><span style=\"text-decoration: underline;\">25\/05\/2022 :<\/span> Reminder email<\/p>\n<p><span style=\"text-decoration: underline;\">21\/06\/2022 :<\/span> Reminder email<\/p>\n<p><span style=\"text-decoration: underline;\">21\/06\/2022 :<\/span> First response from the CPSO apologizing for the delay: the vulnerability is being analyzed, proposal for a meeting within 7-10 days.<\/p>\n<p><span style=\"text-decoration: underline;\">30\/06\/2022 :<\/span> Meeting attended by CPSO and PTC employees directly related to Windchill. Vulnerability validation, acknowledgments, and planning next steps.<\/p>\n<p class=\"tw-data-text tw-text-large tw-ta\" data-placeholder=\"Traduction\" id=\"tw-target-text\" style=\"text-align: left;\" dir=\"ltr\"><span style=\"text-decoration: underline;\">01\/08\/2022 :<\/span> <span class=\"Y2IQFc\" lang=\"fr\">New meeting to take stock of the deployment of the fix and the communication around the vulnerability.<br \/><\/span><\/p>\n<p class=\"tw-data-text tw-text-large tw-ta\" data-placeholder=\"Traduction\" style=\"text-align: left;\" dir=\"ltr\"><span class=\"Y2IQFc\" lang=\"fr\"><span style=\"text-decoration: underline;\">11\/08\/2022 :<\/span> Validation of the article and the advisory by both parties.<br \/><\/span><\/p>\n<p class=\"tw-data-text tw-text-large tw-ta\" data-placeholder=\"Traduction\" style=\"text-align: left;\" dir=\"ltr\"><span class=\"Y2IQFc\" lang=\"fr\"><span style=\"text-decoration: underline;\">31\/08\/2022 :<\/span> Agreement on the publication date of this article.<\/span><\/p>\n<p class=\"tw-data-text tw-text-large tw-ta\" data-placeholder=\"Traduction\" style=\"text-align: left;\" dir=\"ltr\"><span class=\"Y2IQFc\" lang=\"fr\"><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.23.2&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p style=\"text-align: justify;\"><span>\ud83d\udee1\ufe0f DSecBypass accompanies you on the <a href=\"https:\/\/www.dsecbypass.com\/en\/website-pentest\/\" title=\"Website penetration test\">security audit of your Web applications<\/a>. Do not hesitate to <a href=\"https:\/\/www.dsecbypass.com\/en\/contact\/\">contact <\/a>us for additional information and\/or a personalized quote \ud83d\udcdd.<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_button button_url=&#8221;https:\/\/www.dsecbypass.com\/en\/contact\/&#8221; button_text=&#8221;CONTACT US&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;13px&#8221; button_bg_color=&#8221;#4328b7&#8243; button_border_width=&#8221;10px&#8221; button_border_color=&#8221;#4328b7&#8243; button_border_radius=&#8221;0px&#8221; button_letter_spacing=&#8221;2px&#8221; button_font=&#8221;Titillium Web|700||on|||||&#8221; background_layout=&#8221;dark&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vladimir had the opportunity to test the security of the Windchill PLM software published by PTC during an intrusion test mission.<\/p>\n<p>Using basic website security auditing techniques, he discovered a vulnerability affecting all versions of the software. It allowed him to read the configuration files accessible in the application folder.<\/p>\n","protected":false},"author":4,"featured_media":2149,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[34],"tags":[],"class_list":["post-2293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-en"],"_links":{"self":[{"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/posts\/2293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/comments?post=2293"}],"version-history":[{"count":46,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/posts\/2293\/revisions"}],"predecessor-version":[{"id":3248,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/posts\/2293\/revisions\/3248"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/media\/2149"}],"wp:attachment":[{"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/media?parent=2293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/categories?post=2293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dsecbypass.com\/en\/wp-json\/wp\/v2\/tags?post=2293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}