{"id":108,"date":"2016-03-29T14:06:54","date_gmt":"2016-03-29T14:06:54","guid":{"rendered":"http:\/\/www.stevenlee.co.za\/blog\/?p=108"},"modified":"2017-01-04T12:16:15","modified_gmt":"2017-01-04T10:16:15","slug":"superbalists-not-super-security","status":"publish","type":"post","link":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/","title":{"rendered":"Superbalist&#8217;s Not So &#8220;Super&#8221; Security"},"content":{"rendered":"<h2>UPDATE (December 5, 2016)<\/h2>\n<p>So I thought I would revisit this issue today by having a look at Superbalist&#8217;s\u00a0website.<\/p>\n<p>I can happily confirm that Superbalist&#8217;s website now defaults to SSL-enabled HTTP connections. YAY!<\/p>\n<p>Out of interest, I thought I&#8217;d take a look at their mobile apps&#8230;<\/p>\n<p>I fired up my local web proxy and had a look at the traffic generated by the Android app.<\/p>\n<p>Long story short, Superbalist&#8217;s Android app does not encrypt any customer authentication data sent to their servers.<\/p>\n<p>Here&#8217;s a screenshot of my web proxy inspecting the user authentication request:<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-129\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-android-no-ssl.png\" alt=\"superbalist-android-no-ssl\" width=\"437\" height=\"150\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-android-no-ssl.png 437w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-android-no-ssl-300x103.png 300w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>So it would seem that lightning CAN strike the same place twice.<\/p>\n<p>Maybe I can make it a hat-trick by having\u00a0a look at their iOS app&#8230;<\/p>\n<hr \/>\n<p>Following on from my previous <a href=\"http:\/\/www.stevenlee.co.za\/blog\/takealot-security-issue\/\" target=\"_blank\">post<\/a>, I thought I&#8217;d have a look at one of Takealot&#8217;s subsidiaries, Superbalist.<\/p>\n<p>I tried accessing <a href=\"https:\/\/superbalist.com\" target=\"_blank\">https:\/\/superbalist.com<\/a> but I got 302 redirected to <a href=\"http:\/\/superbalist.com\" target=\"_blank\">http:\/\/superbalist.com<\/a> &#8211; so much for browsing securely&#8230;<\/p>\n<p>I then turned my attention to their login modal (see Figure 1).<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-111\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-login-modal.png\" alt=\"superbalist-login-modal\" width=\"600\" height=\"430\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-login-modal.png 600w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-login-modal-300x215.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Figure 1. Superbalist login modal (popup)<\/em><\/p>\n<p style=\"text-align: left;\">I tried entering in a random email address (test@test.com) and password (test). I received a revealing response from their server (see Figure 2).<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-109\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-password-incorrect.png\" alt=\"superbalist-password-incorrect\" width=\"600\" height=\"516\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-password-incorrect.png 600w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-password-incorrect-300x258.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Figure 2. Revealing response from server<\/em><\/p>\n<p style=\"text-align: left;\">So what is so revealing about the server response? It&#8217;s telling me the password is incorrect. So what, right!? But look at what it&#8217;s not telling me. It made no reference to the validity of the email address. This suggested that the random email address I entered was valid. I needed to know if this was indeed the case, so I tried another <em>very<\/em> random email address (see Figure 3).<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-110\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-email-address-check.png\" alt=\"superbalist-email-address-check\" width=\"599\" height=\"459\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-email-address-check.png 599w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-email-address-check-300x230.png 300w\" sizes=\"(max-width: 599px) 100vw, 599px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Figure 3. Email address validation<\/em><\/p>\n<p style=\"text-align: left;\">My suspicions were confirmed when the server responded with &#8220;The email address does not exist&#8221;. I re-entered the &#8220;test@test.com&#8221; email address and no error message was displayed. \u00a0I knew then that I had unwittingly discovered a valid login email address. This could be used as a means to check if a given email address is registered on the website. This may not be a critical issue, but this is valuable data for a malicious user i.e. hacker.<\/p>\n<p style=\"text-align: left;\">Now for the really interesting part: form submission.<\/p>\n<p style=\"text-align: left;\">It is important to have all user authentication fields (in this case, email address and password)\u00a0transferred over an encrypted connection. Since the internet is a public network, there&#8217;s no guarantee that your &#8220;in\u00a0transit&#8221; information will be kept private. It is essential to keep sensitive information encrypted to ensure confidentiality and integrity. Generally speaking, encrypted connections will have URLs beginning with &#8220;https:\/\/&#8221;. Non-encrypted connections typically have URLs beginning with &#8220;http:\/\/&#8221;.<\/p>\n<p style=\"text-align: left;\">Looking at the source code of the login form revealed that Superbalist seem to be sending the login credentials over a non-encrypted connection. Looking at the blue highlighted line in Figure 4, it&#8217;s clear to see the destination URL of the form (http:\/\/superbalist.com\/users\/login) begins with &#8220;http:\/\/&#8221;.<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-115\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-source.png\" alt=\"superbalist-form-source\" width=\"487\" height=\"279\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-source.png 487w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-source-300x172.png 300w\" sizes=\"(max-width: 487px) 100vw, 487px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Figure 4. Superbalist login form source code<\/em><\/p>\n<p style=\"text-align: left;\">Opening up the Developer Tools window in Chrome confirmed the request URL begins with &#8220;http:\/\/&#8221; (see Figure 5). The remote address also ends with &#8220;:80&#8221;, which means the connection is on port 80 of the web server, the default port for non-encrypted web traffic. The standard port for encrypted HTTP traffic is 443.<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-116\" src=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-request-general.png\" alt=\"superbalist-form-request-general\" width=\"368\" height=\"93\" srcset=\"https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-request-general.png 368w, https:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-form-request-general-300x76.png 300w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Figure 5. Chrome Developer Tools connection info for Superbalist login form<\/em><\/p>\n<p style=\"text-align: left;\">So if my observations are correct, Superbalist are not encrypting their customer&#8217;s login data. I would be more than happy to have someone at Superbalist challenge me on this observation.<\/p>\n<p style=\"text-align: left;\">Let the games begin&#8230;<\/p>\n<h2 style=\"text-align: left;\"><\/h2>\n<div id=\"slwp-social-icons\">\n    <div class=\"slwp-share-title\">SHARE THIS POST<\/div>\n    <a href=\"#\" class=\"slwp-share slwp-facebook\" onclick=\"window.open('https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwww.stevenlee.co.za%2Fblog%2Fsuperbalists-not-super-security%2F','facebook-share-dialog','width=626,height=436');return false;\"><\/a>\n    <a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fwww.stevenlee.co.za%2Fblog%2Fsuperbalists-not-super-security%2F\" class=\"slwp-share slwp-twitter\" target=\"_blank\"><\/a>\n    <a href=\"https:\/\/plus.google.com\/share?url=https%3A%2F%2Fwww.stevenlee.co.za%2Fblog%2Fsuperbalists-not-super-security%2F\" class=\"slwp-share slwp-googleplus\" onclick=\"javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;\"><\/a>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>UPDATE (December 5, 2016) So I thought I would revisit this issue today by having a look at Superbalist&#8217;s\u00a0website. I can happily confirm that Superbalist&#8217;s website now defaults to SSL-enabled HTTP connections. YAY! Out of interest, I thought I&#8217;d take a look at their mobile apps&#8230; I fired up my local web proxy and had [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Superbalist&#039;s Not So &quot;Super&quot; Security | Web Performance, SEO &amp; Security Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Superbalist&#039;s Not So &quot;Super&quot; Security | Web Performance, SEO &amp; Security Blog\" \/>\n<meta property=\"og:description\" content=\"UPDATE (December 5, 2016) So I thought I would revisit this issue today by having a look at Superbalist&#8217;s\u00a0website. I can happily confirm that Superbalist&#8217;s website now defaults to SSL-enabled HTTP connections. YAY! Out of interest, I thought I&#8217;d take a look at their mobile apps&#8230; I fired up my local web proxy and had [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Performance, SEO &amp; Security Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-29T14:06:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-01-04T10:16:15+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-android-no-ssl.png\" \/>\n<meta name=\"author\" content=\"Steven Lee\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steven Lee\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/\",\"url\":\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/\",\"name\":\"Superbalist's Not So \\\"Super\\\" Security | Web Performance, SEO &amp; Security Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/#website\"},\"datePublished\":\"2016-03-29T14:06:54+00:00\",\"dateModified\":\"2017-01-04T10:16:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/178f70be7171fe4590c1289231ab3450\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.stevenlee.co.za\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Superbalist&#8217;s Not So &#8220;Super&#8221; Security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/#website\",\"url\":\"https:\/\/www.stevenlee.co.za\/blog\/\",\"name\":\"Web Performance, SEO &amp; Security Blog\",\"description\":\"By Steven Lee\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.stevenlee.co.za\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/178f70be7171fe4590c1289231ab3450\",\"name\":\"Steven Lee\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9351f8e5db439a9f12a3cc7143323897?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9351f8e5db439a9f12a3cc7143323897?s=96&d=mm&r=g\",\"caption\":\"Steven Lee\"},\"sameAs\":[\"http:\/\/www.stevenlee.co.za\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Superbalist's Not So \"Super\" Security | Web Performance, SEO &amp; Security Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/","og_locale":"en_US","og_type":"article","og_title":"Superbalist's Not So \"Super\" Security | Web Performance, SEO &amp; Security Blog","og_description":"UPDATE (December 5, 2016) So I thought I would revisit this issue today by having a look at Superbalist&#8217;s\u00a0website. I can happily confirm that Superbalist&#8217;s website now defaults to SSL-enabled HTTP connections. YAY! Out of interest, I thought I&#8217;d take a look at their mobile apps&#8230; I fired up my local web proxy and had [&hellip;]","og_url":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/","og_site_name":"Web Performance, SEO &amp; Security Blog","article_published_time":"2016-03-29T14:06:54+00:00","article_modified_time":"2017-01-04T10:16:15+00:00","og_image":[{"url":"http:\/\/www.stevenlee.co.za\/blog\/wp-content\/uploads\/2016\/03\/superbalist-android-no-ssl.png"}],"author":"Steven Lee","twitter_misc":{"Written by":"Steven Lee","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/","url":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/","name":"Superbalist's Not So \"Super\" Security | Web Performance, SEO &amp; Security Blog","isPartOf":{"@id":"https:\/\/www.stevenlee.co.za\/blog\/#website"},"datePublished":"2016-03-29T14:06:54+00:00","dateModified":"2017-01-04T10:16:15+00:00","author":{"@id":"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/178f70be7171fe4590c1289231ab3450"},"breadcrumb":{"@id":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.stevenlee.co.za\/blog\/superbalists-not-super-security\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.stevenlee.co.za\/blog\/"},{"@type":"ListItem","position":2,"name":"Superbalist&#8217;s Not So &#8220;Super&#8221; Security"}]},{"@type":"WebSite","@id":"https:\/\/www.stevenlee.co.za\/blog\/#website","url":"https:\/\/www.stevenlee.co.za\/blog\/","name":"Web Performance, SEO &amp; Security Blog","description":"By Steven Lee","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.stevenlee.co.za\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/178f70be7171fe4590c1289231ab3450","name":"Steven Lee","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stevenlee.co.za\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9351f8e5db439a9f12a3cc7143323897?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9351f8e5db439a9f12a3cc7143323897?s=96&d=mm&r=g","caption":"Steven Lee"},"sameAs":["http:\/\/www.stevenlee.co.za"]}]}},"_links":{"self":[{"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/posts\/108"}],"collection":[{"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":21,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":138,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions\/138"}],"wp:attachment":[{"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stevenlee.co.za\/blog\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}