YeoPEVA
해커스쿨 FTZ level3 본문
level3 풀이입니다.
level3 에서는.. 시작 전에 힌트를 드리자면, 커맨드 인젝션 공격이 사용 됩니다. [추후 자세히 포스팅 하겠습니다.]
음.. 여기서 더 설명하기도 그러니, 문제를 풀면서 간단히 설명 드리겠습니다.
[이번 문제의 힌트 입니다.]
힌트를 확인하니, /bin/autodig 를 이용하여 level4의 권한을 얻으라고 합니다.
또한 추가 힌트로 동시에 여러 명령어를 사용하려면?
문자열 형태로 명령어를 전달하려면?
과 같은 힌트가 적혀 있습니다.
[find 를 통해, 확인]
/bin/autodig [Setuid]가 걸려 있음을 확인 가능했습니다.
[실행]
그 뒤, 실행을 해봄으로써 어떤 역할을 하는 프로그램인지 확인을 해보았습니다.
Dig..?
여기서 DIg란,
리눅스에서 DNS 조회를 하게 될 경우, 사용되는 도구입니다.
[이와 관련해서 밑에 링크를 추가해두었습니다.]
음.. 하지만 이번 문제의 중요한 점은 이 점이 아니라, 어떻게 하면 level4의 쉘 혹은 패스워드를 얻는지가 관건 입니다.
어떻게 하면 위 /bin/autodig 를 통해 쉘 or 패스워드를 얻을 수 있을까요?
그 정답이 바로 커맨드 인젝션 입니다.
[System 함수 사용 확인]
[해당 프로그램, 내부 문자열 출력]
위 사진을 통해 해당 프로그램이 system 함수를 사용한다는 것을 알 수 있었습니다.
위 system 함수에는 문제점이 있는데, 해당 문제점을 통해 커맨드 인젝션을 진행해보도록 하겠습니다.
#System 함수의 문제점은..?
시스템 함수의 문제점은 인자값 (커맨드)를 운영체제 명령으로 실행시키기 떄문에 상당히 위험합니다.
windows 의 경우 환경변수 등을 이용하여 CMD.exe를, linux의 경우 /bin/sh을 통해 입력된
인자 값을 처리하기 때문에, 시스템에 직접적인 영향을 끼칠 가능성이 높습니다.
+ 어떻게 커맨드 인젝션을 진행하게 되나요?
이번 프로그램의 경우, System 함수의 인자 값을 체크하지 않기 때문에
다중 명령어 즉 ; && 와 같은 값을 걸러내지 못하기 때문에
앞에는 정상적인 인자 값을 넣어주고, 뒤에는 세미클론[;]을 통해 또 다른 명령어를 작동하게 할 수 있다는 것 입니다.
여기서 힌트를 체크해보자면..
[1] 동시에 여러 명령어를 전달하고자 한다면? -> ;
[2] 문자열 형태로 명령어를 전달하고자 한다면? -> ""로 감싸주면 됩니다.
2번을 왜 하냐고 물으신다면.. 문자열로 감싸주지 않게 되면, 앞 명령어만 해당 /bin/autodig에 전달되어,
level4 권한이 아닌 level3 권한으로 명령어가 진행되니.. 패스워드를 얻어낼 수 없기 때문이죠 ㅠㅠ..
[풀이 성공]
넵.. 성공 입니다.
[이런 방법 또한 가능]
Solve
Dig
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_dig
http://regularmotion.kr/dig-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95/
Command injection
https://bpsecblog.wordpress.com/choirish_command_injection/
https://www.owasp.org/index.php/Command_Injection
System
https://msdn.microsoft.com/ko-kr/library/277bwbdz.aspx
http://pencil1031.tistory.com/53
다중 명령어
http://brownbears.tistory.com/205
참고 서적
문제 풀이로 배우는 시스템 해킹 테크닉
'#Pwn, Crypto > 해커스쿨' 카테고리의 다른 글
해커스쿨 FTZ level4 (0) | 2018.02.18 |
---|---|
해커스쿨 FTZ level2 (0) | 2018.02.04 |
해커스쿨 FTZ level1 (0) | 2018.01.29 |
해커스쿨 공략 전 계획 (0) | 2017.07.23 |
해커스쿨 ftz - level1 공략 (0) | 2016.12.03 |