{"id":17533,"date":"2021-11-30T13:21:49","date_gmt":"2021-11-30T12:21:49","guid":{"rendered":"https:\/\/herolab.usd.de\/?page_id=17533"},"modified":"2022-01-12T16:38:06","modified_gmt":"2022-01-12T15:38:06","slug":"usd-2021-0007","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2021-0007\/","title":{"rendered":"usd-2021-0007"},"content":{"rendered":"<p>[et_pb_section fb_built=\"1\" _builder_version=\"4.9.4\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.9.4\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\" _builder_version=\"4.9.4\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<\/p>\n<h1>usd-2021-0007 | ChronoEngine ChronoForums<\/h1>\n<p><strong>Advisory ID<\/strong>: usd20210007<br \/><strong>CVE Number<\/strong>: CVE-2021-28377<br \/><strong>Affected Product<\/strong>: ChronoEngine ChronoForums<br \/><strong>Affected Version<\/strong>: v2.0.11<br \/><strong>Vulnerability Type<\/strong>: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')<br \/><strong>Security Risk<\/strong>: High<br \/><strong>Vendor URL<\/strong>: <a href=\"https:\/\/www.chronoengine.com\/chronoforums\" target=\"_blank\" rel=\"noopener\">https:\/\/www.chronoengine.com\/chronoforums<\/a>\u00a0<a href=\"https:\/\/www.chronoengine.com\/chronoforms\" target=\"_blank\" rel=\"noopener\"><\/a> <a href=\"https:\/\/www.microsoft.com\/\" target=\"_blank\" rel=\"noopener\">\u00a0<\/a><br \/><strong>Vendor Status<\/strong>: Unknown<\/p>\n<p><span><\/span><\/p>\n<h3>Description<\/h3>\n<p>The ChronoForums avatar function is vulnerable through unauthenticated path traversal attacks. This enables unauthenticated attackers to read arbitrary files, like for instance Joomla's configuration file containing secret credentials.<\/p>\n<p>The ChronoForums avatar function is vulnerable through path traversal attacks. An attacker can pass arbitrary local file paths as 'av' parameter. The content of the file is returned. Unauthenticated attackers could use this vulnerabilities to read arbitrary files, like for instance Joomla's configuration file containing secret credentials.<\/p>\n<p>&nbsp;<\/p>\n<h5>Vulnerable Code:<br \/><strong>File<\/strong>: com_chronoforums2\/chronoforums\/controllers\/profiles.php<\/h5>\n<p>[\/et_pb_text][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"9e260d37-0be2-4a12-a10e-3ed7e27b6ac6\" global_colors_info=\"{}\"]<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-beyond enlighter-hover enlighter-linenumbers enlighter-overflow-scroll enlighter-show-rawcode\">function avatar(){<br \/>if(!empty($this-&gt;data['u']) AND !empty($this-&gt;data['av'])){<br \/>$avatars_path = \\GApp::extension('chronoforums')-&gt;settings()-&gt;get('avatars_path', \\G2\\Globals::ext_path('chronoforums','front').'avatars'.DS);<br \/>$target = $avatars_path.$this-&gt;data['av'];<br \/>\\G2\\L\\Download::send($target, 'I', $this-&gt;data['av'], true);<br \/>}else{<br \/>\\G2\\L\\Env::e404();<br \/>}<\/p>\n<p>$this-&gt;view = false;<br \/>}<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<\/p>\n<p>The corresponding function <strong>send($path, $view = 'D', $filename = '', $cache = false)<\/strong>\u00a0in <em>cegcore2\/libs\/download.php<\/em>.<\/p>\n<h3>Proof of Concept (PoC)<\/h3>\n<p>The following steps need to be performed to exploit this issue.<\/p>\n<p>&nbsp;<\/p>\n<h4>Preparation:<\/h4>\n<ul>\n<li>Install Joomla 3.X.<\/li>\n<li>install latest ChronoEngine ChronoForums extensions (at time of writing: 2.0.11).<\/li>\n<li>Create and publish a forum in Joomla administration interface.<\/li>\n<\/ul>\n<h4>Exploiting:<\/h4>\n<p>Open the vulnerable File in Webbrowser: <a href=\"https:\/\/&lt;JoomlaInstallation&gt;\/index.php\/component\/chronoforums2\/profiles\/avatar\/u1?tvout=file&amp;av=&lt;local_file&gt;\">https:\/\/&lt;JoomlaInstallation&gt;\/index.php\/component\/chronoforums2\/profiles\/avatar\/u1?tvout=file&amp;av=&lt;local_file&gt;<\/a>\u00a0<\/p>\n<p><span style=\"font-size: 16px;color: #ffffff\"><\/span><\/p>\n<p><span style=\"font-size: 16px;color: #ffffff\">Exemplary values for &lt;local_file&gt; are given in the following:<\/span><\/p>\n<p>1. \"<strong>PAYLOAD<\/strong>\": References the <strong>\/etc\/passwd<\/strong> file.<span style=\"font-size: 16px;color: #ffffff\"><\/span><\/p>\n<p><span style=\"font-size: 16px;color: #ffffff\"><\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2021\/11\/usd20210007-1.png\" title_text=\"usd20210007-1\" _builder_version=\"4.13.1\" _module_preset=\"default\" global_colors_info=\"{}\"][\/et_pb_image][et_pb_text _builder_version=\"4.13.1\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<\/p>\n<p>2. \"<strong>PAYLOAD<\/strong>\": References the Joomla configuration file (Path might vary).<span style=\"font-size: 16px;color: #ffffff\"><\/span><\/p>\n<p><span style=\"font-size: 16px;color: #ffffff\"><\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=\"https:\/\/herolab.usd.de\/wp-content\/uploads\/sites\/9\/2021\/11\/usd20210007-2.png\" title_text=\"usd20210007-2\" _builder_version=\"4.13.1\" _module_preset=\"default\" global_colors_info=\"{}\"][\/et_pb_image][et_pb_text _builder_version=\"4.9.4\" _module_preset=\"cc5ac6f4-ebbd-4b3f-bc92-4dfc1f15fe2c\" global_colors_info=\"{}\"]<\/p>\n<div class=\"e16902-22 x-container max width\">\n<div class=\"e16902-23 x-column x-sm x-1-1\">\n<h3>Fix<\/h3>\n<p>Restrict path specification to configured avatar folder.<\/p>\n<h3><\/h3>\n<h3>References<\/h3>\n<ul>\n<li><a href=\"https:\/\/cwe.mitre.org\/data\/definitions\/22.html\" target=\"_blank\" rel=\"noopener\">https:\/\/cwe.mitre.org\/data\/definitions\/22.html<\/a>\u00a0<\/li>\n<li><a href=\"https:\/\/owasp.org\/www-community\/attacks\/Server_Side_Request_Forgery\" target=\"_blank\" rel=\"noopener\">https:\/\/owasp.org\/www-community\/attacks\/Path_Traversal<\/a><\/li>\n<\/ul>\n<h3><\/h3>\n<h3>Timeline<\/h3>\n<ul>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-02-05: This vulnerability is identified by Tim Kranz and Nicolas Schickert.<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-02-15: Initial contact with vendor.<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-02-15: Vulnerability details are transmitted to the vendor.<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-03-07: Status update requested.<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-04-15: Status update requested.<\/p>\n<\/li>\n<li>\n<p data-pm-slice=\"1 1 []\">2021-07-22: Status update requested.<\/p>\n<\/li>\n<li>2021-11-02: Status update requested, disclosure scheduled by the end of November.<\/li>\n<li>2021-11-30: Advisory released.<\/li>\n<\/ul>\n<h3><\/h3>\n<h3>Credits<\/h3>\n<p>This security vulnerability was found by Nicolas Schickert and Tim Kranz of usd AG.<\/p>\n<\/div>\n<\/div>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>usd-2021-0007 | ChronoEngine ChronoForums Advisory ID: usd20210007CVE Number: CVE-2021-28377Affected Product: ChronoEngine ChronoForumsAffected Version: v2.0.11Vulnerability Type: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')Security Risk: HighVendor URL: https:\/\/www.chronoengine.com\/chronoforums\u00a0 \u00a0Vendor Status: Unknown Description The ChronoForums avatar function is vulnerable through unauthenticated path traversal attacks. This enables unauthenticated attackers to read arbitrary files, like [&hellip;]<\/p>\n","protected":false},"author":96,"featured_media":0,"parent":16124,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-17533","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/17533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/users\/96"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=17533"}],"version-history":[{"count":0,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/17533\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=17533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}