ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [pwnable.kr] Toddler's Bottle - shellshock 대박
    카테고리 없음 2020. 2. 27. 17:54

    셰일 이해:-봉잉눙 요즘은 정확히 모르지만 그와고지츠라 대부분 내가 기억한 현재 이 블로그의 이 기록물-http://blogger.pe.kr/300bash홀 이해:-http://blogger.pe.kr/430-https://m.blog.naver.com/renucs/220개 447한 3558


    사이트:http://pwnable.kr/play.php


    >


    이번 의문은 bash에 대한 의문입니다. 또한 ssh로 연결하면 guest로 연결되었기 때문에 flag파일을 볼 권한이 없는 guest 권한입니다. 실행 파일을 실행하면 나를 shock 해 보라는 메시지가 떴고, 이것은 문자, 숫자 인식을 넣으면 빼내는 것과 같습니다. 이 실행 파일 구조가 긴 c파일을 보면서 flag를 찾아보자.


    >


    >


    이 파 1의 구조는 의외로 간단하다. uid와 gid만 셋팅한 후 시스템에서 출력하는 함수를 호출하여 종료한다. 이 코드만 보게 되면, 이것만 가지고 어떻게 껍질 그오은항을 얻고 flag를 볼 수 있는지 사건이 있는데 이 문재는 포인트의 배점 1선에 생각보다 간단한 글이었다 글재주가 나온 대로 베스이에 대해서 충격적인 뉴스가 있다는 것은 즉시 그것을 이용해서 풀것이었다 이 글에서 말하는 충격적인 뉴스는 이 배시에 있는 약점을 이야기한다. 이에 대해 조사하면서 셸과 해당 취약성에 대해 이해해 두자.


    셸(Shell): 셸은 리눅스의 운영체제에서 다양한 운영체제상의 기능과 서비스를 구현하는 인터페이스를 공급하는 명령어 해석의 단계이다. 이 셸의 종류에 대해서는, 다소 소리를 참조합니다. 다소 소리로 표현되듯이 シェル에는 여러 종류가 있다. 유닉스나 리눅스의 경우 프로세스(실행 중인 프로그램) 상태를 점검할 때 사용하는 ps 명령어로 알아볼 수 있다. 아래 사진을 보면 bash 셸이 보인다. 이 셸은 리눅스에서 가장 많이 사용되는 셸이었던 윈도에서는 태스크 관리자가 볼 수 없는 explorer.exe와 같은 것이 셸과 같다.


    >


    셸의 환경변수: 셸을 공부할 때 가장 중요한 것이 환경변수였다. 셸은 여러가지 환경변수를 사용하는데, 이러한 환경변수는 입니다.정의값을 변경하지만 미리 정의된 환경변수의 이름을 변경하는 것은 불가능하다.각 환경변수는 셸의 종류에 따라 설정 및 확인법이 다르지만, 리눅스의 기본 셸인 bash(본 어게인 셸)에서는 env라는 명령을 통해 환경변수를 확인할 수 있다.이들 환경변수 중에서 변경 가능한 환경변수가 있는데, 그중 대표적인 것이 PATH 환경변수였다. 이는 사용자가 명령을 입력했을 때 내부 명령어인지 확인하거나 외부 명령어, 실행파 하나로 간주한다.


    >


    셸 환경변수 설정: 셸의 환경변수는 로그인 할 때 설정된다. 이때 사용자 환경은 프로 파 1로 설정되어 프로 파 1은 글로벌, 전역 프로 파 1과 계정 프로 파 1로 두가지가 있다. 이것에 대해서는, 모두 sound를 참조합니다.bash 셸의 약점: bash에는 환경변수가 존재하며, 이 환경변수는 프로그래밍에서 등장하는 변수와 개념이 같지만, 여기서 환경변수는 그 활용도의 폭이 더 넓다. bash 에서는 환경 변수에 값이 아닌 함수를 등록하고 bash-c [변수명] 와 같이 -c 옵션으로 변수에 등록된 함수를 실행시킬 수 있다.즉, 변수에 함수만큼 등록하는 과정을 간단하게 고쳐 써 보면, 모두 sound와 같다.


    C언어의 경우 함수에서 실제로 수행되는 코드는 중괄호인 {}의 사이 부분뿐이지만 함수의 정의가 끝본인지 아닌지 본인에게 두 라인의 명령이 있으며 이는 원래 실행되어서는 안될 것이다. 그러나 bash에서 함수를 실행하기 위한 과정에서 중괄호의 끝부분인 }과 '' 사이에 있는 명령과 '그 다음 명령을 실행하는 버그가 있다.아래의 명령어를 통해 bash의 취약점을 확인할 수 있다.


    근본적으로 이 명령을 수행하면 bash의 약점으로 인해 본래 실행되어서는 안 되는 문장이 실행되게 된다.


    위에 제시된 bash의 약점으로 인해 실행할 수 없는 문장을 실행시켰는데, 그럼 실제로 ssh로 접속한 계정으로 bash를 실행해 보자. 권한이 존재하지 않지만 bash로 hi를 echo시킬 수 있었다. 즉 bash 약점이 여기서 존재할 것이라는 것이었다. 이것을 즉시 flag 파일에 적용시켜 보자.


    >


    >


    그럼 이와 같이 shellshock의 권한으로 flag를 cat하는 데 성공했고 flag이 궤도에 자신에게 온 것을 볼 수 있으며 이를 사이트에 입력하면 1점을 받게 된다. flag에 담긴 의의는 배시셸의 약점을 잘 설명해 주는 것 같다.


    >



    댓글

Designed by Tistory.