각 SITE에 출장을 다니면서 웹 보안 취약점에 대해 공부할 필요가 있어 공격 예시와 함께 설명하는 글을 작성하도록 하겠습니다.
웹 해킹이란 무엇인가?
웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위를 말합니다. 웹 사이트의 취약점을 공격하는 방법은 굉장히 많은데, 그 중 중요하고 각 SITE에서 주로 들어오는 공격에 대해서 설명하도록 하겠습니다.
1) SQL Injection(SI)
클라이언트의 요청을 처리하기 위해 전달받은 인수에 특정 명령을 실행하는 코드를 포함시켜 공격하는 방법입니다. 간단하고 적용하기도 쉬우며 아주 강력한 공격입니다. 기존 SQL에 악의적인 SQL 구문을 삽입하여 데이터 탈취, 삭제 등을 할 수 있습니다.
1-1) 공격 방법
공격문 | 결과 |
Select uid from user_table where uid='guest' and upw='' or 1=1-- | user_table의 모든 uid가 출력 |
'union select upw from user_table where uid = 'admin'-- | union 구문을 활용하여 admin계정의 비밀번호를 출력 |
표1. SQL Injection 공격문 예시
1-2) 방어 방법
2) Cross-Site Scripting(XSS)
사이트 간 스크립팅(Cross-Site Scripting)은 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 SQL Injection과 함께 웹상에서 가장 기초적인 취약점 공격입니다. 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점으로 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어집니다. 자바스크립트를 사용하여 공격하는 경우가 많은데 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트들이 XSS에 대한 방어조치를 해두지 않아 공격을 받는 경우가 많습니다.
2-1) 공격 방법
공격 종류 | 공격문 | 결과 |
스크립트 태그 | <script>alert(‘XSS’);</script> | 스크립트 태그의 스크립트 실행 |
자바스크립트 태그 | <a href=“javascript:alert(‘XSS’)”></a> | 자바스크립트를 실행 |
이벤트 속성 | <img src=“#” onerror=“alert(‘XSS’)”> | 이벤트 속성으로 스크립트 실행 |
표2. Cross-Site Scripting 공격문 예시
2-2) 방어 방법
3) File Upload(FUP)
웹서버가 제공하는 파일 업로드 기능을 이용하여 악성 스크립트를 업로드 하는 공격입니다. 서버에서 실행될 수 있는 파일을 업로드 하여 공격자가 원하는 기능을 동작하게 하는데 이는 적절한 검증 없이 파일 업로드 기능을 제공할 때 발생하는 취약점입니다. 결국 File Upload 공격은 악성 스크립트를 업로드 후, 서버상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 서버를 장악함을 의미합니다.
웹 서버에서 실행 가능한 확장자는 다음과 같습니다.
언어 | 확장자 |
asp, aspx | asp, aspx, htm, html, asa |
php | phtml, php, php3, php4, php5, html |
jsp, java | jsp, jspx, jsw, jsv, jspf, htm, html |
perl | pl, pm, cgi, lib, htm, html |
coldfusion | cfm, cfml, cfc, dbm, htm, html |
표3. 웹 서버에서 실행 가능한 확장자
3-1) 공격 방법
언어 | 우회패턴 | 처리패턴 |
php | test.php%00.jpeg | test.php |
asp | test.asp%00.jpeg | test.asp |
jsp | test.jsp%00.jpeg | test.jsp |
3-2) 방어 방법
4) File Download(FD)
파일 다운로드 기능이 존재하는 웹애서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 이를 적절히 필터링 하지 않으면 공격자가 이를 조작하여 허용되지 안은 파일을 다운받을 수 있고 임의의 위치에 있는 파일을 열람하거나 다운받는 것을 가능하게 하는 공격입니다.
4-1) 공격 방법
Seculayer_Download.jsp 페이지가 있다고 가정.
Seculayer_Download.jsp는 웹 서버의 upload폴더에 존재하는 파일의 이름을 file이라는 파라미터로 입력 받으면 그 파일을 다운로드하게 해주는 페이지라고 가정.
4-2) 방어 방법
5) Command Injection
Command에 임의의 명령어를 삽입하고 요청을 보내 웹 서버에서 실행되게 하는 공격입니다. 어떤 웹 어플리케이션 공격이 내부에서 실행된다고 했을 때 사용자가 입력한 값이 적절한 검증 절차가 존재하지 않으면 입력했던 시스템 명령어가 그대로 전달되서 공격자는 이 값을 조작해 시스템 명령어 삽입 시도 공격을 할 수 있게 됩니다.
5-1) 공격 방법
5-2) 방어 방법
이상으로 웹 보안 취약점에 대한 설명을 마치며 다음에 기회가 된다면 더 많은 공격 방식에 대해서 설명을 하도록 하겠습니다. 감사합니다.
참조 :
[보안] 통합보안관리 솔루션 (0) | 2021.12.23 |
---|---|
새롭게 떠오르고 있는 UI 트렌드 : 뉴모피즘(Neumorphism)을 지나 글래스모피즘(Glassmorphism)으로 (0) | 2021.12.16 |
[ML/DL] Orion을 통한 불안정한 시계열 이상 감지 (0) | 2021.12.07 |
[XAI]XAI 해석 가능한 인공지능 (0) | 2021.12.07 |
UX 심리학 법칙 (1) | 2020.04.22 |