MetaCODING

SQL 인젝션 sql injection 공격 및 예방 복습 본문

보안

SQL 인젝션 sql injection 공격 및 예방 복습

METACODING 2023. 9. 27. 16:35
728x90
반응형
 

웹 서비스 기반 주요 위협 SQL Injection

[SQL Injection] 내가 입력할 수 있는 영역에 진단을 수행함(입력값) 웹 사이트를 둘러보다가 DB에 질의할 것 같은 페이지에서 진단을 수행 ※인증우회 - ' or 1=1 -- - ' or '1'='1 - ' or 'a'='a - ' or '222222'='222

metacoding.tistory.com

SQL 인젝션(SQL Injection)은 웹 애플리케이션 보안에서 중요한 주제 중 하나다.

SQL 인젝션은 악의적인 공격자가 웹 애플리케이션의 입력 필드를 통해 악성 SQL 쿼리를

실행하도록 하는 공격 기술이다. 이로 인해 데이터베이스에 무단 접근하거나 데이터를 삭제, 수정 또는

탈취 등의 피해를 입을 수 있다.

SQL 인젝션 공격은 사이트에 대한 해킹을 초보자도 쉽게 할 수 있으며,

인풋을 이용하여 강제 로그인, DB 전체 호출, DB 삭제와 같은 위험한 행위가 가능하고

따옴표나 유니온 셀렉트와 같은 SQL 문법을 이용하면 취약점을 발견하고 해결할 수 있다는 것도 알 수 있다.

https://zrr.kr/EB1t

 

OWASP Juice Shop

 

juice-shop.herokuapp.com

SQL 인젝션 공격을 위해 따옴표를 입력하면 에러 메시지가 바뀌는 것으로 쉽게 공격할 수 있다.

SQL 인젝션 공격은 코드를 대충 작성하면 발생할 수 있다.

따옴표를 입력하면 에러 메시지가 바뀌는 것으로 쉽게 공격할 수 있다.

 

에러 메시지를 자세하게 작성하면 해커들에게 도움이 되므로 주의가 필요!!

SQL injection으로 강제 로그인, 테이블 전체 빼오기, db 삭제 등의 행위가 가능하다!!

'강제 로그인'

가짜 뱅킹 사이트를 방문하여 해킹 연습을 해보면, SQL 문법의 일부인 따옴표로 인해

이상한 SQL 문법 오류가 발견할 수 있고 SQL injection으로 인한 해킹 공격 가능성을 파악할 수 있다.

https://zrr.kr/K7fI

 

Altoro Mutual

Online Banking with FREE Online Bill Pay No stamps, envelopes, or checks to write give you more time to spend on the things you enjoy. Real Estate Financing Fast. Simple. Professional. Whether you are preparing to buy, build, purchase land, or construct ne

demo.testfire.net

'관리자 권한 탈취'

admin' OR 1=1 --

계정 탈취 성공!!!

'테이블 출력'

https://zrr.kr/J6Ig

 

Home of Acunetix Art

welcome to our page Test site for Acunetix WVS. Warning: This is not a real shop. This is an example PHP application, which is intentionally vulnerable to web attacks. It is intended to help you test Acunetix. It also helps you understand how developer err

testphp.vulnweb.com

-1 UNION SELECT 1,uname,pass FROM users WHERE uname='test'

성공한 경우

SQL injection으로 admin 권한을 탈취하고, 유니온 셀렉트 문법을 사용하여 다른 테이블의 내용도 출력이 가능하다.

SELECT * FROM accounts

WHERE id='유저가 입한 id' AND pw='유저가 입력한 pw'

 

실패한 경우

만족하는 모든 행을 출력하는 경우, 항상 TRUE이므로 테이블의 모든 행이 출력

맨 위에 있는 계정은 대부분 테스트 계정 혹은 admin 계정이므로, 이를 이용해 어드민 권한 획득이 가능하다!!

또한,

유니온 셀렉트 문법을 사용하면 다른 테이블의 내용도 출력 가능한데,

예를 들어,

작가 번호를 입력하면 작가의 소개 글을

db에서 꺼내서 보여주는 사이트에서 유니온 셀렉트를 사용하여 다른 테이블의 내용도 출력이 가능하다!!

(SQL 인젝션 공격에서 패스워드와 유저 이름이 출력되는 원리)

정리하자면,

SQL 인젝션 공격에서는 입력란에 SQL 명령어를 입력하여 해커가 데이터베이스에 접근 가능!!

이를 이용하여 패스워드와 유저 이름을 출력하는 등 코드를 보여주며 이러한 공격 방법을 알아야 방어할 수 있다.

https://zrr.kr/xL8S

 

SQL(Structured Query Language) Injection 공격 개념 취약점

웹서버와 DB서버가 연동되는 웹 서비스 중 사용자의 입력을 받는 화면이 로그인 화면, 검색 입력 창 등 존재하고 입력 받는 문자열에 별도의 처리없이 데이터베이스 조회를 위한 SQL 구문이 사용

metacoding.tistory.com

728x90
반응형