분석 일기 - file upload 취약점
글 작성자: Universe7202
🚪 Intro
취약점 및 CVE 획득을 위해 분석하고 있는 프로젝트가 있습니다.
file upload를 통한 webshell 획득 과정을 정리하고자 합니다.
💡 Analysis
분석하려는 웹 사이트에는 업로드 기능이 존재 합니다. 다만 ico, webp, svg 확장자만 업로드 할 수 있습니다.
그런데 아래 코드를 보면서 의문점이 생기더라구요.
보통 파일 업로드 관련 기능을 만들 때, 확장자 검증은 .(dot) 을 기준으로 문자열을 나누어 맨 마지막 값을 확장자로 판단 합니다. 이렇게 추출된 확장자로 업로드 할 파일을 필터링 하게 되죠.
하지만, 위 코드는 `strpos()` 함수를 사용하여 업로드 파일의 확장자를 검사하고 있습니다.
이 함수는 문자열의 위치를 int 로 리턴합니다. 예를 들면, 아래와 같습니다.
다시 돌아와서 문제의 코드를 보면, if문으로 `strpos()` 함수의 리턴 값이 `false` 가 아니라면 업로드 할 수 있습니다.
즉, `$filename` 변수에 `simple.svg` 가 아니라 `simple.svg.php` 라고 업로드 하면, if 문을 bypass 할 수 있겠네요.
최종적으로 아래 사진처럼 webshell 을 업로드 하여, 시스템 명령어를 실행할 수 있게 되었습니다.
'🔒Security' 카테고리의 다른 글
[분석 일기] - EJS, Server Side Template Injection to RCE (CVE-2022-29078) (6) | 2022.07.21 |
---|---|
Node.js querystring 함수 분석과 bug 설명 (0) | 2022.07.09 |
분석 일기 - php dynamic variable (0) | 2022.04.03 |
Foobar CTF 2022 writeup (0) | 2022.03.06 |
nodejs express routing case sensitive options (0) | 2022.03.06 |
댓글
이 글 공유하기
다른 글
-
[분석 일기] - EJS, Server Side Template Injection to RCE (CVE-2022-29078)
[분석 일기] - EJS, Server Side Template Injection to RCE (CVE-2022-29078)
2022.07.21 -
Node.js querystring 함수 분석과 bug 설명
Node.js querystring 함수 분석과 bug 설명
2022.07.09 -
분석 일기 - php dynamic variable
분석 일기 - php dynamic variable
2022.04.03 -
Foobar CTF 2022 writeup
Foobar CTF 2022 writeup
2022.03.06