[EMAIL PROTECTED] wrote:
First how did that bad guy "execute" the query without hitting the
submit button or entering the captcha code and how did it bypass the
check function.

Your running queries before you do your captcha check in your code.

if (!isset($_POST['securityImageValue']) || !isset($_SESSION['strSec']) || md5($_POST['securityImageValue']) != $_SESSION['strSec'])
        {
                $page = $join_pages_num;

                $add_on .= report_err ( _t("_SIMG_ERR") );
        }

Is halfway down the page, and even after the code notices there is no security image, it STILL keeps running and performing queries.

As for sending without hitting the submit, all forms have to post their data to something, the submit button is just for a human to use.

I have tried running the query like registration.php?query but that
didn't work.

Try registration.php?page=1'INSERT but I would suppose that depends on your server how it would end up dealing with that.


Any ideas about how I can reproduce this problem would greatly
appreciate and any suggestions about how to fix it would be even more
greatly appreciated.            8-)

I'm assuming you don't have the time/money to really rewrite your code properly and have it commented so you can understand it.

As such, here are a couple lazy solutions:
Follow the instructions to download and install it from the FAQ
http://php-ids.org/faq/

Take their sample code and stick it at the top of the code you want to protect.

Change these lines:
 if (!$result->isEmpty()) {
// Take a look at the result object
echo $result;
}

Into
 if (!$result->isEmpty()) {
// Take a look at the result object
if ($result->getImpact()  > 5) {
// Being lazy hear, abort abort potential attack
// you really ought to be logging this stuff somewhere
  exit;
}
}


Adjust the impact number(in my example 10) until you have a number that catches attackers but not legitimate traffic.

Also modify the lazy solution and have it notify you in some manner, log, email, whatnot about what it did.


Another lazy solution, if you have full control over your server and are running Apache2, is to use mod_security http://www.modsecurity.org/

Both these solutions do nothing to fix your code, so when someone finds a way to circumvent their detection algorithms your are still as vulnerable as ever. Their just quick fixes until you can have your code rewritten.
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to