whoisjoe.com

Constant Vigilance

  

May 21, 2012

Home About Projects Blog LinkedIn ReThink Security

I’ve been in the Security Industry for about ten years now. I say that not to brag, but to give context for the rest of this post. I’ve assessed countless pieces of software of nearly every type, web apps, web services, desktop, firmware, mobile, Operating Systems, and more. So believe me when I say this is a bit of a tough post to write.

Up until about a month ago Joe_CMS had a major security vulnerability in it.

But let me start at the beginning and tell the story in chronological order. I’ve been working on a new CMS, one that would opt for simplicity and just the right set of features so it’s easy to use and very easy to administer. Before I open source it, I wanted to deploy it to a few of the sites that I run (Technically Learning, My Wife’s Site, and this one). I’ve been happily finding little bugs here and there and have generally been happy with how it’s shaping up. I even think a few weeks ago I told a friend that it was “getting close.”

A litte more than a month ago I browsed to my site to publish a new blog post and noticed the Title of my blog had changed. I thought that was very odd because it hadn’t changed to something recognizable, bur rather something like the random values that an automated tool may inject to look for injection vulnerabilities. I immediately suspected my coworkers and asked around. Nobody knew a thing.

I checked over all the settings, that are configurable online, the database strings were correct, the passwords were good, everything seemed to be in order. I did think that since the site doesn’t go over SSL (something I intend to fix soon) that perhaps my session or credentials were stolen and somebody changed the settings manually. I changed all my passwords, added a longer random registration code and decided to wait it out.

About a few weeks ago, it happened again! I again checked all the settings, which had all been overwritten again, and immediately started to think about how this could have happened. Did my hosting provider get popped, my database, surely it’s not my application!

Finally something dawned on me. I logged out and directly browsed to http://whoisjoe.com/Settings.aspx. The page was wide open. I had forgotten to require authentication on the Admin Settings page!! I extended the asp.net BasePage as AdminPage to require Authentication on any page as long as I remember to change the inheritance. If you try to author a post, edit a page or modify any template you have to log in. Somehow the settings page slipped my mind and it was dangling out naked on the internet for who knows how long. Luckily it looks like it was just bots and spiders that found the issue, but had a real hacker discovered it things could have been much, much worse.

This is exactly the kind of issue I look for and find in all kinds of web applications. Forceful browsing is all over the place. A developer assumes that because a page isn’t linked to it isn’t accessible or won’t be discovered, but in reality any page that isn’t explicitly protected is vulnerable. In addition to this assumption one must also assume every vulnerability will found. Every XSS, every SQLi, every CSRF issue will be found if given enough time. This means that these cannot exist in your application. I missed authentication on one page and if the wrong person would have found it they could have easily compromised my entire website making it a hotbed for malware drive by downloads.

Now that we’ve found the last bug in Joe_CMS I feel confident it’s ready to ship… right?

Posted By: Joe Basirico

  • 81 More Posts
  • So, You're a Manager Now
  • A Mixtape in 2022
  • The Middle Path of Planning and Reflection
  • Micromanagement and Trust
  • On Giving Advice
  • Emergency Preparedness During Coronavirus Frenzy
  • Mind Map Your Life
  • Start With the Hard Part
  • Delight in the Details
  • Introducing ReThink Security
  • Newsletter & Recommendations
  • Take a Moment
  • Triage Decision Making
  • Show Your Work
  • Getting Back Up
  • Max Out vs. Continuous Development
  • Mental Diet and Exercise
  • Asking for Help Part 2 - Alerting
  • High Water Mark
  • Who Do You Want to Be
  • Presentation Tips
  • Asking for Help
  • China Hijacking the Internet
  • Recording Audio with AirPods in Imovie
  • Active Decisions
  • Create/Publish Scripts
  • Specialize or Do Not Specialize
  • Exactis Breach
  • Optimizing Images
  • What I Track
  • What I’m Thinking About May
  • What I’m Thinking About March
  • What I’m Thinking About January
  • Building a Collaborative & Social Application Security Program
  • Lazy Days in the Cloud
  • Delegate Then Do
  • So you want to be a better programmer
  • Project Success
  • Don't Short Circuit a Lesson
  • Scale Your Solution to the Problem
  • Digital Currencies
  • Fortnightly
  • Why You Should Have Trust Issues with Pokemon Go, and Every Other App on Your Phone
  • In Defense of Reverse Engineering and Responsible Disclosure
  • Ruby open allows command injection if user controlled
  • New Mac Install Guide
  • Understanding Customer Needs and Helping Them Mature
  • My Experiences with IOS8 and Yosemite so far
  • The Importance of Vulnerability Disclosure Programs and Bug Bounties
  • My New Record Player and Beck - Morning Phase (The Vinyl Experience)
  • An Hour of Code with Code.org
  • Gmail Changes to Displays Images by Default
  • Why I Donated to Help Jailbreak iOS7 & You Should Too
  • Email Strategy
  • Shutdown
  • Anatomy of a Distributed Denial of Service (DDoS) Attack
  • NASA Forced to Suspend All Public Outreach & Education Programs
  • Joe_CMS Open Source!
  • Mobile Application Security Testing FAQs: Post #1
  • How Much Security Does Obfuscation Get You?
  • Why Privacy Matters Even if You Have 'Nothing to Hide'
  • What LinkedIn Should Have Done with Your Passwords
  • Constant Vigilance
  • Boeing Paying Hackers to Break into Their Systems
  • My Reading Cycle
  • Developing Tools for Professional Hackers
  • Finding Your Inner Evildoer (4/4): An Evil Streak
  • Finding Your Inner Evildoer (3/4): A Good Imagination
  • When to Rebuild Your Process from Scratch
  • Finding Your Inner Evildoer (2/4): Complete Knowledge of the System
  • Continuous Incremental, Personal Improvement
  • Finding Your Inner Evildoer: Part 1
  • CISCO Password Revealer
  • Battling with Word and Excel
  • Which is More Secure: Windows or Linux?
  • The High Cost of an Application Security Data Breach
  • Using the ConfigurationManager to Access your ConnecitonStrings in the Web.Config
  • New WikiRater Features
  • When is it OK to Build up Technical Debt
  • Time Management with the Pomodoro Technique
  • Manage Energy Not Time
  • Goals, Results and Activities - defining your productivity
© 2022 whoisjoe.com