CSRF 와 SSRF
CSRF 공격
설명
- Cross Site Request Forgery
- 피해자가 임의의 요청을 서버에 보내게하는 공격이다.
발생 위치
- 모든 요청에서 방생할 수 있다.
- 중요한 요청에서 발생할 수 있다.
- 게시판 글 작성 CSRF or 비밀번호 변경 CSRF ( 상황에 따라 위험도가 달라질 수 있다.)
CSRF 공격 기법
GET Method
- URL 링크를 만들어 사용자에게 보내 클릭하게 만들면 된다.
- 로그인 한 다음 볼 수 있는 페이지에 URL를 두고 클릭하게 해야한다.
POST Method
- 무조건 XSS 취약점을 같은 도메인에서 찾아야 한다. 왜냐하면 같은 도메인이어야 로그인 세션이 그대로 남아있기 때문이다. ( 쿠키 값 유지 )
Referer Bypass 포인트
- meta 태그를 이용하여 우회를 시도할 수 있다.
- 단 서버에서 referer 값이 없을 때는 검사를 안하고 통과시켜줘야 한다.
<meta name="referrer" content="no-referrer">
CSRF Token 우회
- 서버에서 랜덤한 CSRF Token을 만들고 세션에 저장한다.
- 중요한 요청 페이지에 CSRF Token을 넣어준다.
- 공격자는 CSRF Token을 마음대로 만들 수 없다.
- 하지만 동일한 도메인에 XSS 취약점이 존재하면 CSRF Token 우회가 가능하다.
<iframe src="csrf 토큰이 들어있는 페이지" onload="load()">
</iframe>
<script>
function load(){
var value = document.getElementsByTagName("iframe")[0].contentWindow.document.forms[0].csrf_token.value;
}
</script>
CSRF 대응방안
- 지키고자하는 요청에서 인증정보 추가하기. (예: 옛날 비밀번호 한번더 입력 , 문자 인증 번호 등 … )
- 애매한 요청 (예: 게시판) 일 때는 Referer Check, CSRF Token을 추가하기.
SSRF 공격
설명
- Server Side Request Forgery
- 서버가 임이의 요청을 보내게하는 공격이다.
- 많은 API를 사용함으로써 공격하기 더욱 쉬워졌다.
발생 위치
- 파라미터로 URL을 받는 경우.
- 서버가 외부 자원(리소스)를 이용하는 곳.
- 예 :
view.php?weatherAPI=https://kakao.com/~~~
서버에서 URL 동작 방식
- 서버가 사용자가 보낸 요청으로 API주소를 받는다.
- 서버에서 주소로 요청한다. 즉 데이터를 가지고 온다.
- 서버에서 가지고온 데이터를 가지고 페이지를 만들어 사용자에서 응답한다.
공격 유형
서버 내부 접속하기
- admin 페이지 접근을 목적으로 한다.
- 파라미터로
http://localhost
admin 페이지 접속 가능. - 파라미터로
ftp://localhost/etc/passwd
임의의 파일 열람 가능. - 만약 공격자가 내부 서버의 아이피 주소 유형을 알아냈다면 알아낸 주소를 가지고 포트 스캔이 가능하다.
http://192.168.0.x:80
즉 주소값을 계속 변경하여 내부망에 존재하는 웹 페이지에 접근가능하다.
SSRF 대응 방안
- 파라미터로 URL을 안 받으면 된다.
댓글남기기