CSRF 공격
Cross Site Request Forgery의 약자. 사이트 간 요청 위조
사용자에게 피싱을 해 링크를 누르게 하고 사용자 모르게 사이트의 어떤 기능을 실행
주로 사용자 패스워드 변경을 하는데 사용.
피싱은 사회공학 기법 중 하나로 이메일이나 게시판 등을 이용해서 사람들을 낚음.
1. 사용자가 정상 접속 로그인
2. 사용자가 로그인 되어있는 동안 해커가 이메일을 보내 피싱 시도
3. 사용자가 링크를 클릭한 시점에 패스워드 변경 요청이 자동으로 전송
4. 패스워드가 변경되어 해커가 변경된 패스워드로 접속함.
필수조건: 사용자가 피싱을 당하는 시점에 해당 사이트에 로그인 되어있어야 함.
(세션, 쿠키 값이 자동으로 요청에 포함되기 때문)
실습(low): 요청에 change 파라미터가 전송됨 비밀번호 nomal로 변경실습
CSRF 공격 예제 파일 wget을 통해 다운로드
cp csrf.html /opt/lamp/htdocs/ 카피 명령어 실행
자바스크립트의 Ajax 기능 이용해 url과 파리미터를 똑같이 구성(hacker)
이메일을 이용해 해당 링크를 누르게 끔 표시
comparer: 첫번째 클릭 후 두번째는 ctrl누르면서 클릭. 마우스 눌러 Comparer(request)
referer, origin은 현재 요청이 어디서 시작되었는지 알려줌
referer는 정상적인 경우 localhost이며 아니면 해커사이트로 있음.
실습(medium): 링크 실행 후 버프 스위트에서 해당 요청의 response 확인
request render수행 시 실패된 것을 확인
코드에 HTTP_REFERER 변수로 referrer 헤더를 확인
referrer 헤더는 어떤 요청이 전송될 때 이전에 어떤 경로로부터 요청되는 지 확인
referrer 주소가 해당 서버의 주소와 동일한지 확인해야 함
-CSRF 공격이 해커 사이트가 아니라 웹서버 자체에서 시행된 것이라면 방어 어렵
(웹사이트 페이지에 취약점이 존재한다면 해커가 자바스크립트로 csrf공격 가능)
-eregi 함수: 앞의 문자열이 뒤에 문자열에 포함되는지 확인
(서버 주소가 referrer 헤더 내에 포함되는 지 확인)
referrer 헤더에 서버 주소가 포함되기만 하면 대응 불가능
공격 파일에 서버주소 이름이 포함되어 있다면 대응 불가능
referrer 헤더를 확인할 시 정확하게 referrer주소가 서버주소가 맞는지 확인 필요
대응: 현재 패스워드를 입력해야 함. 해커가 현재 패스워드를 모르면 대응 가능
Cross Site Scripting 공격에 대응해야 함.
파일 인클루젼 공격
주로 php 애플리케이션에 발생
php파일에 include()를 이용해 다른 파일을 삽입할 수 있기 때문
include할 파일을 웹 요청을 통해 지정할 수 있는 경우 해커가 그 값을 조작하여 원하는 파일을 처리할 수 있도록 할 수 있음.
로컬파일인클루젼(LFI): 이미 시스템에 존재하는 파일을 인클루드
리모트파일인클루젼(RFI): 외부에 있는 파일 원격으로 인클루드. 공격에 취약
1. 정상적인 경우 웹 어플리케이션은 file.php파일을 인클루드함.
file.php이 웹 어플리케이션을 통해 지정됨
2. 해커는 file.php 대신에 다른 서버의 다른 파일을 인클루드할 것을 지정
3. 웹 어플리케이션이 검사하지 않을 경우 파일을 인클루드해서 악성파일을 실행하게 됨.
실습(low, RFI): 파일 만들어 인클루드 시킬 악성파일을 간주하도록 함.
1. 터미널에 gedit /opt/lampp/htdocs/bad.php로 텍스트 에디터 열기
2. dvwa는 include.php가 인클루드되어 전체 페이지를 표시하는 중
3. dvwa url에 http://127.0.0.1/bad.php 입력
4. dvwa에 해당 파일이 나오는지 확인 가능
5. bad.php에 system(‘cat /etc/passwd’);를 삽입하면 해당 출력 확인 가능
실습(low, LFI): 시스템에 이미 존재하는 파일만 접근 가능. RFI보다 약함
1. dvwa url 뒤에 /etc/passwd를 입력
2. 해당 시스템의 명령어 결과 확인 가능
패스 트래버셜 공격: ‘../’을 이용해 현재 경로의 상위 디렉토리로 이동 (윈도우 “..\”)
실습(medium): 주소창에서 원격사이트 접속하는 프로토콜인 “http://” 지우는 부분
패스 트래버셜은 막는 “../”을 지우는 부분.
한 번만 지우기 때문에 해당 단어를 한번 더 적으면 공격 가능(ex. hthttp://tp://)
대응: 파일이 정확하게 “include.php”을 확인해 정확한 파일인지 확인
인클루드 되는 파일이 사용자의 입력을 통해 전달되지 않게 하는 것이 완벽.
그렇지 않으면 검사하는 과정 필요.
'화이트 해커가 되기 위한 8가지 웹 해킹 기술' 카테고리의 다른 글
6주차 XXS(크로스사이트스크립팅) 공격 (0) | 2021.08.16 |
---|---|
5주차 SQL인젝션 (0) | 2021.08.16 |
4주차 파일업로드 공격 (0) | 2021.08.16 |
2주차 브루트 포스 공격, 커맨드 인젝션 공격 (0) | 2021.08.16 |
1주차 웹 해킹 기술 탐색 (0) | 2021.08.16 |