겉바속촉
[보안] 경로조작 본문
다운로드 기능 구현시 유의사항
외부 입력값이 서버 내부 파일을 참조하는 용도로 사용되는 경우(= 파일 식별자로 사용되는 경우),
경로 조작 문자열(. .. / \ 등) 포함 여부를 확인하지 않고 사용하여 권한 밖의 파일에 접근할 수 있는 취약점
download.jsp?filename=/data/upload/cat.jpeg ---> 파일의 저장 경로가 노출되는 문제점 ~~~~~~~~~~~~ File f = new File(filename); f.read(...) |
download.jsp?filename=cat.jpeg ~~~~~~~~~~~~ File f = new File("/data/upload/" + filename); ---> 물론 위의 경로와 결론은 동일하지만 캡슐화를 했다는 것이 차별점 f.read(...) |
저렇게 해주는 이유는 바로
내부 처리 로직을 캡슐화하기 위해서입니다.
내부 저장소를 외부에서 모르게 하는 것이 가능하쥬!!!
download.jsp?filename=../../../../../../../etc/passwd ---> 해당하는 파일이 어떠한 경로에 있는 지 모르지만 ~~~~~~~~~~~~ File f = new File("/data/upload/" + filename); ---> 결국 /data/upload/ 부분을 무력화시키는 겁니다. f.read(...)
|
경로조작에 대해서 다시 정리해보면~
외부 입력값이 파일의 식별자로 사용되는 경우
경로 조작 문자열(. .. / \ 등) 포함 여부를 확인하지 않고 사용하는 경우
⇒ 권한 밖 파일에 대한 접근이 가능합니다!!!!!!
WebGoat에서 한 번 해보도록 하겠습니다:)
Access Control Flaws - Bypass a Path Based Access Control Scheme 로 가겠습니다.
도움말 제공페이지 입니다.
도움말은 저 페이지에서 알려주는 디렉터리에 파일형태로 존재하고 있습니다.
windowXP로 가서 저 경로대로 열어볼게요!!
그럼 저 WebGoat사이트에 있는 파일들이 주르륵 쌓여있습니다.
방법1) 개발자 도구 활용
: 사용자 화면에서 브라우저가 제공하는 개발자 도구를 이용하는 것입니다.
이제 개발자도구를 킨 상태에서 하나 클릭해볼게요
해당 value를 다음과 같이 고쳐주었습니다.
../../../../../../../../../../../../../SecureCoding/tools/apache-tomcat-6.0.24/conf/tomcat-users.xml
이렇게 바꿔준 값을 서버로 전달해줄 것입니다.
View File을 클릭해주면~~ Congratulations!!
이렇게 성공하고 나면 서버에 있는 원래 접근할 수 없는 내용이 출력이 됩니다.
방법2) proxy 활용
: 프록시 도구를 이용해서 서버로 전달되는 값을 변경하는 것입니다.
변경된 값이 파일의 식별자로 경로 조작 문자열 포함 여부를 검증하지 않고 사용 ⇒ 권한 밖 파일에 대해 접근이 가능
Intercept를 on으로 해둔 상태에서 WebGoat의 파일 하나를 클릭해주었습니다.
그럼 위의 파일 경로를 또 바꿔주는 것이쥬!!
다음과 같이요!!
그래도 아까와 동일하게 Congratulations 나오죠?!
이번에는 @Attacker 가상머신에서 bee-bx/bWAPP으로 가볼게요
그리고 Choose your bug 클릭해서 골라줄 것!!
해당 페이지에 해당 시스템의 사용자 정보(/etc/passwd)가 출력되게 해야합니다.
힌트는 다음 보이는 message.txt 입니다.
아마도 파라미터 값으로 넘어가는 것이 특정 파일명인 것 같쥬??
그렇다면 내부처리는 특정 디렉터리의 파일을 읽어서 출력해내는 것일 겁니다.
경로조작을 해주어야겠죠?!
../../../../../../../대략 이쯤이면 될 것같다~할때까지 넣어주고 /etc/passwd 라고 입력!!
다음과 같이 주르르르륵 다 나오고있죠?
입력값 자체가 파일 식별값으로 쓰고 있음을 우리가 얼른 알아차려야했던 것이 포인트입니다.
Access Control Flaws - Bypass a Path Based Access Control Scheme
'IT 일기 (상반기) > 네트워크 및 시스템 보안' 카테고리의 다른 글
[보안] OS Command Injection Reverse shell (0) | 2021.02.13 |
---|---|
[보안] WebGoat_Malicious File Execution (2) | 2021.02.12 |
[보안] 파일 업로드 취약점 방어 (0) | 2021.02.12 |
[보안] 웹 도큐먼트 루트 (0) | 2021.02.11 |
[보안] 파일 업로드 취약점 (1) | 2021.02.11 |