일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- cmd2
- 포너블
- Couldn't read row 0
- 클라우드란?
- col -1 from CursorWindow
- 액션바 필요없숴
- 10814
- 6566
- pwnable
- 백준
- pwable.kr
- 블록체인
- 애너그램 그룹
- kotlin
- 코틀린
- SQLiteConstraintException
- 페니빙
- UNIQUE constraint failed
- 쏘큩
- Drive-By-Download
- 클라우드가 뭐야
- Make sure the Cursor is initialized correctly before accessing data for it.
- 나이순 정렬
- 파이썬
- tlqkf
- java.lang.IllegalStateException
- pwnable.kr
- python
- cmd1
- Docker
- Today
- Total
푸르미르
pwnable.kr 10. shellshock 본문
접속 후 cat shellcode.c
setresuid는 set real effective saved user id를 뜻하고 setresgid는 set real effective saved group id를
의미한다.
system("/home/shellshock/bash -c 'echo shock_me'"); 이 코드는 /home/shellshock/bash 를 실행하고
'echo shock_me' 하라는 뜻
shellshock라는 공격 기법은 이번에 처음 알았는데, 알아보니까
환경변수에 코드를 삽입하여 예상치 못한 행위를 하는 공격 기법이다.
그래서 환경변수를 등록하여보자.
x라는 환경변수를 등록 후 그 환경변수의 값을 출력해보았다.
환경변수의 값을 출력할 때 printenv를 사용하지 않고 x만 입력하면 실행되지 않는다. 왜냐하면 x는 변수이지
함수가 아니기 때문이다.
그래서 나는 환경변수의 함수를 선언해보겠다.
funex라는 이름으로 ohio가 출력되도록하는 함수를 선언해주었다. 그리고 " exprot -f 함수이름 " 형식으로
함수를 환경변수에 등록해주었다. 그리고 함수이름만을 입력했을 때 내가 원했던 ohio가 출력되는 것을
확인할 수 있었다.
자 그러면 shellshock 공격을 해보자.
함수 선언 문법과 비슷하게 funex2를 선언해주었다. funex2를 printenv로 값을 출력하게 했을 때,
''(작은 따옴표들) 사이의 문자열들의 내용이 그대로 나오는 것을 확인할 수 있다.
bash를 다시 실행하고 funex2를 입력하니 함수 내용의 명령어 echo가 실행됨을 알 수 있다.
신기하다...!
구글링을 해보니 취약점이 있는 bash를 실행하게 되면 등록한 환경변수를 읽어오는데에 함수 문법으로 되어있으면
얘 스스로 함수라고 판단하고 변수를 함수로 등록해버린다는 것이다.
그러면 이 취약점을 이용하여 flag를 보면 될 거 같다. 신난다.
답은 only if I knew CVE-2014-6271 ten years ago..!!
'SECURITY > pwnable' 카테고리의 다른 글
pwnable.kr 12. blackjack (0) | 2021.05.11 |
---|---|
pwnable.kr 11. coin1 (0) | 2021.05.05 |
pwnable.kr 9. mistake (0) | 2021.04.28 |
pwnable.kr 8. leg (0) | 2021.04.28 |
pwnable.kr 7. input (0) | 2021.04.06 |