Web

웹 취약점/공격기법과 대응

findaw 2019. 5. 12. 05:11

주로 웹과 관련한 공격만 정리함

 

 

 

웹에서 서버로 데이터를 전달하는 방법

GET POST COOKIE 3가지

 

GET방식

form 태그 로 전송되는 정보들의

name과 value 속성을 분석

소스분석을 통해 전송버튼을 눌렀을때 서버 보내기전에 전처리과정을 확인(어떤 데이터가 어떻게 보내지는지)

 

POST방식

개발자 도구에서 해당 사이트에 form 태그 기입(document.write등을 통해or 주소창에 javascript: 를 이용

 

 

권한에 따라 특정 버튼을 없앤다고 정보 변조에 안전한가??

공격자가 소스분석 후 개발자 도구로 전송버튼 기입하면 해당 기능도 안전하지 않음

 

 

공격종류

사용자(클라이언트)를 대상으로 하는 공격

웹서버를 대상으로 하는 공격

 

 

 

아파치 웹설정파일만 조작하면 txt파일을 php파일로 인식시킬 수 있다.

웹서버 설정파일을 우회/조작하는 방법??

 

 

네트워크 해킹은 대부분 프로토콜을 약간 조작하는방식으로 이루어진다

그러므로 프로토콜을 이해하는 과정이 필요

 

 


대응방법 정리


 

입력값 검증

 

입력값 검증이 완벽한 것은 아님

 

문자열 매칭은 항상 예외가 있을 수 있으므로 주의

 

 


피싱사이트 유도


 

 

 

 

쿠키를 이용한 사용자 정보 탈튀

 

대응

쿠키등급을 매김

samesite나 secure

 

 

 

 

 


document.referrer 함수를 이용한 공격


document.referrer값을 만족한다면

window.location.href= 공격자의 주소 를 실행하는 방식

해당 주소로 접근시 exe를 다운받도록 실행

<meta http-equiv="refresh" content="0;url=URI주소" />

 

 

 

감염된 사이트에 직접시엔 문제가 없지만

검색을 통해 특정 referrer 주소를 가진상태에서 접속하면 감염위험

 

 

URL 납치수법

 

 

mass Injection

 

 


파일 업로드 취약점


 

 

 

 


서버 보안설정 오류


 

디렉터리 리스팅

웹 브라우저에서 웹서버의 특정 디렉터리를 열면 그 디렉터리에 있는 파일 목록이 모두 나열되는 것

서버의 디렉터리 구조를 파악할 수 있고 파일 구성을 알 수 있어 취약점이 될 수 있음

설정사항을 인지하지 못했거나 웹서버 자체의 취약점

서버설정에 신경써야함

 

 

LDAP(Lightweight Directory Access Protocol) : TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜.

외부 입력값이 LDAP 조회를 수행하기 위한 필터 생성에 사용되는 경우 이 입력값을 조작

 

 

 

백업 및 임시파일 존재

 

 


Sniffing 공격


sniff = 코를 킁킁거리다

정보를 몰래 보는 공격임

수동적 공격이라고도한다

 

노출정보를 악용하기 전까진 공격을 감지하기 어렵다. 

 

 

 

대응

 

 

 

 

 

 


패킷변조


 

 

 

 


CSRF(Cross Site Request Forgery) 공격


 

교차사이트 요청 위조

html태그 이용

XSS 공격기법의 변종임

 

CSS이용

 

img 태그 이용

img, iframe, embed 태그

 

src속성에 그림이 아닌 주소와 보내려는 데이터를 넣게되면 해당 사이트로 요청이 발생

보통 GET방식일때 쓸수있는듯?

이미지에 대한 요청을 서버에게 자동으로 한다는 특성을 이용

관리자가 페이지접속시 관리자 권한을 이용할 수도있음

 

 

 

SSS 이용

 

웹서버가 php 확장자를 php파일로 식별하기 위한 설정파일

 

리눅스 아파치 php설정파일 위치 : /etc/httpd/conf.d/php.conf

 

어떤 확장자를 사용했을을때 php라고 웹서버에서 인식하는지 정보

AddHandler php5-script.php

AddType text/html .php

 

default 설정으로 .php라고 되어있음

 

이 설정파일을 조작하면 txt파일도 php로 인식시킬 수있음

아파치 글로벌 설정파일 참고

특정 디렉터리는 사용자 인증을 거치도록 설정가능

이때 사용자는 리눅스 사용자가 아닌 .htpasswd에 등록되어있는 사용자여야한다.

 

 

 

클라이언트측 취약점

여러 사용자를 대상

 

서버측 취약점

특정 서버를 대상

 

 

 


웹쉘(WebShell) 공격


SSS(Server Side Script) 언어로 구성된 파일을 이용하여 공격자의 명령을 수행하게 하는 공격방식

 

 

Webshell공격에 사용되는 확장자 목록

스크립트 언어 파일 확장자
PHP php, php3, php4, php5, phtml, inc
JSP jsp, jsf
ASP Asp, asa, cds, cer 등
ASP.NET aspx, asax, ascx, ashx, asmx, axd, config, cs, csproj, licx, rem, resources, resx, soap, vb, vbproj, vsdisco, webinfo 등

 

 

발생원인

1차적으론 파일 업로드 기능이 구현되어있어야함

SmartEditor, DaumEditor, 전자정부프레임워크 오픈소스를 이용한 에디터나 혹은 자체개발된 업로드기능

 

글을 작성하기 위한 에디터 등에서 첨부파일 기능이 있는경우.

공격자는 웹셀파일 업로드를 시도

 

파일 업로드 기능을 이용하지 않고 서버에 웹셀을 생성하기 위한 방법

 

 

업로드 기법 

파일 확장자 필터링 우회

이미지 파일등의 정상확장자 파일 내에 공격코드 삽입 한 정상 확장자를 이용한 우회

 

 

웹셀 종류

 

웹셀을 단독파일로 사용하는 경우

기존파일에 웹셀에 사용되는 공격구문이 추가되는 경우

 

Image 파일 마지막에 공격구문 추가

Image 파일 변조방법

Editor 이용

파일업로드 공격시도 시 Proxy Tool을 이용

 

대포적인 방식 : PNG 파일의 이미지 픽셀정보가 저장되는 IDAT chunk 에공격구문 저장

 

 

 

Image 파일 속성에 공격구문 추가

 

 

 

웹셀 탐지방안

Source Code단

 

Server(WEB/WAS)단

 

 

OS 명령어와 코드 실행함수를 통한 탐지방안

 

웹셀에서 자주사용하는 함수 목록

 

 

 

 


HTML5기능을 이용한 공격


 

HTML5 신규 태그

video audio select등의 새로운 태그들

on속성을 이용한 함수기입

기존 XSS에 대한 공격포인트가 늘어남

 

 

로컬 저장소

Web Storage등 클라이언트에서 제공하는 저장소에 대한 보안

평문으로 저장된다면 XSS공격등으로 중요정보 노출가능

 

중요정보는 항상 암호적용

 

 

CORS를 이용한 공격

타 도메인 접근시 사용자에게 허가 요청을 받지 않기 때문에 사용자의 세션을 오용한 접근제어 문제 존재

공격자가 사용자의 세션을 오용할 수 있게 된다는 것은 접근제어를 우회하여 허가되지 않은 내부 네트워크 웹사이트에 접근할 수 있다는 의미

 

 

Web Socket을 이용한 사설 네트워크 정보 수집

연결하려는 객체의상태 정보값(Connection, Open, Closed) 를 가지고 있다.

최초 Web Socket생성시엔 0(Connection)

스캐닝 대상의 상태에 따라 1(Open) 또는 2(Closed)로 값이 변화한다.

 

사용자의 허가없이 타 도메인으로 연결 요청을 하여 요청 사실을 사용자에게 알려주지 않으며 공격자는 임의의 자바스크립트를 삽입하여 사용자가 모르게 브라우저를 통한 타 모메인이 있는 시스템과 통신 채널을 형성하여 네트워크 정보수집기 가능하다.

 

대응

XSS(Cross-Site Scripting) 블랙리스트 기반 필터 조건 추가

중요정보는 암호화해서 저장/전송

로컬 스토리지에서는 사용자의 중요한 정보를 저장하지 않는것이 좋다.

 

CORS는 주로 공격 대상사이트의 파일 업로드 취약점을 이용하는 것으로 시작

서버 접근을 요청하는 발송처에 대한 설정을 주의 Cross-Origin 요청을 모두 허용할 수 있는

Access-Control-Allow-Origin 헤더값에 * 같은 패턴은 사용하지 말것

 

허용하느 도메인을 명확하게 신뢰할 수 있는 사이트에 대해서만 접근을 설정(Access-Control-Allow-Origin : 신뢰할수있는사이트)

공격자는 Origin 헤더를 조작하여 요청을 발생시킬 수 있으므로 해당 헤더에만 의존한 접근 제어는 피해야한다.

 

 

사용하는 사이트가 HTML5 기능을 이용하지 않더라도 공격자가 공격코드를 HTML5로 할 수 있으므로 이에대한 보안문제를 대비해야한다.

 

 

 

 

 

 

메일

 

메일의 송수진자는 쉽게 변조가 가능하기 때문에 전송경로를 추적하기 위해선 메일 헤더를 조사해야한다.

 

 


protocol downgrade attacks