네트워커의 보안 티스토리


HTML(Hypertext Markup Languages)


Hyper text - 기능이 추가된 텍스트 ex) 링크


웹브라우저를 통해 파싱이라는 작업을 한다.

다른 프로그래밍 언어를 활용해서 동적인 페이지를 만들 수도 있다.



한계: 동적인 페이지는 스스로 구현이 안된다.



CSS, SSS



DOM




###########################

구글 지도


<!DOCTYPE html>

<html>

<body>


<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3162.267163467793!2d126.99859976518783!3d37.5723261797968!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x357ca326d6772065%3A0xaaad67d085fbc2c!2z7JWE7J207Yuw67GF7YGsIOyXsOyngOygkA!5e0!3m2!1sko!2skr!4v1489019630721" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>

<p>Your browser does not support iframes.</p>

</iframe>


<p>Click the button to change the background color of the document in the iframe.</p>


<p id="demo"></p>


<button onclick="myFunction()">Try it</button>


<script>

function myFunction() {

    var x = document.getElementById("myframe");

    x.style.backgroundColor = "red";

}

</script>


</body>

</html>







win2000에서 설정하고

xp에서 확인이 가능하다.



############


* JSP


만들기는 까다롭지만 , 보안성이 뛰어나서 점유율이 점점 상향되고 있는 언어




* ASP


Request.QueryString - Get 방식

Request.Form - post 방식











이런 결과가 나온다.







요청메시지 확인이다.





서버에서 실행되는 코드는 노출안되는게 좋은데, 노출되지 않는게 보인다.

만약 노출된다면 공격자의 대상이 될 것이다.



빈칸은 의미단위 구분으로 사용하는데 보통, 잘리면 안되기 때문에 %20으로 인코딩된다.





* Encoding


- ASCII

영문 알파벳을 사용하는 대표적인 문자 인코딩 방법

7Bit로 이루어져있고 총 128개의 문자를 구현한다.


- URL Encoding

Meta Character : ~ ? & = @ % + :// # 등으로 이루어진 정보



You&I 를 출력하고 싶은데 string=You&I 로 해버리면

&를 파라미터로 인식한다.

인코딩 해서 전달해줘야 위와 같이 나온다.




* Force Full URL Encoding


강제적으로 모든 문자를 URL Encdoing 하는 방법

IDS(침입 탐지 시스템) 등을 우회하기 위한 용도로 사용될 수 있음






* HTML Encoding






태그를 실행하지 않고 그대로 보여주기 위해

< 는 &lt; >는 &gt;를 사용해 표시되게 했다.



XSS 공격에 대한 대응하기 위한 방법으로도 사용된다.


* Base64 Encoding


MIME에 주로 사용

Web인증 중 하나인 기본인증에도 사용됨

2진 데이터를 ASCII 형태의 텍스트로 표현 가능


알파벳 대문자 : 26자

알파벳 소문자 : 26자

숫자 : 10자

특수문자 : + / 2자




항상 출력길이는 4의 배수 대로 나온다.

그러므로 모자란 부분은 = 로 채워지게 된다.


만약 M n a 라는 문자가 있으면


1. 아스키코드 상 10진수로 바꿔준다.


    그러면 M 은 77

              n 은 110

  a 는  97


2. 2진수로 다 바꾼다


01001101 01101110 01100001


3. 6비트씩으로 끊는다.


010011 010110 111011 00001


10진수로 바꾼후


basic 인코딩 에서 찾는다.


그럼 TW5h라는 결과가 나온다


만약 6비트씩 끊다가 남으면 0으로 채운후 아예 값이 없는부분은 ' = ' 으로 채운다.






프로그램상에서도 가능하다.





* Web Authentication


- Basic Authentication

웹 서버에 보낼 아이디와 암호를 Base64방식으로 인코딩 후 전달

사용자 계정은 시스템 계정이 이용됨

암호화 통신이 아니라서 스니핑 당한다면 그대로 쉽게 노출된다. 

시스템 계정이기 때문에 훨씬 더 큰 문제가 클 수 있어서 절대 사용해서는 안되는 인증시스템이다.



- HTTP Digest Authentication


- HTTP NTLM Authentication





이렇게 바꿔주고 테스트 해보겠다







계정을 추가하고,

xp에서 접근




암호가 걸린다.


아까 등록한 계정 입력해주면 들어가진다






백트랙에서 wireshark로 잡으면 이렇게 그대로 평문으로 전송된 걸 볼 수 있다.





* Form Based Authentication


HTML Form 태그를 이용하여 사용자로부터 받아 HTTP를 이용해 웹서버에 전달하는 방식


제일 많이 사용한다.


SSL을 이용한 암호화가 필요하다.





* Web Session


TCP기반의 프로토콜이지만 지속적인 연결이 필요하지 않은 웹 서비스의 특성상 TCP의 Connection Oriented한 성격을 잃어버림


비 연속적으로 접근하는 웹 클라이언트를 구분하기 위하여 Session Token을 사용해야 함


* Session Token


Session을 인증하기 위한 정보

인증에 관련된 정보는 서버와 클라이언트 양쪽에 저장되어야함

일반적으로 Web Application Server에서 지원하는 해쉬값이 Token으로 사용됨


* Session Management


클라이언트가 웹 서버에 최초로 접근 하게 되면 서버는 Token을 발생한다.


이 token은 Session이 활성화 되있는 동안 양쪽다 가지고 있어야한다.








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

24일차 인증공격 XSS  (0) 2017.03.13
23일차 웹보안 정보수집 OWASP  (0) 2017.03.10
21일차 웹보안 nc 세션하이재킹  (0) 2017.03.08
20일차 웹페이지  (0) 2017.03.06
19일차 웹서버 php db careadmin  (0) 2017.03.03