Title: ====== Endian UTM Firewall v2.4.x & v2.5.0 - Multiple Web Vulnerabilities Introduction: ============= Einfach, schnell und zukunftssicher! Die ideale Lösung, um Ihre Filialen und industriellen Zweigstellen rund um den Globus zu schützen. Endian 4i ist die ideale Lösung für Büroaußenstellen oder Industrieinstallationen. Die Firewall ist in den zwei Varianten „Office“ und „Industrial“ erhältlich. Die Office-Version bietet alle Funktionen, um Netzwerke in der Firma und in Verbindung mit Außenstellen einfach und sicher zu verlinken. Derselbe Funktionsumfang ist bei der Industrial-Version vorhanden, die sich speziell an den Industriebereich richtet und 24V Support bietet sowie auf der Hutschiene installiert werden kann. Remote-Supporting, Remote-Konfiguration, Systemüberwachung bis hin zur einfachen, sicheren Vernetzung von Außenstellen – die Kostenvorteile dabei liegen auf der Hand. Sichern auch Sie sich die Konnektivität Ihres Unternehmens ab, und behalten Sie mit der Endian 4i stets die Nase vorn. (Copy of the Vendor Homepage: http://www.endian.com/de/products/utm-hardware/4i/) Report-Timeline: ================ 2011-09-16: Vendor Notification 2011-09-20: Vendor Response/Feedback 2012-00-00: Vendor Fix/Patch 2012-03-01: Public or Non-Public Disclosure Details: ======== 1.1 Multiple persistent input validation vulnerabilities are detected on Endians WAF UTM appliance application. The vulnerability allows an attacker to manipulate specific application requests via persistent included script codes. Vulnerable: Input Validation Vulnerabilities (Server-Side|Persistent) Vulnerable Module(s): [+] Proxy - HTTP Configuration Masks [+] Service - Intrusion Prevention [+] Netzwerk - Host Configuration [+] DHCP 1.2 Multiple cross site request forgery vulnerabilities are detected on client-side of the edian waf appliance. The vulnerability allows an attacker to force client-side module requests of application functions. Vulnerable: Cross Site Request Forgery Vulnerabilities (Client-Side|Non Persistent) Vulnerable Module(s): [+] HotSpot - Add Password [+] System - Passwords Picture(s): ../csrf1.png Proof of Concept: ================= The vulnerabilities can be exploited by remote attackers with high required user inter action or local low privileged user accounts. For demonstration or reproduce ... 1.1 Example Code Review: Input Validation Vulnerabilities (Persistent Inject) Server: demo.endian.com/ Path: /cgi-bin/ File: proxyconfig.cgi <div id="page-content-box"> <div id="notification-view" class="spinner" style="display:none"></div> <div id="module-content"> <script type="text/javascript"> $(document).ready(function() { /* Enable visualization of service notifications */ display_notifications(["squid","dansguardian","havp","sarg"], {"startMessage": "Proxy settings are being applied. Please hold...","updateContent": ".service-switch-form","type": "observe","endMessage": "Proxy settings have been applied successfully.","interval": "500"}); }) </script> <div class="error-fancy" style="width: 504px; "> <div class="content"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="sign" valign="middle"><img src="/images/bubble_red_sign.png" alt="" border="0" /></td> <td class="text" valign="middle">">"<iframe src=http://vulnerability-lab.com width=600 height=600>@aollamer.de" at "Email used for notification (cache admin)" is not valid!(or?@rem0ve)<br /></td> </tr> </table> </div> Reference(s): https://xx.xxxx.com/cgi-bin/proxyconfig.cgi https://xx.xxxx.com/cgi-bin/hosts.cgi https://xx.xxxx.com/cgi-bin/dhcp.cgi 1.2 Example Code Review: Cross Site Request Forgery Vulnerabilities (Non-Persistent) Server: demo.endian.com/ Path: /cgi-bin/ File: hotspot-changepw.cgi or changepw.cgi <form action="/cgi-bin/changepw.cgi" method="post"> <div class="section first multi-column"> <input type='hidden' name='ACTION_ROOT' value='save' /> <div class="title"><h2 class="title">SSH Password (root)</h2></div> <div class="fields-row"> <span class="multi-field"> <label id="username_field" for="username">Password *</label> <input type="password" name="ROOT_PASSWORD1" SIZE="5" /></span> ... or <form enctype='multipart/form-data' method='post' action='/cgi-bin/hotspot-changepw.cgi'> <input type='hidden' name='ACTION_HOTSPOT' value='save' /> <table width='100%'> <tr> <td width='15%' class='base'>Password:</td> <td width='30%'><input type='password' name='HOTSPOT_PASSWORD1' /></td> <td width='15%' class='base'>Again:</td> <td width='30%'><input type='password' name='HOTSPOT_PASSWORD2' /></td> <td width='10%'><input class='submitbutton' type='submit' name='submit' value='Save' /></td> </tr> </table> </form> References: https://xx.xxxx.com/cgi-bin/changepw.cgi https://xx.xxxx.com/cgi-bin/hotspot-changepw.cgi Solution: ========= 1.1 Restrict & parse the vulnerable input & output sections to fix the persistent injects. 1.2 Use a csrf tokens & a checkbox to verify a request. Risk: ===== The security risk of the persistent vulnerabilities are estimated as high(-). The security risk of the non-persistent vulnerabilities are estimated as low(+). Credits: ======== Vulnerability Research Laboratory - Benjamin Kunz Mejri (Rem0ve)