브라우저는 응답에 포함된 헤더를 통해 자체적으로 컨텐츠를 차단 또는 변경하는 기능이 구현되어 있음.

 

[설정의 종류 아래 정리]

1. Content-Security-Policy

2. X-Frame-Option

 이 헤더는 사용자의 눈에 보이지 않는 영역을 추가하여 사용자는 의도한대로 버튼을 누르지만 실제로는 다른 곳을 클

 릭하게 만드는 Clickjacking을 방지 할 수 있는 옵션입니다. 페이지 내부에 심어질 수 있는 iframe과 같은 곳에 접근을

 제어하는 옵션으로 설정 가능

 

 X-Frame-Options : DENY (모든 표시를 거부)

 X-Frame-Options : SAMEORIGIN (동일한 출처에 대한 것만 표시

 X--Frame-Options : ALLOW FROM http://www.aaa.com (http:www.aaa.com에 대해서만 허용)

 

 서버가 X-Frame-Options 헤더를 반환하지 않으면 이 웹사이트가 클릭재킹 공격의 위험에 처할 가능성 존재

 * Clickjacking(User Interface redress attack, UI redress attack, UI redressing)은 웹 사용자를 속여 사용자가 클릭하고

 있는 것과 다른 것을 클릭하도록 속여서 잠재적으로기밀 정보를 노출시키거나 컴퓨터를 제어하는 악의적인 기술. 무

 해해 보이는 웹 페이지를 클릭

 

3. X-Content-Type-Option

 

4. Strict-Transport-Security

이 헤더는 한번 https로 접속하는 경우 이후의 모든 요청을 http로 요청하더라도 브라우저가 자동으로 https로 요청합니다.

Strict-Transport-Security: max-age=31536000;includeSubDomains;preload

 

https로 전송한 요청을 중간자가 가로채어 내용을 볼 수 있는(MIMT)기법을 클라이언트 레벨(브라우저)에서 차단할 수 있습니다.

 

 

5. X-XSS-Protection

 

6. Cache-Control, Programa

 

 

 

참고자료 : https://cyberx.tistory.com/171

Password field with auto-complete 취약점 설명

 

1) 자동완성을 말함
2) 폼에 한 글자를 입력하면 문자열이 동적으로 표시되는 것을 뜻함
해당 취약점은 input 태그에 autocomplete = " off"로 설정하여 방지할 수 있음
* OWASP Top 10  A3: 민감한 데이터 노출 (Sensitive Data Exposure) 포함 

 

(예)

 

 

4.  수정 필요 부분

 

 input 태그에 autocomplete = "on" 에서  input 태그에 autocomplete = "off"로 변경필요

OS 환경셋팅과 함께 이론적으로 정리한 내용 공유합니다.

 

2021년 겨울방학인턴이 준비한 내용 공유합니다.

 

'보안 > 서버,보안 기본' 카테고리의 다른 글

블록암호  (0) 2021.12.17
리눅스 데몬 관련  (0) 2021.12.16


1.3 개인정보의 유형 및 종류 
개인정보는 일반적으로 이름, 주민등록번호 등과 같이 일반 정보만으로 이해될 수 있으나. 신체적
정보, 정신적 정보, 재산적 정보, 사회적 정보 등으로 범주화하여 다양한 형태의 정보를 포함할
수 있다. 특히, 정보통신기술의 발달로 인해 개인정보의 보호 대상은 넓어지고 있으며, RFID에 
의한 개인 위치정보, 생체인식 기술과 바이오 정보, CCTV에 의해 수집되는 화상정보 등까지 확대되는
추세이다.


개인정보는 최초 서비스 가입 과정에서 이용자에게 직접적으로 수집하는 정보와 이용자가
서비스를 이용하는 과정에서 생성되는 정보로 나누어 볼 수 있다.

* 이용자가 사업자에게 직접 제공하는 정보
- 사업자 서비스에 회원으로 가입할 때 기입하는 성명, 주소, 이메일, 전화번호,
  생년월일, 성별, 취미, 가족관계, 혼인여부, 출신학교 등

* 서비스를 이용하는 과정에서 생성되는 정보
- 서비스 이용 기록, 접속 로그(log), 쿠키(cookie), 결제 기록, 이용정지 기록,
  페이지뷰 내역, 이용 시간대, 검색 사항, 사이트 방문 내역 등


02. 개인정보 보호의 중요성
 2.2 개인정보 침해 원인 및 유형
  2.2.1 개인정보 침해 정의
