삽질블로그
[Kali_LINUX] Command Injection Attack | DVWA | Website Hacking Attacks 본문
[Kali_LINUX] Command Injection Attack | DVWA | Website Hacking Attacks
삽질장인 2020. 8. 26. 19:27※ 본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
Command Injection 공격이란?
입력 창에 원하는 입력값 이외에 다양한 연결 기호(";", "&&", "||" 등)를 붙여 시스템 명령 등을 추가로 입력해서 정보를 탈취하는 공격을 말합니다.
처음화면
정상 입력
Forward를 눌렀을 때 정상적으로 ping에 대한 결과만 나온다.
공격 - 이제 IP주소 뒤에 세미콜론(;)을 붙여 패스워드 정보를 요청
요청에 패스워드 요청이 덧붙여 전송되고 Forward 버튼을 누르게 되면 서버로 전송을 유도합니다.
취약점 : 웹 개발자는 텍스트 박스에 IP 이외의 문자에 대해서는 예외처리하지 않았다.
HTTP history를 보면 ping에 대한 응답도 왔지만 시스템의 패스워드 정보도 읽어온 것을 확인할 수 있다.
1) POST 패턴 정책화
스노트(SNORT) 룰 형식 : content:"POST";depth:4;
2) IP 이외의 값을 추출(1)
먼저 정상 요청과 비정상 요청을 비교해 보자!
정상 사용자 : ip=1.1.1.1&Submit=Submit
비정상 사용자: ip=1.1.1.1%3Bcat+%2Fetc%Fpassword&Submit
IP주소 다음에 반드시 &Submit이 없는 요청은 공격자로 간주
IP 이외의 값을 추출(2)
스노트 룰 형식 : pcre:!"/ip=[0-9]{1,3}\.[0-9]{1.3}\.[0-9]{1,3}.[0-9]{1,3}&Submit/";
스노트에서 PCRE 기본 규칙은? Pcre:[!]"/내용/";
[0-9]{1,3}\.
IP주소는 숫자[0에서 9]로 이루어져 있고, 길이는 {1에서 3까지}
그리고 .(점은 특수문자 \와 같이 써야 함)으로 4개로 구성
3) 해당 페이지만의 특징
해당 취약한 페이지만 가지는 특징이 필요하다. 왜냐하면, 이 페이지에 대해서만 취약점을 가지고 있기 때문이다.
스노트 룰 형식: content:"Submit";
[오탐 가능성] Submit 이란 이름은 다른 폼에서도 사용될 수 있어서 대상지 서버 주소를 추가로 정책에 넣으면 오탐을 줄일 수 있다.
#Snort 란?
Snort는 실시간으로 트래픽 분석과 패킷을 기록하는 침입 방지 시스템이다.
#Snort 기능
- 패킷 스니퍼 모드
tcpdump와 같은 네트워크의 TCP/IP 패킷을 읽어 보여주는 기능을 제공
- 패킷 로거 모드
모니터링한 패킷을 저장하고 로그를 기록하는 등 트래픽 디버깅에 유용하게 사용
- Network IDS 모드
침입방지시스템(IDS) / 네트워크 트래픽 분석 및 공격 탐지 기능 제공
- Snort Inline
침입방지시스템(IDS) / 패킷 분석, 공격 차단 기능 제공
# Snort 구조
- Sniffer
Snort IDS를 통과한 모든 패킷을 수집
- Preprocessor
공격 탐지를 위해 plug-in을 먼저 거치며 매칭되는지 확인
- Detecion Engine
Rule 기반 탐지 엔진으로, 사전 정의된 탐지룰과 매칭되는지 확인
- Alert Logging
정책에 따른 로그 기록을 함
# /etc/nsm/rules/downloaded.rules : 스노트에서 기본으로 제공하는 규칙 파일
# /etc/nsm/rules/local.rules : 사용자가 정의 해주는 스노트 규칙 파일
사용자 정의 스노트 규칙 파일을 작성할 때에는 다음과 같은 형식으로 작성해준다.
[Action] [Protocol] [Src IP] [Src IP] [Src Port] [방향] [Dst IP] [Dst Port] [(Option)]
# /etc/nsm/templates/snort/snort.conf : 스노트 설정 파일