wonder
정보보안 스터디 - 7주차 3일 - CSRF 시나리오: 글 작성 시키기 본문
☞ CSRF 정리
최종적으로 정리를 하자면 CSRF는 사용자의 클릭만으로 다른 사용자의 세션 권한을 이용해서
비밀번호를 바꾸거나, 이메일을 바꾸거나, 돈을 보내거나, 글을 쓰는 등의 행동을 유도하는 공격입니다.
url 유도 또는 Stored XSS글쓰기 방식을 이용하여 공격합니다.
그냥 애초에 세션탈취를 하면 되지 않느냐~ 라고 생각할 수 있는데 Reflected XSS가 막혀있을 경우는 당연히 CSRF 방법을 써야할 것이고 Stored XSS 공격이 가능할 경우에는 물론 세션 탈취를 하는 것이 좋지만 사용자의 권한으로 여러가지 행동을 유도하는 것이 공격의 포인트입니다. 그래서 Stored XSS와 CSRF의 연계는 압도적인 시너지를 불러일으킵니다.
세션탈취를 못할 경우나 세션탈취를 원하는 게 아니라 그 사람의 권한으로 행동을 하게 하기를 원할 때 시도하는 공격입니다.
XSS가 되어야지 CSRF가 되는 관계는 아니라는 말이죠.
url 링크로 클릭을해도 안먹히는 경우에는 (즉 서버에서 GET방식의 변경을 차단한 경우)
결국 POST방식으로 정보변경을 할 수 밖에 없는데
이 때 Stored XSS를 필수적으로 연계해서 사용합니다.
Stored XSS가 가능한, 즉 스크립트 삽입이 가능한 게시판에서
글을 클릭을 하면 POST 방식으로 이동하여 정보를 변경하도록 하겠습니다.
☞ CSRF 공격 시나리오
시나리오: 사용자A(wonder123)가 관리자B(wonder12)의 계정 권한을 이용해서 글쓰기를 하게 합니다.
일단 공격자입장에서 변수값이 예측가능해야하기 때문에
초기 설정: 글작성할 때의 비밀번호는 제거했습니다.
처음에 글 쓰고 나서 프로세스를 확인하기 위해 글을 직접 작성합니다.
POST방식으로 보내는 것을 볼 수 있습니다.
혹시 모르니 GET방식으로 변경을 시도해봅니다.
글이 작성되었다고는 뜨는데 POST방식으로만 받는 값이다보니 아무 값도 찍히지 않았습니다.
그러면 POST방식으로 CSRF를 접근할 수 밖에없습니다.
POST 방식으로 전달해야하기 때문에
name은 변수이름, value는 내용으로 해서 hidden으로 전달합니다.
잘 등록이 되었습니다.
하지만 여기서 중요한 점은
버튼 클릭 등의 행동이 없어도 자동으로 전송해야 한다는 점이고
사용자에게 보이지 않아야 한다는 점입니다.
☞ 자동 전송
글을 누르는 순간 내용이 로드가 됩니다.
로드가 되면 첫번째 폼을 submit 실행시킵니다.
☞ 보이지 않도록 처리
글이 로드되는 순간 csrf_form을 submit 실행시키고
실행은 iframe 내에서 실행시킵니다.
하지만 실행은 되었지만 안보입니다.
여기서 iframe은 인터넷안의 인터넷으로
새창을 띄우지 않고 내용을 로드하는 방법입니다.
유의할 점은 캡처에서처럼 엔터를 하면 html에서는 <br>로 처리되기 때문에 실행에 오류가 생깁니다.
코드는 한줄로 이어써야 합니다.
☞ 공격 실행
사회공학적 기법을 이용하여 관리자가 궁금할법한 제목을 적고 클릭하기를 기다립니다.
잠시 후 확인한 관리자(wonder12)는 글을 클릭하고 의도치않게 글작성을 합니다.
이렇게 CSRF 코드를 제작하고 공격이 가능한 이유는 공격자가 이용자의 행동했을 때 변수들을 예측할 수 있기 때문입니다.
기존 비밀번호를 입력해야하는 등 예측불가하게 막혀있을 때는 이 공격을 사용하기가 어렵습니다.
'hacking study > CSRF' 카테고리의 다른 글
정보보안 스터디 - 8주차 4일 - CSRF토큰, VPN, 보안툴 (0) | 2022.12.05 |
---|---|
정보보안 스터디 - 8주차 2일 - CSRF 공격 상세 연구 (0) | 2022.12.03 |
정보보안 스터디 - 8주차 1일 - CSRF 대안 방안 (0) | 2022.12.02 |
정보보안 스터디 - 7주차 1일 - CSRF 개념 (0) | 2022.11.25 |