Stack BOF(Buffer OverFlow)를 이용한 권한 상승

2021. 7. 18. 20:08

 

 

Stack Buffer OverFlow

 

● Stack 영역에 OverFlow를 발생시켜 권한 상승을 취하는 방식으로,

● 할당된 버퍼보다 많은 데이터가 삽입되었을 때 인접 메모리를 덮어 쓰게 되는 취약점

● 손상받는 데이터는 변수, 프로그램 흐름 제어다.

 

strcpy(buffer, argv[1]); >>> strncpy(buffer, argv[1], 5);

 

다음과 같은 프로그램을 만든 후 chmod4755를 해준다(즉 root 권한으로 setuid를 설정해준다)

 

GDB를 사용하여 취약 파일을 분석한다.(gdb -q 파일명)

다음 과정 가운데 <main+48>부분에서와 같이,

520byte 이후 ebp에 도달할 수 있다. 따라서

520byte+4byte(이전 EBP)+4byte(root권한 획득 코드)

와 같이 실행시킬 경우 권한을 획득할 수 있다.

 

환경변수 확인을 위한 코드를 아래와 같이 작성한다.
프로그램 실행에 따른 결과값은 다음과 같다.
ESP를 찾기 위해 다음과 같은 프로그램 코드를 작성 후 컴파일한다.
다음과 같이 Stack은 매번 주소값이 랜덤으로 할당된다.

따라서 반복되는 주소 가운데 성공할 확률이 높은 주소를 찾아 이를 공격 대상으로 정한다.

공격을 위해 언어설정을 한국어 값으로 바꾼다.

이는 nopsled 공격을 위해서 한국어 값으로 바꾼 것이다.

/x90을 인지하기 위해서는 한국어 값으로 변경될 필요가 있다.

 

 

 

 

이와 같이 공격을 실행했을 경우 일반 계정에서 shell을 떨어트렸음을 알 수 있다.

BELATED ARTICLES

more