이번에는 데이타베이스에 대해 알아보자


거의 모든 서비스에서 데이타베이스는 정말 중요하다


많은 정보를 저장하고 있기 때문에 해커의 공격 대상이 된다


그만큼 보안을 잘 해야한다


SQLmap은 SQL 인젝션 취약점을 검색하고


데이타베이스 서버를 탈취하는 과정을 자동화한 침투 테스트 도구이다


데이타베이스의 핑거프린팅(정보 취득)에서부터 데이타베이스로의 데이타 추출하기,


파일 시스템에 접속하기와 대역 외 접속을 통한 OS상의 명령 실행하기까지


최고의 침투 테스터를 위한 수많은 편리한 기능과 광범위한 옵션(스위치)이 있는


강력한 검출 엔진이다



먼저 SQL 인젝션 취약점이란


서비스에서 데이타베이스에 접속해 데이타를 가져오는 과정에서 본래의 Query문이 아니고,


공격자에 의해 입력된 질의문을 그대로 신뢰해 사용함으로써 공격자가 원하는 데이타 정보가


노출되게 하는 공격이다



인증 우회를 통한 공격


인증 우회를 통한 공격에는 3가지 정도의 방법으로 공격이 가능하다


1. 로그인이 이뤄지고 있을 법한 페이지를 추측해 인증 우회 가능성 점검

2. 사용자 계정 정보들, 테스트 계정 여부 등을 추측해 인증 확인

3. SQL 인젝션 공격


여기서는 SQL 인젝션 공격을 통한 인증 우회에 대해 알아보자


사용자가 어떤 페이지에서 로그인 할때

ID: admin'--

PASS : 1234'--

이런 식으로 입력을 하게 된다면


Query문은 Select * from members whereid=admin'-- and pass=1234'-- 와 같은 형태로


데이타베이스에 전송 된다


전송된 Query 값이 일치할때만 데이타베이스는 True 값을 반환한다


하지만 위 Query문에서는 admin'--가 입력 되어서


admin 뒤에 부분은 다 생략되기 때문에


패스워드인증을 우회하여 PASS에 어떤 값이 들어가도 admin의 정보를 반환하게 된다




에러 베이스(Error Base) 공격


데이타베이스 서버는 어떤 값이 들어올지 대충 알수 있다


게시판의 번호라던지 id검색 등 값이 될 수 있다


하지만 공격자는 데이타베이스가 예측 할 수 없는 값을 입력 한다


게시판 번호가 들어가는 곳에 특수 문자를 이용해 데이타베이스 버전 정보나


데이타베이스를 누가 사용하는지 물어 볼수 있다


데이타베이스가 알지 못하는 걸 물어보더라도 데이타베이스는


에러 메세지로 응답을 해준다


그런 정보는 없다 던지 varchar 형식에 이런 이상한 문자가 들어왔다고 알려준다던지


데이타베이스는 응답한다


해커는 이런 정보를 하나하나 모와서


목표인 데이타베이스에 저장되어있는 데이타를 획득한다


그리고 2차적인 공격을 통해 시스템 침투/제어를 할 수도 있다


ex) '/admin/login.asp and 0<>(select top 1 char(94)+Cast(admin_pwd as varchar(8000))+char(94) from admins..acid_event)




블라인드 인젝션 공격


공격자는 정상적인 Query 문을 만들기 위해 board_idx=1 이라고 입력한다면


데이타베이스는 True로 인식할 것이다


공격자는 board_idx=1 에서 and 1 을 붙여서 입력해본다


board_idx=1 and 1


그러면 1 이 참이기 때문에 데이타베이스는 True라고 생각할 것이고


1 and 2 로 입력한다면 False 라고 생각할 것이다