정보주체의 개인정보자기결정권에 기하지 않거나 법적 근거 없이 개인정보가 처리되는 등, 개인정보와 관련한 정보주체의 권리를 침해하는 일체의 작위,부작위로 인한 피해를 말한다.
  2.2.2 개인정보 침해 원인 p30
(1) 정보주체 관점에서 발생되는 개인정보 침해 원인
개인
- 개인정보 보호에 대한 인식 부족, 이용자의 부주의로 타인에게 노출 공유
기업
- 타깃 마케팅, CRM 등의 활용하는 기업의 개인정보의 과도한 수집
- 주민등록번호 수집의 관행화, 개인정보의 기술적 보호조치 미흡
정부
- 개인정보 보호 관련 법규 및 제도 마련의 사각지대에서 발생되는 개인정보 침해 원인

(2) 시스템 관점에서 발생되는 침해 원인
PC 등 단말 영역
- 이메일, 메신저, UCC(User Created Contents) 등을 통한 악성코드 감염에 따른 P2P프로그램 설정 오류에 따른 이력서 등 개인정보 유출
네트워크 영역
- 패킷 스니핑(Packet Sniffing), MTM(Man In The Middle) 공격 데이터 변조 및 유출에 따른 라우터 등 주요 네트워크 장비 공격에 따른 개인정보 유출
  및 네트워크 인프라 파괴
서버 및 DB영역
- 서버 및 DB에 저장된 개인정보에 대한 암호화 미비, 패치관리 미흡, 설계 오류, 접근제어 미흡으로 인해 해커 등 접근권한이 없는 자에 의해 고객DB가
  탈취되거나 개인정보가 노출되는 경우

 2.2.4. 개인정보 유출사고에 따른 개인정보 침해 사례 p33
개인정보 유출사고란 생존하는 개인에 관한 정보가 본인 동의 없이 다른 사람에게 노출,악용되어 개인의 안전과 재산에 손실을 초래하는 것을 말한다.
개인정보 유출사고에 따른 개인정보 침해 사례 유형으로 해킹, 내부자 유출, 개인의 관리 소홀 등으로 인하여 발생하게 된다.

(1) 외부해킹 또는 악성코드에 의한 유출
- 외부 해킹이나 악성코드에 의한 유출을 통해 개인컴퓨터 또는 기관,기업 등의 시스템에 침입하여 본인 동의 없이 개인정보를 수집하여 개인정보 유출 및
  침해사고가 발생한다.
(2) 내부자의 의도적 개인정보 유출

블록암호? 기밀성있는 정보를 고정된 크기의 블록단위로 구성하여 암호화 작업을 하는 대칭키 암호 시스템

암호문은 평문의 반복되는 회전 함수로 생산되며 회전함수의 입력은 key와 Output of Previous Round(전 번 회전 출력)으로 구성

이러한 블록암호는 운용방식이 존재하는데 만약 암호화하려하는 데이터가 블록 길이보다 길 경우에는 특정한 운용방식이 사용
ex) ECB / CBC / CTR 등

ECB  (Electronic Codebook)
운용 방식 중 가장 간단한 구조를 가지며, 암호화 작업을 하려는 메세지를 여러 블록으로 나누어 각각 암호화하는 방식

CBC (Cipher-block chaining)
암호 블록 체인 방식은 1976년 IBM에 의해 개발되었으며 각 블록은 암호화 되기 전에 이전 블록의 암호화 결과와
XOR 연산을 수행하며, 첫 블록의 경우 IV(초기화벡터)를 사용. 초기화 벡터의 경우 출력 결과가 항상 동일하기 때문에,
매 암호화마다 다른 IV를 사용

CTR(Counter)
암,복호화 모두 병렬처리가 가능
블록암호 알고리즘의 암호화 로직만 사용
암호문의 한 비트 오류는 복화화되는 평문의 한 비트에만 영향

https://blog.naver.com/jsky10503/221258926405

'보안 > 서버,보안 기본' 카테고리의 다른 글

도커 (등장배경, 의미, 주요 키워드, 사용)  (0) 2022.03.02
리눅스 데몬 관련  (0) 2021.12.16

리눅스 데몬 제어

# ntsysv
# setup - 시스템 서비스
어떤 서비스를 자동으로 실행시켜 주겠는 가를 설정하거나 보기



chkconfig

chkconfig를 사용하면 시스템을 부팅할 때 런레벨에 따라 자동으로 실행되는 데몬들을 확인, 추가, 수정

