If you have already read my previous post, you know how a forgotten QA environment led to an $800 bounty. But the story didn’t end there. In the world of cyber-security, a “fix” isn’t always a “solution.”
This bug report in Hackerone is still in “Triaged” state, but since i know that they have now denied access to QA page for the public, I am writing about this report.
Three months after my first report was resolved, I went back to the same QA environment. What I found taught me a valuable lesson: Always retest, even when the bug is marked “Resolved.”
When the initial vulnerability was closed, the organization had secured the specific endpoints I reported. However, the root cause — the lack of universal access control on the QA server — remained.
While the original documents were now protected, I discovered that a whole new set of sensitive files were sitting wide open.
While pivoting through the QA sub-domain (data-qa.np.targetcorp.com), I noticed that the "ESG ****" and "Multi ****" sections were still serving live, restricted files.
By simply visiting the QA versions of these pages, I could download:
xxx.csv: Daily index composition data.abc.csv: High-value premium index data.Refer below images for your reference
Press enter or click to view image in full size
Press enter or click to view image in full size
These weren’t just test files; they contained sensitive financial columns like Shares, Weights, Free Float, and Cash Dividend Amounts — data that is strictly reserved for high-paying licensed customers.
Because this data serves as a primary benchmark for the stock market, unauthorized access is a serious revenue risk. Investors and professionals pay for this accuracy; if it’s available for free on a QA site, the business model is compromised.
This is where the story gets interesting. After reporting this second wave of documents, the triage team initially viewed it as a duplicate of my first report because the root cause (QA misconfiguration) was the same.
Join Medium for free to get updates from this writer.
I argued that since the original remediation was clearly incomplete and entirely new, distinct datasets were exposed, it should be treated as a new finding.
The team agreed. Because not all remediation steps were applied the first time, they accepted the report as valid. While not the full original bounty, they awarded a $500 reward for the catch.