반응형

문제 링크

https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass

 

목표 & 사용 도구

목표: Path Traversal을 이용해 `/etc/passwd` 파일에 접근하는 것입니다.

 

사용도구: Burp Suite

 

문제 설명

해당 랩에는 상품 이미지를 보여주는 곳에서 path traversal 취약점이 존재한다고 합니다. 애플리케이션은 traversal sequences(상위 디렉터리 이동을 의미하는 문자열)를 차단하고 있지만 입력한 파일명을 기본 작업 디렉터리를 기준으로 하는 상대 경로로 처리한다고 합니다. 해당 랩을 풀기 위해서는 `/etc/passwd` 파일을 읽어와야 합니다.

 

 

문제 풀이

  • ACCESS THE LAB을 클릭하여 랩에 접속합니다. 

 

  • 랩에 접속한 것을 확인합니다.

 

  • 이때 Burp Suite HTTP history 탭을 확인해 보면 이미지를 가져오는 요청이 여러 개인 것을 볼 수 있습니다. (이미지 요청이 안 보이면 Filter를 OFF 상태로 바꿔야 합니다.)

 

  • 이미지 요청 중 하나를 선택해서 Burp Suite Repeater 기능에 세팅합니다.

 

  • `filename` 파라미터에 상위 디렉터리 이동을 이용하여 `/etc/passwd` 파일에 접근을 시도해 보면 어떠한 필터링에 의해 접근이 불가능한 것을 볼 수 있습니다.

[설명]
유닉스 계열의 운영체제에서 상위 디렉터리 이동을 의미하는 `../` 을 루트 디렉터리인 `/` 까지 도달할 수 있도록 여러 번 사용해서 `etc/passwd` 접근이 되지 않았으므로 어떠한 필터링이 작용하고 있다고 생각해 볼 수 있습니다.

 

  • 이번엔 `filename` 파라미터에 절대 경로를 이용하여 `/etc/passwd` 파일에 접근을 시도하면 접근에 성공하여 `/etc/passwd` 파일 내용을 읽어오고 있는 것을 볼 수 있습니다. 따라서 Path Traversal 취약점이 존재한다는 것을 알 수 있습니다.

[페이로드]
filename=/etc/passwd

[설명]
상위 디렉터리 이동을 의미하는 `../` 를 필터링되고 있다는 것을 확인했습니다. 서버에서는 상위 디렉터리 이동만을 필터링 하고 있었고 filename 파라미터로 전달받은 값을 작업 디렉터리 뒤에 붙여서 파일을 가져오는 것으로 보였습니다.

하지만 절대 경로를 사용하면 파일이 원래 작업 디렉터리가 아닌 절대 경로 그 자체를 사용했고 그 결과 `/etc/passwd` 파일에 접근이 가능했기 때문에 해당 내용들을 읽어올 수 있었습니다. 

 

  • 랩의 상태가 solved 인지 확인하기 위해 웹 페이지로 돌아가 보면 문제에서 요구한 대로 `/etc/passwd` 내용들을 읽는 것에 성공했으므로 랩 문제를 해결하게 됩니다.

반응형
반응형

문제 링크

https://portswigger.net/web-security/file-path-traversal/lab-simple

 

 

목표 & 사용 도구

목표: Path Traversal을 이용해 /etc/passwd 파일에 접근하는 것입니다.

 

사용도구: Burp Suite

 

 

문제 설명

해당 랩에는 상품 이미지를 보여주는 곳에서 path traversal 취약점이 존재한다고 합니다. 해당 랩을 풀기 위해서는 /etc/passwd 파일을 읽어와야 합니다.

 

 

문제 풀이

  • ACCESS THE LAB을 클릭하여 랩에 접속합니다.

 

  • Burp Suite에서 HTTP history 탭에 들어가 보면 랩에 접속했을 때 이미지를 보여주기 위해서 GET 요청으로 이미지를 가져오고 있는 것을 볼 수 있습니다.

 

  • 이미지를 가져오는 요청 중 하나를 선택해서 Burp Suite Repeater 기능에 세팅합니다.

 

  • filename 파라미터에 path traversal을 이용해 /etc/passwd에 접근해 보면 /etc/passwd 내용들이 전부 노출되고 있으므로 path traversal 취약점이 존재한다는 것을 알 수 있습니다.

[설명]
유닉스 계열의 운영체제의 경우 ../ 는 상위 디렉터리 이동을 의미합니다. 서버에서 filename 파라미터로 전달 받은 값을 이미지가 저장된 경로에 붙여서 파일을 읽어오는 것으로 보입니다. 이때 별다른 필터링이나 검증을 하지 않고 filename 파라미터 값을 그대로 사용하고 있었기 때문에 ../ 를 여러 번 사용했을 때 상위 디렉터리로 이동할 수 있었습니다.

../ 를 총 3번 사용했을 때 /etc/passwd 파일에 접근이 가능했는데 이는 이미지 파일이 저장되어 있는 디렉터리가 예를 들면 /var/www/image/ 이런 식으로 되어있었다고 추정해 볼 수 있습니다. 이때 서버가 filename 파라미터 값을 전달받아서 이미지를 가져올 최종 경로를 만든다고 하면 페이로드를 입력했을 때 /var/www/image/../../../etc/passwd이 됩니다. 여기서 상위 디렉터리로의 이동이 3번 발생하므로 /var/www/ (1), /var/ (2), / (3) 까지 상위 디렉터리로 이동을 하고 마지막에 있는 etc/passwd까지 해서 최종적으로 /etc/passwd 파일에 접근을 할 수 있게 됩니다. 

 

  • 랩의 상태가 solved 인지 확인하기 위해 웹 페이지로 돌아가 보면 문제에서 요구한 대로 /etc/passwd 내용들을 읽는 것에 성공했으므로 랩 문제를 해결하게 됩니다.

반응형

+ Recent posts