[웹 해킹 & 시큐어 코딩] 03. OS Command Injection

2023. 12. 3. 03:00·📗 self-study/📗 inflearn

 

 

 

🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

 

위아래 1줄씩 띄우고 중요한 부분은 볼드 효과

 

 

 

 

📍 OS Command Injection이란?

👉🏻 운영체제(시스템) 명령어 주입

👉🏻 원격 실행 명령어를 주입함으로써 공격자가 원하는 명령을 실행하게 함

 

👉🏻 서버의 중요 설정 파일 등을 조회/수정/삭제하고 서버 자체를 재실행 한다든지 치명적인 공격이 될 수 있음

 

 

 

📍 공격 대상

👉🏻 SQL Injection은 Application과 DB가 연결된 상태(DB Connection)에서만 공격 가능

👉🏻 OS Command Injection은 Application과 시스템 명령어가 연결된 상태에서 공격 가능

👉🏻 즉, OS Command Injection은 일반 웹사이트 중에서도 특정 관리자 페이지에서 시스템 명령어 실행이 가능한 특수한 환경에서만 발생됨

 

 

 

📍 SQL Injection VS OS Command Injection

👉🏻 SQL Injection은 중요 데이터 탈취, OS Command Injection은 중요 데이터 탈취는 물론 다른 명령도 실행 가능

👉🏻 SQL Injection의 경우 테이블 삭제 등의 정말 중요한 명령어는 systemadmin과 같은 권한이 있어야 한다는 제약이 있으나 OS Command Injection은 이러한 권한에 대해서 조금 더 수월하게 접근 가능하여 더욱 위험하다고 볼 수 있음

 

👉🏻 하지만, 오늘날 DB가 정보의 중심지이기 때문에 Injection 취약점의 대장은 SQL Injection임! 

 

 

 

📍 공격 원리 분석

👉🏻 CMD 주입 > 사용자 입력 값 + 미완성되 시스템 명령어 구문 > 완성된 시스템 명령어 구문 > 결과에 따른 동작 구성 > 공격 성공

 

// 정상 값
nslookup www.test.co.kr

// 비정상적 값
nslookup www.test.co.kr&ipconfig

👉🏻 비정상적인 값으로 웹쉘 구현이 될 수 있기 때문에 CMD 주입 시에 입력 값 검증 로직이 필요함!

 

 

 

📍 대응 방안

👉🏻 서버 사이드 스크립트로 기능 구현

...
import java.util.regex.*;
...
String ip = request.getParameter("ip");
boolean flag = Pattern.matches("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$", ip);
if(!flag) {
	out.println(history.back(-1););
	return;
}
...

// 혹은 화이트리스트 검증 방식으로 필요한 부분만 허용함
String value = request.getParameter("value");
boolean flag = Pattern.matches("^[0-9a-zA-Z.-]*&", value);

// 악의적인 문자 검증
String value = request.getParameter("value");
boolean flag = Pattern.matches("[|&\n;`]", value);
if(flag) {
	return;
}

👉🏻 사용자 입력 값 형식에 따른 정규 표현식 검증

👉🏻  악의적인 문자 검증

 

👉🏻 웹 사이트에서 해당 기능 없애기

 

 

 

출처

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

https://www.inflearn.com/course/%EC%9B%B9%ED%95%B4%ED%82%B9-%EB%B3%B4%EC%95%88-%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD%94%EB%94%A9

 

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 - 인프런 | 강의

정보보안 입문자와 웹 개발자 분들을 위한 웹 해킹 입문 강의! 본 강의를 시작으로 웹 해킹을 재미있게 시작해보세요!, 웹 개발자, 정보보안 입문자를 위한 웹 해킹 학습!언제, 어떤 위험 상황에

www.inflearn.com

 

 

저작자표시 비영리 변경금지 (새창열림)
'📗 self-study/📗 inflearn' 카테고리의 다른 글
  • [웹 해킹 & 시큐어 코딩] 05. XSS
  • [웹 해킹 & 시큐어 코딩] 04. XXE Injection
  • [웹 해킹 & 시큐어 코딩] 02. SQL Injection
  • [웹 해킹 & 시큐어 코딩] 01. 웹 해킹에 대한 이해
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[웹 해킹 & 시큐어 코딩] 03. OS Command Injection
상단으로

티스토리툴바