본문 바로가기

웹해킹

(16)
웹해킹 #8 파일 인클루전 공격 - 주로 PHP 애플리케이션 대상으로 발생 : PHP는 인클루드 기능을 제공하기 때문에 * 인클루드 : include라는 함수를 이용하여 다른 파일을 소스 코드에 직접 인클루드시킬 수 있는 기능 -> 인클루드할 파일을 외부 사용자가 지정할 수 있는 경우 파일 인클루전 취약점이 존재하고, 공격자는 본인이 원하는 파일 인클루드 가능! 1. 파일 인클루전 공격 개요 ① 로컬 파일 인클루전(Local File Inclusion, LFI) : 공격자가 인클루드할 수 있는 파일이 호스트 내부의 파일 ② 리모트 파일 인클루전(Remote File Inclusion, RFI) : 공격자가 인클루드할 수 있는 파일이 호스트 외부의 파일 (★ 원격 인클루드가 가능해 더욱 심각한 공격) - 정상적인 파일인 file.php가..
웹해킹 #7 취약한 인증 공격 *정의 : 사용자 계정 정보를 확인하거나 세션 토큰과 같은 인증에 사용되는 토큰 정보를 입수하여 인증 과정 우회 * 발생 원인 : 인증 과정이 제대로 보호되어 있지 않아서 공격자가 인증 과정을 우회할 수 있는 경우 발생 - 취약한 인증 리스크 사례 ① 프로그램 설치 시 기본 관리자 계정이 admin/admin과 같이 쉽게 추측할 수 있는 값으로 설정된 경우 ② 패스워드 또는 패스워드를 알아내기 위한 힌트를 다른 사용자가 초기화 및 복구할 수 있는 경우 ③ 세션 관리의 문제로 인해 사용자의 세션 ID가 노출되어 공격자가 세션 하이재킹 공격이 가능한 경우 ④ 세션ID를 쉽게 추측할 수 있는 경우 ⑤ 세션에 대한 타임아웃이 없어, 오래된 세션 ID를 사용해서 인증이 가능한 경우 1. 브루트 포스 공격 개요 -..
웹해킹 #6 크로스 사이트 요청 변조(CSRF) 공격 1. CSRF 공격 개요 - 공격자가 피싱을 이용하여 공격 대상이 되는 사용자에게 악성 링크를 누르게 하고, 링크를 클릭하면 사용자 모르게 사용자가 로그인되어 있는 웹사이트의 어떤 기능을 실행하는 것 - 예 : 공격자가 사용자의 패스워드를 본인이 모르는 사이에 변경 후, 변경된 패스워드를 이용하여 웹사이트 접속 * CSRF 공격와 XSS 공격의 차이점 - 공격 과정에서 피싱을 이용하는 특성만 같고, 피싱 이후 진행되는 과정이 완전히 다름! - 공격대상 : XSS – Client, CSRF – Server - 악성 스크립트를 클라이언트에서 실행시키고, CSRF는 웹 서버로 유도해 서버에서 동작하게 함 ① 사용자가 웹사이트에 정상적으로 접속하여 로그인 ② 사용자가 웹사이트에 로그인되어 있는 동안, 공격자가 ..
웹해킹 #5 크로스 사이트 스크립팅 공격 (XSS) 1. 크로스 사이트 스크립팅 공격 - 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후 웹 사용자의 웹 브라우저에서 해당 코드가 실행되도록 만드는 공격 - "자바스크립트"를 이용하여 공격 수행 - 다른 공격들은 취약점을 가지고 있는 서버쪽을 공격하지만, 크로스 사이트 스크립팅 공격은 서버의 취약점을 이용하여 클라이언트 쪽을 공격 - 공격자가 삽입한 스크립트 코드가 언제 실행되는지에 따라 리플렉티드(reflected) 크로스 사이트 스크립팅 공격과 스토어드(stored) 크로스 사이트 스크립팅 공격으로 구분 ex) ① 세션 쿠키 탈취 - 클라이언트의 웹 브라우저에 있는 세션 쿠키를 자바스크립트를 이용하여 읽어서 알아내기 -> 클라이언트의 웹 브라우저에 있는 세션 쿠키를 자바스크립트를 이용하여 ..
웹해킹 #4 커맨드 인젝션 1. 커맨드 인젝션 - 이론 - 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격 - 공격 결과 호스트 내부의 명령어 실행 가능 - ‘;’ 는 복수의 명령어 실행하고자 할 때 사용 -> x.x.x.x;cat /etc/passwd -> 패스워드 알게 됨 2. 커맨드 인젝션 - 실습 - 그냥 IP 주소를 입력하여 ping 명령 결과 확인 - 커맨드 인젝션 실습 문제 source 파일을 확인 - shell_exec() 함수를 통해 명령을 수행 중! -> shell_exec 함수와 같이 쉘을 직접 호출하여 명령어를 수행하는 함수를 코드에 사용하면 취약점이 생길 수 있음! - ;ls 입력해보기 - ;cat /etc/passwd 입력해보기 3. 커맨드 인젝션..
웹해킹 #3 SQL 인젝션 1. SQL 인젝션 - 웹 서버 영역의 데이터베이스로 전송되는 SQL 쿼리문을 사용자가 임의로 조작 가능할 때 발생 - 허가되지 않은 정보에 접근하거나 데이터 변조 이론 사례 ① WHERE 구문 우회 $id = $_REAUEST[ ‘id’ ]; $query = “SELECT name, email FROM users WHERE id = ‘$id’;”; - 코드 내에 위와 같은 SQL 쿼리문 코드가 존재함 - ‘or’ 키워드가 삽입되어 WHERE 문의 조건이 항상 참이 되어 모든 사용자의 정보 전달됨 - ID=1인 사용자와 1=1이 무조건 참이므로 모든 사용자의 정보 노출 사례 ② UNION 구문 활용 - UNION은 합집합으로 두 개의 SELECT 구문의 결과를 모두 포함 - ‘#’ : 뒤에 오는 내용 주..
웹해킹 #2 실습 환경 구축 및 버프스위트 사용법 실습 환경 구축 ① 칼리 리눅스 외부 인터넷을 사용하기 위해 칼리 리눅스의 네트워크 - 어댑터1을 NAT 네트워크로 설정해준다. 사설 IP를 자동으로 할당받고, 가상 머신끼리 해당 사설 IP로 통신하기 위해 네트워크 - 어댑터2의 '네트워크 어댑터 사용하기'를 체크 후 호스트 전용 어댑터로 변경! 그리고 처음에 칼리 리눅스 내 네트워크에서 eth0이나 eth1에 사설 IP가 할당되지 않는 경우가 있으므로 따로 파일을 수정하여 IP를 할당해주어야 한다! -> 외부 인터넷과 사설 네트워크 동시 사용을 위해 '/etc/network/interfaces' 파일 수정하여 처음 부팅 시 DHCP 이용하여 eth0, eth1 두 개의 네트워크 어댑터에 자동으로 IP 주소 할당받도록 해준다. vi /etc/networ..
웹해킹 #1 웹 기본 지식 (URL, HTML, SSS, CSS, HTTP, 쿠키와 세션) 1. URL (Uniform Resource Locator) - 파일에 대한 인터넷 상의 고유 주소 - 프로토콜, 웹 서버, 경로, 파일 이름, 쿼리로 이루어짐 http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument ① 프로토콜 : 브라우저가 어떤 프로토콜을 사용해야 하는 지 알려주며, 웹에서 페이지나 파일에 접근할 때 사용되는 메소드 (HTTP 메소드 안에 또 다른 메소드들 존재) ② 웹 서버 : 어떤 웹 서버가 요구되는 지 알려주며, 연결할 파일이 위치한 서버 IP adress를사용할 수도 있음 ③ port : 웹 서버에서 자원을 접근하기 위해 사용되는 입구이며, ‘:’로 포트번호 구분은 표..