일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gof design pattern
- cron
- telnet
- 클래스 관계
- bandit21
- 디자인패턴
- 소프트웨어공학 디자인패턴
- madia designer ui design
- 생성패턴 행위패턴 구조패턴
- usecase description
- factory metohd pattern
- base64
- 리버스쉘
- status diagram
- strucuture charat
- prototypepattern 예시 example
- UseCase
- 상태다이어그램
- 암표거래
- ui 디자인 기본원칙
- ssh
- nc reverse shell
- sofrware architeture
- Bandit
- 모듈구조도
- 매크로를 바라보는 시각
- 객체 상속 속성 인스턴스 메소드 오퍼레이션
- fan-in fan-out
- 팬인과 팬아웃
- 구조적 설계
- Today
- Total
2.log
Bash 취약점에 대하여 본문
Bash
Unix/Llinux 시스템에서 사용되는 기본 shell 중 하나로, 사용자와 컴퓨터 간 상호작용을 도와주는 인터페이스
command line을 통해 사용자의 입력내용을 컴퓨터가 해석 및 실행할 수 있게 도와주는 프로그램
SSH 접속 시 bash 를 사용하면 어떻게 되는가
ssh 접속 시 bash 를 실행하는 경우, 원격 서버에 로그인 할 때 로그인한 사용자 계정으로 직접 bash shell을 실행하게 됨
즉, 일반적인 ssh 접속과 달리 로그인한 사용자의 '로그인 셸' 과 상관없이 'bash 셸'을 실행 할 수 있고 이에 따라, 접속 후 새로운 bash 셸 을 실행하게 되므로, 기본 로그인 셸에 비해 다양한 기능을 사용할 수 있게 됨
이 때 로그인 셸에서 제공하지 않는 기능이란, 사용자가 일반적으로 사용하는 셸에서 제공하지 않는 특별한 명령어나 기능으로, 예컨대 bash 셸에서는 배열(array), 함수(funtion), 조건문(if/else), 반복문(for/while) 등의 다양한 프로그래밍적 기능을 사용할 수 있게되어 작업 효율성을 높일 수 있기도 함
또한 '-t' 옵션과 함께 사용할 경우 ssh 서버 접속 시 tty(터미널)을 할당해주게 되는데, 원격 서버에 로그인하는 동안에도 로컬에서 입력한 명령이 즉시 실행되도록 하기 때문에 ssh 클라이언트에서 제공하는 로컬 셸과 유사한 셸 환경을 제공받을 수 있어 ssh 클라이언트와 ssh 서버 간 통신에서 발생하는 문제를 최소화 하고 사용자에게 로컬에서 사용하는 것과 같은 사용성을 제공하는 데 도움이 됨
명령어
# bash
ssh <user>@<server> bash
# -t, bash
$ ssh -t <user>@<server> bash
# -t, bash -p
$ ssh -t <user>@<server> bash -p
마지막 bash -p 의 경우 환경변수 'BASH_ENV' 를 설정하고 해당 변수가 설정된 스크립트를 실행하도록 히여 공격자가 원격서버에 로그인하는 경우에도 현재 사용자의 환경변수 그대로 사용하여 보안 강화할 수 있음
SSH 접속 시 Bash 취약점
이는 쉘 스크립트 취약점과 관련이 있는데, 외부 사용자가 원격 서버에 로그인 하여 악의적인 셸 스크립트를 실행할 수 있는 위험이 있음. 취약한 환경변수를 이용해 공격을 시도하는 Shellshock 취약점이 대표적으로, '() { :;};' 이라는 문자열을 환경변수로 전달하여 악용함. (해당 문자열은 셸에서 함수를 정의하는 구문으로 ':' 은 아무일도 하지 않는 함수를 뜻하며 이를 이용해 공격자가 원하는 코드를 실행 함)
예시코드
$ env '() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo Shellshock"
- env : 환경변수 설정하는 명령어
- '() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' : 취약한 문자열
- "bash -c "echo Shellshock" : bash shell 에서 echo Shellshock 명령 실해하는 코드
해당 코드 실행 시 환경 변수를 이용한 취약점 이용해 id 명령어 등을 실행시킬 수 있게 되고, 이러한 방식으로 권한을 획득해 중요한 정보를 유출하거나 시스템을 마비시킬 수 있음
대응방안
1. 최신버전 bash 와 운영 체제 패치 사용
2. 환경 변수에 대한 신뢰할 수 없는 입력 허용 x
3. -t 옵션 없이 ssh 로 원격 서버에 접속하더라도, 보안 강화를 위해 일반 사용자 대신 서비스 계정 사용
4. 공개키-비밀키 인증방식 사용 적용
'HACKING > Bandit+' 카테고리의 다른 글
포트 포워딩과 SSH 포트포워딩/터널링에 대하여 (2) | 2023.04.09 |
---|---|
sshd_config 파일 수정하여 포트 변경하기 (0) | 2023.04.07 |
install 명령어로 파일 권한 변경 하는 법 (0) | 2023.04.06 |
setuid 에 대하여 (0) | 2023.04.06 |
Shell 과 bashrc (0) | 2023.04.01 |