티스토리 뷰
20번 문제는 마지막 문제입니다. 그리고 가장 기초 Remote Buffer Overflow 문제이기도 합니다.
소스코드를 한 번 살펴보죠. 는 파일로 첨부해놨습니다. 소켓이다보니 소스코드가 너무 기네요...;
선언된 변수는 40 바이트 크기로 잡혀있는데, recv 함수로 256 바이트를 받음으로써 취약점이 발생하는 것입니다.
또한, 제가 XInetd 데몬은 로컬 쉘코드를 사용해도 되지만, 사용자가 직접 소켓을 할당하고 사용하는 StandAlone 형식의 프로그램은 바인딩 쉘코드가 필요합니다.
바인딩 쉘코드에 대한 것은 다음에 Writing the ShellCode 부분에 써보기로 하고... 여기서는 그냥 쉘코드를 사용하겠습니다.( Redhat 7.3에 강좌도 써야하는데 문제 푸는게 꿀잼...)
death_knight.c 소스코드에 dumpcode.h 가 기본으로 들어가 있는 것을 보면, 분명 dumpcode.h를 이용하든 gdb로 프로세스에 attach하든 주소를 알아낸 뒤에 공격하라는 의도 같지만(처음엔 그렇게 풀었습니다...) 문서를 보고 자동으로 공격하는 코드를 기반으로 작성 해봤습니다.(소스코드는 첨부하겠습니다.)
소스코드는 0xc0000000 부터 ret 주소를 맞출 때까지 브루트포싱하는 코드입니다.
이해하시려면 소켓 프로그래밍은 꼭 하셔야 될 겁니다. 중요한 부분만 설명해드리겠습니다.
const char ShellCode[] = "~"; -> 쉘코드를 저장해 놓은 부분입니다.(92 바이트 바인딩 쉘코드입니다. 파일로 첨부해놓은 소스 코드가 이 쉘코드의 원형입니다.)main 함수에서 while 부분은 ret 부분에 0xc0000000 부터 4 바이트씩 뺀 주소를 삽입하고, sprintf 함수로 공격 구문을 작성하고 system 함수를 실행합니다.Attack_Result 함수에서는 쉘코드에서 31337 포트가 열리게 되는 부분에 connect 함수를 수행하고,성공하게 되면 Connect_Shell 코드 부분에서 입출력을 제어하게 됩니다.(fd_set 구조체에 대한 것은 구글링하시면 됩니다. 어려운 개념은 아니니까요.)
death_knight의 euid를 얻을 수 있습니다만... uid는 root로 얻어지네요...
6666을 인자로 넘겨주는 이유와 짧게 공격이 성공하는 이유는 제가 좀 소스코드를 고쳤습니다.
왜 root 권한이 따이는지가 몰라서 실험하느라 해봤는데... death_knight 아이디로 프로그램을 만들어서 수행하면 uid가 death_knight 로 나옵니다.
제가 예상하기로는 /etc/rc.d/rc.local에 등록을 하게되면서 권한상승으로 이어지는 통로가 된 것 같습니다.
아무튼, got the life 를 쳐서 death_knight 로 접속하면,
원래는 문제 풀이와 이 모양을 제출해야만 Fedora Castle로 진입할 수 있습니다.
그 동안 Redhat 수고 하셨습니다 !(여기 문제와 제가 설명한 개념들을 잘 숙지하시면 Fedora 에서도 쉽게쉽게 문제들을 풀 수 있습니다 ~)
'WarGame > LOB(Redhat_6.2) - 完' 카테고리의 다른 글
[LOB] nightmare -> xavius 문제 풀이 (1) | 2014.02.01 |
---|---|
[LOB] succubus -> nightmare 문제 풀이 (0) | 2014.02.01 |
[LOB] zombie_assassin -> succubus 문제 풀이 (0) | 2014.02.01 |
[LOB] assassin -> zombie_assassin 문제 풀이 (0) | 2014.02.01 |
[LOB] giant - > assassin 문제 풀이 (0) | 2014.02.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- platform
- security
- .get()
- JavaScript
- cloudsecurity
- REACT
- terraform
- ViaAWSService
- AWS #CIS
- temlate
- aws
- web
- 2xx
- scp
- CIS
- steampipe
- IAM
- 계정정보저장
- 우주와컴퓨터
- Cloud
- defaulttheme
- fleet manager
- 4xx
- stateType
- compliance
- conftest policy
- findinglatestversion
- opensource
- teplate
- ControlTower
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함