# chkconfig option 데몬 상태
:: option은 
 --level 적용할 런레벨을 선택
 --add 데몬 추가
 --del 데몬 삭제
 --list 현재 데몬들의 목록출력

ex)
# chkconfig --list 
전체나옴 (뒤에 | more 옵션으로 화면나누어 보기 가능)

# chkconfig --list 데몬d
데몬d 데몬에 대해서만 나옴

# chkconfig --level 2345 데몬d on
데몬d가 레벨 2,3,4,5에서 활성화 된다.

 

 

service

현재 실행중인 데몬을 제어하려면 service 명령어나
/etc/rc.d/init.d 에 있는 실행스크립트를 이용하여 제어할 수 있다.

# service 데몬 상태
상태는 start ,stop, restart, status 이다.

ex) service 데몬d status
데몬d의 서비스 상태를 보여준다.

 

 

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

 

죽은 데몬 자동 실행

 

 

0. 개요
  서버 관리를 하다 보면, 죽으면 안되는 데몬이 갑자기 죽는 경우가 있다. 이럴때 서버 앞에서 작업을 하고 있거나, 모니터링을 하고 있는 경우면 다시 데몬을 띄워 주면 되지만, 그렇지 않은 경우는 죽었는지 살았는지 알지도 못하고, 설령 알고있다고 하더라도 서버로 접속이 가능한 PC를 찾아 움직여야 한다.
  이런 경우를 대비해 데몬이 죽었으면 재 실행 시켜 주는 스크립트를 만들어 보겠다.


1. 준비
  특별히 툴을 설치하거나, 라이브러리를 다운 받는 등의 준비 작업을 없다.
  다만, 약간의 프로그래밍 지식만 있으면 누구나 쉽게 만들 수 있고 또, 쉽게 응용이 가능하다.


2. 스크립트 작성
  예) 아파치 데몬이 죽었을 경우 자동 재 시작

vi /root/check.sh

#!/bin/bash

http="`pgrep http  | wc -l`"

if [ "$http" -eq "0" ] ; then
        /usr/local/apache/bin/apachectl restart
fi

  위 스크립트는 아주 간단하다. http라는 변수에 pgrep http로 아파치 프로세서를 검색 한다음 wc -l로 카운터를 세어 넣는다.
  그리고, if문에서 http변수에 들어 있는 값이 0과 같으면 아파치를 리스타트 한다.


3. 클론에 등록해서 1분마다 체크 하기
  위 스크립트를 만들었다고 해서 끝이 아니다. 왜냐 하면 우리가 원하는 것은 자동을 데몬을 체크해서 그 데몬이 죽었을 경우 해당 데몬을 다시 시작 해주는 것을 원하고 있기 때문이다.
  이럴때 cron을 이용하자, 물론 매 초 체크 하는것은 안되지만, 1분 단위로는 가능하다.

  예) 클론에 1분마다 아파치 데몬이 죽었을 경우 자동 리스타트 되는 스크립트 실행

crontab -e

* * * * * su - root -c '/root/check.sh >&  /dev/null'

  위와 같이 한줄만 추가 해주면 해당 스크립트는 1분마다 실행 되며, 실행 되었을때 아파치 데몬이 죽어 있다면
자동으로 재 시작 한다.
  ps. 클론에 위와 같이 등록 할경우 미리 check.sh 파일의 퍼미션을 700으로 바꿔야 한다.

 

'보안 > 서버,보안 기본' 카테고리의 다른 글

도커 (등장배경, 의미, 주요 키워드, 사용)  (0) 2022.03.02
블록암호  (0) 2021.12.17

QCEO 2021.12.09 웹취약점 점검 결과 (Medium 1, Low 3, Informational 3)


[Medium 1]

=======================================================================
Unencrypted password form

The HTTP protocol by itself is clear text, meaning that any data that is transmitted via HTTP can be captured and the contents viewed.
To keep data private, and prevent it from being intercepted, HTTP is often tunnelled through either Secure Sockets Layer (SSL), or Transport Layer Security (TLS). When either of these encryption standards are used it is referred to as HTTPS.
Cyber-criminals will often attempt to compromise credentials passed from the client to the server using HTTP. This can be conducted via various different Man-in-The-Middle (MiTM) attacks or through network packet captures.
Arachni discovered that the affected page contains a password input, however, the value of the field is not sent to the server utilising HTTPS. Therefore it is possible that any submitted credential may become compromised.

http://192.168.120.166:8000/ password
=======================================================================

 

[Low 3]

=L1======================================================================
Password field with auto-complete 1

