시스템 데이터베이스와 사용자 데이터베이스 구분하기
이 마지막 단계에서는 열거 결과를 바탕으로 시스템 데이터베이스와 사용자 데이터베이스를 명확하게 구분합니다. 이 구분은 침투 테스트에서 다음 단계를 우선순위화하는 데 중요합니다.
이전 단계에서 관찰했듯이 information_schema, mysql, performance_schema와 같은 데이터베이스는 일반적으로 시스템 수준 데이터베이스입니다. 이들은 데이터베이스 관리 시스템의 핵심 기능의 일부이며 일반적으로 메타데이터, DBMS 자체의 사용자 계정 및 성능 통계를 포함합니다. 때때로 악용될 수 있지만 공격자가 종종 찾는 애플리케이션별 민감한 데이터를 포함하는 경우는 드뭅니다.
반면에 표준 시스템 이름이 아닌 이름의 데이터베이스 (예: 우리 예제의 acuart 또는 webapp_db, users, products 등) 는 일반적으로 사용자 생성 데이터베이스입니다. 이러한 데이터베이스에는 웹 애플리케이션의 실제 데이터가 저장됩니다. 예를 들면 다음과 같습니다.
- 사용자 자격 증명 (사용자 이름, 해시된 비밀번호)
- 고객 정보
- 제품 카탈로그
- 재무 기록
- 기타 독점 비즈니스 데이터
침투 테스트를 수행할 때 데이터베이스를 열거한 후에는 이러한 사용자 생성 데이터베이스에 집중해야 합니다. 다음 논리적 단계는 이러한 사용자 데이터베이스 내의 테이블을 열거하고, 해당 테이블 내의 열을 열거한 다음, 마지막으로 데이터를 덤프하는 것입니다.
이 구분을 이해함으로써 가장 가치 있는 정보를 추출하기 위해 후속 sqlmap 명령을 효율적으로 타겟팅할 수 있습니다. 예를 들어, acuart 데이터베이스 내의 테이블을 열거하려면 다음과 같은 명령을 사용합니다.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
이 명령은 식별된 사용자 데이터베이스에 초점을 맞춰 다음 단계의 데이터 추출로 진행하는 방법을 보여줍니다.