CSRF공격
본 게시글의 모든 내용은 단순히 공부를 위한 목적으로 진행한 것 임으로 절대 악용해서는 안될뿐만 아니라 공격에 대한 모든 책임은 본인에게 있습니다.
CSRF란?
Cross-Site request forgery 의 약자로
사용자의 브라우저에서 해당 사용자의 권한으로 어떤 기능을 수행하도록 만드는것 이라 정의할 수 있다.
XSS의 취약점이 존재할시 CSRF의 취약점이 존재할 수 있는 확률이 90%이상이고
2008년 옥션이 해킹 당해 1863만명의 개인정보가 유출 되었을때도 CSRF공격 기법이 이용 하였다.

CSRF에 대한 간단한 실습진행
공격자 : 윈도우 2003
피해자 : 윈도우 XP
1.관리자의 글 수정

피해자의 컴퓨터에서 관리자가 입금하라는 내용의 글(62번)을 작성하였다.

해커는 글을 수정하면 어느 부분으로 이동하는지 보기위해 테스트글을 하나 작성하였고 이제파로스를 킨후 수정버튼을 눌러보면 어느곳으로 이동하는지 알 수 가 있다.

제일 윗줄을 보면 사진상 잘 보이지는 않지만 board_update.asp 로 넘어가는걸 확인 할 수가 있다.

공격자는 소스보기를 눌러서 소스를 한번살펴본다.

소스를 살펴보면 action을 통해 board_update.asp로 넘어가고
주목해야 할 부분들은 name 다음에 오는 인자들이다.
user,title,content들이 인자들이다.
user인자는 글의 작성자이고 title은 글의제목 contents는 글의내용을 뜻하고 있다.

현재 게시판에는 hacker가 작성한 63번글과 관리자가 작성한 62번글 두개가 존재한다
해커는 관리자가 쓴 62번글의 내용을 변경할 것이다.
현재 62번 글의 제목은 회원님들은 보세요 로 작성되어있다.

해커는 자신이 올린 글을 관리자가 클릭하도록 유도하기 위해 관리자님 봐주세요 라는
제목을 가지고 글을 작성을 할것이다.
소스를 살펴보면 form의 이름을 csrf로 주고 action을 통해서
192.168.43.196(피해자의IP)/board_update.asp 로 이동을 하고 input type을 hidden으로 줌으로서 내용을 숨기고 name부분에는 아까 위에서 설명했던 3가지의 인자를 넣어주고
62번글의 제목은 회원님들은 보세요 였지만 지금 소스에서 공지 사항입니다 라는 제목으로 변경해주고 글안의 내용을 변경하고 제일 밑 부분을 보면 value값이 있는데 저부분은 글의 번호를 뜻하는 것임으로 해커는 지금 62번글을 변경할 것임으로 62로 변경해준다.

관리자는 해커가 작성한 64번글을 클릭하였더니 잠깐 반짝 이더니 다시 게시판으로 돌아 왔다.

관리자가 작성한 62번글을 들어가보니 제목이 아까 해커가 작성한 소스의 공지사항입니다 로 변경 되었고 회비도 30만원으로 바뀌고 계좌정보 은행정보 등이 변경 되었다.
이처럼 피해자들은 해커가 작성한 계좌정보등에 입금을 하게 됨으로서 피해를 입게 된다.
2.관리자가 쓴글 삭제하기

관리자가 피싱을 조심하라는 내용으로 글을 작성하였다 해커는 이글을 삭제해볼꺼다.

해커는 관리자의 글을 삭제하기 위해 아까 테스트를 위해 올려놧던 글의 삭제를 누르고 파로스로 잡아 본다.

파로스에 잡힌 내용을 보면 192.168.43.196(피해자IP)/board_delete.asp로 넘어가는걸 알 수가 있다 해커는 이점을 이용해서 관리자의 글을 삭제할 것이다.

소스를 살펴보면 form의 이름은 csrf로 설정해주고 action을 통해 192.168.43.196/board_delete.asp로 이동을 하게 해주고 아까 획득 했던 인자들을 이용할 것이다. 밑에 줄을 살표보면 vaule=65로 되어있는데 65는 삭제할 글의 번호이다.

피해자의 컴퓨터에서 관리자로 접속후 게시판을 보니 관리자님 질문이라는 글이 있다.
관리자는 질문이라는 제목만 보고 글을 클릭해본다.

관리자가 글을 클릭했을 뿐인데 화면이 반짝 하더니 관리자가 작성했던 65번 글이 사라졌다
관리자가 글을 눌럿다는 증거로 66번 해커가 작성한글의 조회수 1을 보면 알 수 있다.
이렇게 관리자가 작성한 글이나 일반 사용자들이 작성한 글을 마음대로 삭제를 할 수 있다.
3.관리자 권한으로 글 추가하기

해커는 글을 작성하면 어느부분으로 넘어가는지를 확인 하기 위해 테스트 라는 내용으로 글을 써놓고 파로스로 잡아본다.

사진에는 잘 안보이지만 board_write_reg.asp로 넘어가는걸 확인 할 수 있다. 이점을 이용하여 원하는 권한으로 글을 추가 시키겠다.

소스를 살펴보면 form name은 csrf로 하고 action을 통해 board_write_reg.asp로 이동되게 해준후 ENCTYPE="multipard/form-data부분은 파일 타입을 설정해주는 부분이다. hideen을 사용해서 소스를 숨겨주고 title인자를 이용해 제목을 회원 분들은 보세요 로 설정해주고 content인자로 내용을 작성해준다.

피해자의 컴퓨터에서 관리자로 접속했다.
관리자님 다시 질문 이라는 내용의 글이 있다.
관리자는 아무 의심 없이 저글을 클릭 하게된다.

관리가 다시 질문요 라는글을 클릭했더니 화면이 반짝 하더니 다시 게시판으로 이동 되었고 69번글의 회원분들은보세요 라는 제목으로 작성자가 관리자인 글이 올라온걸 확인 할 수 있다.

글의 내용을 보니 아까 해커가 작성한 소스에 있는 내용으로 글이 작성 된걸 볼 수가 있다.
이처럼 CSRF공격을 통해 글 내용 변조, 글 삭제, 권한 상승 등 여러가지 공격을 할 수 있다.
[출처] http://threethree.tistory.com/3