In typical form-based web applications, it is common practice for developers to allow autocomplete within the HTML form to improve the usability of the page. With autocomplete enabled (default), the browser is allowed to cache previously entered form values.
For legitimate purposes, this allows the user to quickly re-enter the same data when completing the form multiple times.
When autocomplete is enabled on either/both the username and password fields, this could allow a cyber-criminal with access to the victim’s computer the ability to have the victim’s credentials automatically entered as the cyber-criminal visits the affected page.
Arachni has discovered that the affected page contains a form containing a password field that has not disabled autocomplete.

http://192.168.120.166:8000/
=======================================================================

=L2======================================================================
Common administration interface 1

An administration interface was identified and should be reviewed.

http://192.168.120.166:8000/admin/login/?next=/admin/
=======================================================================

 

=L3======================================================================
Missing 'X-Frame-Options' header 1

Clickjacking (User Interface redress attack, UI redress attack, UI redressing) is a malicious technique of tricking a Web user into clicking on something different from what the user perceives they are clicking on, thus potentially revealing confidential information or taking control of their computer while clicking on seemingly innocuous web pages.
The server didn’t return an X-Frame-Options header which means that this website could be at risk of a clickjacking attack.
The X-Frame-Options HTTP response header can be used to indicate whether or not a browser should be allowed to render a page inside a frame or iframe. Sites can use this to avoid clickjacking attacks, by ensuring that their content is not embedded into other sites.

http://192.168.120.166:8000/static/css/login.css

=======================================================================

 


[Informational 3]
=I1======================================================================
Allowed HTTP methods 1

There are a number of HTTP methods that can be used on a webserver (OPTIONS, HEAD, GET, POST, PUT, DELETE etc.). Each of these methods perform a different function and each have an associated level of risk when their use is permitted on the webserver.
A client can use the OPTIONS method within a request to query a server to determine which methods are allowed.
Cyber-criminals will almost always perform this simple test as it will give a very quick indication of any high-risk methods being permitted by the server.
Arachni discovered that several methods are supported by the server.

http://192.168.120.166:8000/

=======================================================================

 

=I2======================================================================
Interesting response 1

The server responded with a non 200 (OK) nor 404 (Not Found) status code. This is a non-issue, however exotic HTTP response status codes can provide useful insights into the behavior of the web application and assist with the penetration test.

http://192.168.120.166:8000/
=======================================================================

 

=I3======================================================================
HttpOnly cookie 1

HTTP by itself is a stateless protocol. Therefore the server is unable to determine which requests are performed by which client, and which clients are authenticated or unauthenticated.

The use of HTTP cookies within the headers, allows a web server to identify each individual client and can therefore determine which clients hold valid authentication, from those that do not. These are known as session cookies.
When a cookie is set by the server (sent the header of an HTTP response) there are several flags that can be set to configure the properties of the cookie and how it is to be handled by the browser.
The HttpOnly flag assists in the prevention of client side-scripts (such as JavaScript) accessing and using the cookie.
This can help prevent XSS attacks targeting the cookies holding the client’s session token (setting the HttpOnly flag does not prevent, nor safeguard against XSS vulnerabilities themselves).

http://192.168.120.166:8000/

=======================================================================

서버가 200(OK) 또는 404(찾을 수 없음)가 아닌 상태 코드로 응답했습니다.
이것은 문제가 되지 않지만 이국적인 HTTP 응답 상태 코드는 웹 애플리케이션의 동작에 대한 유용한 통찰력을 제공하고 침투 테스트를 지원할 수 있습니다.

 

 

 

 

HTTP(Hypertext Transfer Protocol)

 

* 클라이언트와 서버 간의 요청과 응답 프로토콜

* HTTP 요청

  - 클라이언트가 서버에 특정 자원에 대한 요청 명령을 보냄

  - 요청 명령 : GET, POST

* HTTP 응답

  - 서버가 클라이언트에 요청받은 자원과 응답코드를 보냄

  - 응답코드 : 200(OK), 404(not Found) 등

* 웹 서버는 요청받은 자원을 전달할 수 없는 경우 오류코드를 응답코드로 반환

* TCP port 번호 80을 일반적으로 사용

* HTTP/1.1부터 keep-alive 기능 제공

  - 한 번의 연결로 클라이언트는 서버에 여러 번 요청을 보내고 응답을 받을 수 있음

* stateless 프로토콜

  - 상태 정보를 유지하지 않음

  - 로그인 등의 상태 정보를 표현하기 위하여 cookie, session 등 필요

+ Recent posts