Security/Web

CSRF & File Inclusion (Low)

NOG 2023. 7. 16. 15:09

CSRF (사이트 간 요청 위조)

 

Cross-site request forgery 약자로 사용자가 자신의 의지와는 무관하게 공격자가 원하는 행위를 수행하게 한다.

비밀번호를 변경하거나 이메일 주소를 변경하거나 자금을 이체할 수 있다.

즉 사용자가 로그인이 되어있는 세션을 이용해서 원하지 않는 http 요청을 대신 수행하도록 한다.

CSRF 공격의 목적은 수정, 삭제, 등록, 권한상승, 정보유출 등이 있다.

 

 

DVWA 웹사이트 상에서 사용자가  정상적으로 로그인 한 상태에서 해커가 보낸 피싱 링크를 클릭하면
로그인 되어 있던 사이트의 패스워드를 자동으로 변경되게 해볼 것이다.

 

'''

XSS vs CSRF

공격(악성 스크립트)이 실행되는 위치

XSS는 희생자 클라이언트의 PC

CSRF는 위조된 요청을 서버에 보내어 서버단에서 실행

 

SSRF vs CSRF

위조된 요청(공격자가 원하는 동작)을 보내는 주체

SSRF는 서버(웹 어플리케이션)측에서 위조된  요청을 보내도록 한다.

CSRF는 클라이언트(브라우저)가 위조된 요청을 보내도록 한다.

'''

 

CSRF (Low)

 

 

Test Credentials는 비밀번호가 바뀌었는지 확인하는 폼이고

그 아래에 비밀번호를 변경하는 폼이 있다.

 

 

 

비밀번호를 csrfnog 으로 바꾼 요청을 프록시 도구로 가로채보았다.

 

 

패스워드 변경 페이지의 소스코드를 이용하여 csrf.html 을 만들었다.

 

Gmail 을 이용하여 시험용으로 메일을 보내고 링크를 클릭한다.

 

 

사용자가 해당 피싱사이트로 클릭하도록 유도한다고 가정하고 click!! 을 누르면

비밀번호가 csrfnog 으로 변경 URL 로 리다이렉션 되는 것을 볼 수 있다.

 

Test Credentials를 눌러 검증해보면  변경된 비밀번호로 성공적으로 로그인됨을 알 수 있다.

 

 

 

 

File Inclusion (파일 실행)

 

공격자가 악성 스크립트를 서버에 전달하여 해당 페이지를 통해 악성 스크립트가 실행되도록 하는 취약점

공격자가 지정한 파일 내에 포함된 서버스크립트 코드를 실행하는 공격이다.

공격자의 삽입파일이 웹서버 내부(로컬)에 있으면 내부파일 실행 즉 LFI (Local File Inclusion) => 파일 열람 및 실행가능

원격지에 위치하는 경우  원격파일 실행 즉 RFI (Remote File Inclusion) => http 프로토콜로 외부 서버에서 파일을 응답 받아 가져온다.

 

 

 

 

File Inclusion (Low)

 

 

(1) RFI

외부서버로부터 파일을 php page에 실행시킨다.

 

 

 

 

URL 에  page=include.php 로 되어있으며 file1.php를 누르면 page= file1.php 로 file2.php를 누르면 page=file2.php로 바뀐다. 즉 웹에서 파일을 받아와 보여주는 페이지이다.

 

 

"Remote File Inclusion Success!" 이라는 문자가 출력되는 PHP 파일을 만들고 웹서버에 파일이 잘 실행되는지 확인한다.

 

URL 의 page = 뒤의 값에 만들었던 php의 웹페이지 주소를 입력하면

파일이 실행되어 "Remote File Inclusion Success!" 출력된다.

 

 

/etc/passwd 파일을 출력하는 코드를 입력하고 새로고침하면 역시 실행되는 모습이 보인다.

 

 

 

 

(2) LFI

서버 내부의 각종 파일을 php page에 실행시키는 공격

 

내부 서버에 있는 파일만 실행시킬 수 있다.  이미 존재하는 /etc/passwd 파일을 출력해보았다.

 

 

(3) LFI - Path Traversal (경로 조작)

파일의 경로를 조작하여 허용된 디렉토리 외부의 디렉토리 또는 파일에 대한 경로를 입력할때 발생하는 취약점이다.

공격자는 대상 시스템에서 임의의 파일에 접근할 수 있다.

 

../../../../../../ 으로 해당 서버의 최상위 디렉토리로 이동할 수 있다.

이렇게 상위 디렉토리로 이동시킬 수 있다.

윈도우는 \ 이고 file download와 같은 맥락으로 사용된다.

/etc/passwd파일은 /etc디렉터리 안에 있다. /etc/passwd로 명령어를 수행하려면 최상위 디렉터리로 가야한다.

 

 

한번씩 예측해보거나 6번 보다 적게 ../를 입력할 시에 오류 문구를 통해서도 알 수 있다.

 

 

 

 

 

'Security > Web' 카테고리의 다른 글

SQL injection & Blind SQL injection (Low)  (0) 2023.07.16
File Upload & Insecure CAPTCHA (Low)  (0) 2023.07.16
Brute Force & Command Injection (Low)  (0) 2023.07.14
프록시와 프록시 툴  (0) 2023.07.12
웹 취약점 -4  (0) 2023.07.12