만족
[정보보안] 인터넷 정보보안: HTTP 기본 개념과 웹 해킹 공격 본문
[정보보안] 인터넷 정보보안: HTTP 기본 개념과 웹 해킹 공격
기타 CS 이론/IT Security Satisfaction 2021. 10. 16. 21:45HTTP Protocol
웹 상에서 정보를 주고받기 위한 프로토콜이다.
클라이언트가 요청(request)을 보내고, 서버가 응답(response)을 보낸 후 종료되는 프로토콜로
무상태성(Stateless)의 특성을 갖으며, 평문으로 통신한다.
통신 보안을 위해 현재는 Secure layer(SSL/TLS)가 추가된 HTTPS도 많이 사용된다.
HTTP: Request
GET, POST, PUT, PATCH, DELETE 등 HTTP Method를 가지며,
각 메서드 별 역할이 정의되어 있다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
HTTP: Response
응답 코드로 2xx, 3xx, 4xx, 5xx 가 정의되어 있으며
각 첫째 자리 수마다 응답의 종류가 결정된다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
SSS(Server Side Script)와 CSS(Client Side Script)
컨텐츠의 동적 변경 진행하는 주체에 따라 달라진다.
SSS의 경우 JSP, PHP 등 처럼 문서 내용을 서버에서 변경한다.
CSS의 경우 JS로 이미 응답으로 받은 HTML문서를 변경한다.
웹 해킹
정보 수집-> 취약점 분석-> 공격-> 뒤처리 순으로 이루어진다.
스캐닝 툴이 존재하여 웹 서버의 취약점을 손쉽게 알아낼 수 있으며,
서버 파일의 확장자를 이용해 어떤 언어를 사용중인지 알아낼 수도 있다.
웹 해킹: Directory Listing
웹 브라우저에서 특정 디렉토리로 접근하면 해당 디렉토리의 모든 파일 리스트가 표시되는 기능이다.
인증을 제대로 구현하지 않았을 경우 로그인 우회를 통해 페이지 임의 접속이 가능하며,
공개되면 안 되는 파일이 외부로 빠져나갈 수도 있다.
또한 이를 통해 편집기의 임시 저장 파일 등이 표시될 경우 사용자가 임의로 다운로드받아 소스코드를 조회할 수 있게 된다.
따라서 디렉터리 리스팅 기능을 비활성화해야 한다.
웹 해킹: 임의 파일 접근
만약 파일 다운로드 시 /files?fileName=... 처럼 접근하여 사용한다면
공격자가 fileName=/etc/passwd 처럼 절대경로와 상대경로 키워드를 사용해 임의 경로에 접근할 수 있게 된다.
파일 이름을 입력받을 때엔 .., / 과 같은 특수문자는 비허용해야 한다.
웹 해킹: 서버 스크립트 업로드 및 실행
파일 업로드 기능이 있는 url에서 서버 스크립트 파일을 업로드하고, 해당 파일 위치를 유추한다.
위치를 알아낸 경우 해당 경로로 접속하면 업로드한 스크립트 파일이 실행된다.
(ex: php에서 프로젝트 루트가 /var/www/html이고, 업로드 파일은 /var/www/html/upload/에 저장될 경우
/upload/your_php_upload_file.php로 접속할 경우 임의 스크립트를 서버에서 실행할 수 있다)
이는 업로드 파일 확장자를 제한하고, 업로드 시 파일 이름을 임의 변경하거나
특정 폴더의 실행 기능 해제(ex: /var/www/html/upload 내 파일들은 실행할 수 없다; 읽기/쓰기만 가능),
웹 서버 구동 시 일반 사용자 권한으로 구동 등을 통해 막을 수 있다.
웹 해킹: 리버스 텔넷
웹 서버는 방화벽에 의해 보호받기 때문에 특히 외부에서 들어오는 패킷에 대한 검사가 엄격하다.
그러나 상대적으로 외부에서 나가는 패킷에 대한 검사는 느슨하다는 점을 이용한다.
웹 서버에 파일 업로드로 서버 측에서 텔넷 커맨드를 실행시키고
서버가 공격자에게 실행 권한을 넘긴다.
공격자가 특정 포트를 열어두고, 서버에게 리버스 텔넷 툴을 열어 공격자에게 전달하도록 한다.
빨간 줄 아래로는 이제 서버의 텔넷 서비스를 제어할 수 있게 되었다.
방어를 위해서는 마찬가지로 파일 업로드 확장자를 제한하고, 내부에서 외부로 나가는 패킷 역시 규칙을 설정해 주어야 한다.
웹 해킹: 인증 우회
특정 권한을 위해 필요한 인증을 회피하는 행위이다.
주로 테스트 계정이나 관리자 계정의 비밀번호가 유추하기 쉬운 것(test/test, admin/1234)으로 되어 있거나
로그아웃과 세션 파기 등의 기능이 구현되어 있지 않은 경우 발생한다,.
디폴트/테스트 계정을 파기하고, 유추하기 쉬운 비밀번호를 변경한다.
또한 로그아웃과 세션 파기를 구현하고 쿠키값 역시 확인해야 한다.
웹 해킹: 패킷 변조
웹에서 서버로 보내지거나 서버에서 웹으로 오는 패킷을 변조하는 행위이다.
특정 값을 서버로 보내 오작동을 일으키는 방식으로 해킹을 시도한다.
웹 해킹: XSS(Cross Site Scripting)
url이나 입력 폼에 스크립트 코드를 삽입함으로써,
공격자가 원하는 스크립트 코드를 웹 상에 삽입하여 공격하는 기법이다.
가령 게시판 글 작성 기능에 <script>while(true) alert("HELLO"); </script> 를 입력한다면
그 글을 읽는 다른 사람들은 계속해서 경고창을 보게 된다.
이를 통해 클라이언트 쿠키/정보를 탈취하거나 서버에 과부하를 일으켜 서버를 다운시킨다.
방어를 위해서는 특수한 문자(<, /, > 등)를 이스케이핑(<, > 등)한다.
웹 해킹: SQL Injection
공격자가 입력 폼을 통해 원하는 SQL을 동적으로 구성하는 공격 방법.
예를 들어 사용자의 아이디와 비밀번호를 받아 로그인 하는 화면에서
SELECT * FROM User WHERE id='$your_id' AND pw='$your_pw'라는 코드가 있을 때,
공격자가 your_id=hello, your_pw= hi' OR 1=1; -- 를 입력하게 되면
SELECT * FROM User WHERE id='hello' AND pw='hi' OR 1=1; --' 로 변하게 되어
무조건 로그인에 성공하게 된다.
심지어 구버전 MS-SQL에서는 cmd코드를 SQL 내에서 사용할 수도 있었다.
이 경우 공격자가 SQL Injection을 이용해 cmd 커맨드를 마음대로 제어할 수 있게 되므로 피해는 더 커진다.
(SELECT * FROM User WHERE id='hello' AND pw='hi'; exec master ..xp_cmdshell 'CMD COMMAND' --)
(CMD COMMAND에 원하는 커맨드를 입력하면 그 커맨드가 관리자 권한으로 실행된다)
입력값에 대해 문자열 이스케이핑(따옴표, 세미콜론, 슬래시 처리 등)을 추가하거나
PreparedStatement를 사용하여 동적 SQL 구성을 막을 수 있다.
또한 웹 서버가 사용하는 권한을 적절히 제어하여 피해를 최소화할 수 있어야 한다.
https://satisfactoryplace.tistory.com/162?category=893795
'기타 CS 이론 > IT Security' 카테고리의 다른 글
[정보보안] 코드 보안: 포맷 스트링 공격 (0) | 2021.12.13 |
---|---|
[정보보안] 코드 보안: 계정과 권한, 프로그램 실행 구조 (0) | 2021.10.17 |
[정보보안] 네트워크 보안 시스템: 방화벽, 침입 탐지와 침입 감지 시스템 (0) | 2021.10.16 |
[정보보안] 무선 네트워크 보안 (0) | 2021.10.16 |
[정보보안] 네트워크 공격: 스니핑, 스푸핑, 세션 하이재킹 (0) | 2021.10.16 |