<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by querylab on Medium]]></title>
        <description><![CDATA[Stories by querylab on Medium]]></description>
        <link>https://medium.com/@querylab?source=rss-e9e096fc52d7------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*JtjZgyHc4X-0L4rRzSd7vQ.jpeg</url>
            <title>Stories by querylab on Medium</title>
            <link>https://medium.com/@querylab?source=rss-e9e096fc52d7------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 02 May 2026 07:32:45 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@querylab/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Bypass Premium Account Payment (GetPocket)]]></title>
            <link>https://medium.com/@querylab/bypass-premium-account-payment-getpocket-d813b249687c?source=rss-e9e096fc52d7------2</link>
            <guid isPermaLink="false">https://medium.com/p/d813b249687c</guid>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[ethical-hacking]]></category>
            <category><![CDATA[bug-bounty-tips]]></category>
            <category><![CDATA[hacking]]></category>
            <dc:creator><![CDATA[querylab]]></dc:creator>
            <pubDate>Wed, 04 Jan 2023 02:16:17 GMT</pubDate>
            <atom:updated>2023-01-06T01:35:36.404Z</atom:updated>
            <content:encoded><![CDATA[<p>Greetings Guys! 🤙 Today I bring you a Bug I found at the Beginning of the Year 2022 You know GetPocket Web Application, a popular for Saving Online Content. It is for iOS, Android, and other mobile devices as well as desktop. This app allows you to save content from the web so that it can be read later. You can save articles, videos, notes and more to view at any time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/784/1*DtyTlXQ0D2Drgu1Loyhg7g.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FSSQsUSbsju3CXoX4DY%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FSSQsUSbsju3CXoX4DY%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2FSSQsUSbsju3CXoX4DY%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="182" frameborder="0" scrolling="no"><a href="https://medium.com/media/09a98717532cbeb7a5da20ac6e129a1f/href">https://medium.com/media/09a98717532cbeb7a5da20ac6e129a1f/href</a></iframe><p>I decided to browse the web and create my account, so I decide to use Mozilla Firefox <strong>OAuth</strong> authentication method to create my account for the first time on GetPocket.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-Dictx0p3UnYnprZPn9M_A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qTav6utEV1L3Gq_TfWjc6Q.png" /></figure><p>Once I access my GetPocket account you will see that it is a normal Regular account with no privileges 😔.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2F3o6wrebnKWmvx4ZBio%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F3o6wrebnKWmvx4ZBio%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2F3o6wrebnKWmvx4ZBio%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="244" frameborder="0" scrolling="no"><a href="https://medium.com/media/568ec6c2410f51ec3283c933aa3bc9af/href">https://medium.com/media/568ec6c2410f51ec3283c933aa3bc9af/href</a></iframe><p>I thought 🤔 How could I get a free premium account?</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FSqfHFPbzxw98xwFOiE%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FSqfHFPbzxw98xwFOiE%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2FSqfHFPbzxw98xwFOiE%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="427" frameborder="0" scrolling="no"><a href="https://medium.com/media/79ec69ce7410901508529bd22328e4d5/href">https://medium.com/media/79ec69ce7410901508529bd22328e4d5/href</a></iframe><p>Then I remembered 💡 I had done some online shopping and had a Visa Gift Card 💳 No Funds and said why not use it to load GetPocket Premium account. I should give not accept it, as most of these web applications employ payment processing like Stripe, which uses a feature called <a href="https://stripe.com/radar">https://stripe.com/radar</a> radar that allows to detect this kind of abuse.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aDM1ANCcxozqB2faZsWqhw.png" /></figure><p>So I opened my Burpsuit <a href="https://portswigger.net/">https://portswigger.net/</a> my Favorite Tool 🔨🔥 to hunt bugs. Once I got the Request I sent it to the Repeater and added the following line <strong>X-Forward-For: 127.0.0.1</strong> and hit Send ️</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*79cScOCM_cEZf1gOIruEAg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WRmIQdgUWHDE99-9LZeCew.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2Fq4sdF9tchap6E%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2Fq4sdF9tchap6E%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2Fq4sdF9tchap6E%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="348" frameborder="0" scrolling="no"><a href="https://medium.com/media/e15d12a3dbac657ab0ecf24c0e1ccc46/href">https://medium.com/media/e15d12a3dbac657ab0ecf24c0e1ccc46/href</a></iframe><p><strong>Served Accepted the Request 🥳🎉200 OK</strong></p><p>Stripe Payment Processor bypass and gave me a purchase confirmation order to be reflected in email ********@gmail.com</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/974/1*H6-NRww4obG6-Vx8hl-EGg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gBG3mcg6JoIb-R0SBMPuFg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/782/1*p0mGgL1z72ZQSGbpho6maQ.png" /></figure><p>I could see how the user account is no longer the same, it has other functions, as it is now a premium account 🙃</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*44TEZlP-3ll2NLIswD5nGg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gWc4SQRC5R2DBi_n8chWPQ.png" /></figure><p>Apparently, Stripe’s Radar feature is not Enabled, which allowed this abuse. Knowing all this, I proceeded to inform Mozilla Security Team to report the security flaw to them, and thoroughly investigate the issue and take the necessary steps to correct it. The Mozilla Security Team responded very quickly and were very nice.</p><p>The Bug, Turned Out to be a Duplicate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/290/1*0YaS83Wi7TCwGbbxslD8Xg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2F1BXa2alBjrCXC%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F1BXa2alBjrCXC%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2F1BXa2alBjrCXC%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="435" frameborder="0" scrolling="no"><a href="https://medium.com/media/bd9f696e84343cb6a0efa2ead8cecadb/href">https://medium.com/media/bd9f696e84343cb6a0efa2ead8cecadb/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d813b249687c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IDOR and API-keysToken Hardcode Exposed]]></title>
            <link>https://medium.com/@querylab/idor-and-api-keys-token-hardcode-exposed-201c73d2d667?source=rss-e9e096fc52d7------2</link>
            <guid isPermaLink="false">https://medium.com/p/201c73d2d667</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[bug-bounty-tips]]></category>
            <category><![CDATA[ethical-hacking]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[hacking]]></category>
            <dc:creator><![CDATA[querylab]]></dc:creator>
            <pubDate>Tue, 03 Jan 2023 04:48:40 GMT</pubDate>
            <atom:updated>2023-01-07T16:25:47.277Z</atom:updated>
            <content:encoded><![CDATA[<p>Hi everyone, Im Emy 👽 Computer Engineer 💻 and Security Researcher 👾 I hope everyone is doing great, today I will share with you a finding I discovered at the end of 🗓️ August/2021 in a Famous Food Delivery App 📱 from Puerto Rico. Due to some policies, I will not mention the name of the Android App whose Bug was found, so I will refer to it as <strong>hungrybite.com</strong>. A Report was sent to the security team of this app with these and more Vulnerabilities, which were already patched.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FIOUn2qgyH54tH90uJ8%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fgiphy.com%2Fgifs%2Fhulu-only-murders-in-the-building-omitb-IOUn2qgyH54tH90uJ8&amp;image=https%3A%2F%2Fmedia2.giphy.com%2Fmedia%2FIOUn2qgyH54tH90uJ8%2Fgiphy.gif%3Fcid%3D790b7611abaf037738fbe285263f2595fbd75c2b1e522b37%26rid%3Dgiphy.gif%26ct%3Dg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="244" frameborder="0" scrolling="no"><a href="https://medium.com/media/8f3e64e8e083d81b2f83895bc3e04432/href">https://medium.com/media/8f3e64e8e083d81b2f83895bc3e04432/href</a></iframe><p>Let me explain a little what is an IDOR (Insecure Direct Object Reference) is. This type of bug allows an unauthorized user to change the value of a parameter to access an object for which they are not authorized.<br>Example: Let’s say you are using Google Drive 📁 and you are looking for a Document, Above in the URL you will see this <a href="https://drive.google.com/document/101"><strong>https://drive.google.com/document/101</strong></a> the 101 is an ID or identifier of the Document you are standing on.</p><p>If you change the address and replace 101 with 102 you will almost certainly see an error on the screen. The error will be something like “document not found” or “you do not have permission to view this document”. What happens in this example is that Google Drive uses the last part of the address to identify each document it stores for its users. Document 101 belongs to you, so you can view it, but document 102 is probably from another user, so you don’t have permission to view it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/863/1*St_m0YVfUAhc-UBcER6Jzg.png" /></figure><p>Basically, to be more specific, the API that the Application uses has a bug that allows you to modify a parameter of the purchase order that allows you to see the information of the users, as I explained in the previous example. If your personal information was visible in the address ending in 101, and you change that address to end in 102, you would see another user’s information.</p><p><strong>Now that you know how it works, let’s get started!🤖</strong></p><p>One Day After ordering fast food through the app it occurred to me to check if there was any user data leakage, so I turn on my 🔥 Burpsuit and the first thing I do is change the price of the product purchase to $0 The server accepted the request 200 OK.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/572/1*zJA9J-8qSj7lfTQAWWVNMQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/739/1*pobTD4aYF_m0XQr5HYa5Cg.png" /></figure><p><strong>Ok 🤔 I can get free food?</strong></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FOc4KnIJ3E7ziqN3l6T%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fgiphy.com%2Fgifs%2Fbetnetworks-2022-naacp-bet-image-awards-Oc4KnIJ3E7ziqN3l6T&amp;image=https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2FOc4KnIJ3E7ziqN3l6T%2Fgiphy.gif%3Fcid%3D790b76111120d11d914acf20f891e4bf15a243d8a14b5ca0%26rid%3Dgiphy.gif%26ct%3Dg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="243" frameborder="0" scrolling="no"><a href="https://medium.com/media/00f555dccb0a2198bd0c801616d81d27/href">https://medium.com/media/00f555dccb0a2198bd0c801616d81d27/href</a></iframe><p>I decided to investigate further 😎 🔎 and I checked my past Purchase Orders and noticed that when I suddenly changed my orderId=321448 to orderId=321444 I see that the server accepted the request 200 OK.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4h_ip63ndI8O4eB0fylx5Q.png" /></figure><p>Bingo ✅</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FcXblnKXr2BQOaYnTni%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fgiphy.com%2Fgifs%2Ftheoffice-the-office-tv-moroccan-christmas-cXblnKXr2BQOaYnTni&amp;image=https%3A%2F%2Fmedia3.giphy.com%2Fmedia%2FcXblnKXr2BQOaYnTni%2Fgiphy.gif%3Fcid%3D790b761198d22abf9841334a10b1db9aaf7948e4e9b2a160%26rid%3Dgiphy.gif%26ct%3Dg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="362" frameborder="0" scrolling="no"><a href="https://medium.com/media/45ff4410a1bcbaf31564965f385a5387/href">https://medium.com/media/45ff4410a1bcbaf31564965f385a5387/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*lo0md27YeOZDsqiDu4ZsQA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/493/1*LmlrFBAo-_L92Vypi-uxKw.png" /></figure><p>Here you can see the Customer user as well as the delivery person in charge of that order, you can see all the personal information as well as some URL with photos of the delivery person etc.</p><p><strong>Data-Exposed</strong></p><p>— — — — — — — — — — — — — — — — — — -<br>• CostumerName<br>• CostumerEmail<br>• PhoneCustumer<br>• CostumerAddress<br>• Costumer Comment to deliveryman<br>• Username deliveryman<br>• Email deliveryman<br>• Phone deliveryman<br>• Description of the deliveryman vehicle (Plate, Model, Color, Brand)<br>• Order Tracking URL<br>• Photo ID deliveryman</p><p>— — — — — — — — — — — — — — — — — — — — -</p><p>APIKEY 🔑 Token Hardcoded Exposed</p><p>Some 📱 Android / iOS Apps store Token that could be abused to leak a number of harmful data, some keys are harmless and are required to be in the app, for example: Google, Mapbox Apikey while there are others that could expose harmful data, which could affect the company. The 🛠 tool used to reverse engineer Android apps and discover secret tokens stored in them is accessible online. <strong>APK-Tools </strong><a href="https://www.kali.org/tools/apktool/"><strong>https://</strong></a><a href="http://www.kali.org/tools/apktool/"><strong>www.kali.org/tools/apktool/</strong></a> is one of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QrcVusH3tpt6lEW0BmPQag.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/827/1*-vcoTp6ZoE_1z_NxooX-Cw.jpeg" /></figure><p>After reverse engineering the file.APK 🔄🙃 I found a string.xml file that stores the global variables of the app</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*700e9zALir7eMjRiS-YBeg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8Mi0K1jUZVwYWNCWtJWPoA.png" /></figure><p>As you can see, the string.xml file has secret key 🔑 to access external services to the application, one that caught my attention was the <strong>STRIPE_SECRET_KEY.</strong> Basically, Stripe is an online payment processing system for 📱 Android / IOS / WEB apps that makes it easy to make 💰 payments.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5N-1zfPOQ1MenEESPPkcpA.png" /></figure><p><strong>To check ✅ if a Tokens 🔑 is alive</strong>, I recommend going <a href="https://github.com/streaak/keyhacks">https://github.com/streaak/keyhacks</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/860/1*_Offnj7qD-6FRvNRn992cg.png" /></figure><p>Since we see that the <strong>STRIPE_SECRET_KEY</strong> is valid 💰 we check with the Postman tool to verify the scope of the TOKEN, for this I use a JSON Format Collection offered by <strong>Stripe for Postman https://github.com/stripe/stripe-postman </strong>this allows me to do pushes and pulls from the official Stripe account of <strong>hungrybite.com</strong> which can be potentially devastating. To verify if a Stripe access key is alive, you can use the Stripe API method “retrieve”. This allows you to retrieve information about a specific object, such as a Stripe account. If the call succeeds, it means that the provided access key is valid.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fNFqjtPbpy-Wtn7b5OZK1w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lZDwjC6EPFD8MeYkCQ5JNA.png" /></figure><p>As you can see, many developers frequently use tokens and forget the 🔑 access token in public repositories, this is potentially dangerous. To mitigate this problem, it is recommended not to leave API access tokens in public repositories. To fix this issue, I recommend revoking that token and generating a new one. It is also important to periodically change tokens, to prevent them from being stolen.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=201c73d2d667" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>