-
[JS, PHP, MYSQL] 로그인, 로그인 우회 - 3.1Web - Security/Login 2023. 5. 10. 15:32
로그인 과정에서 SQL 질의문에 대해서 검사하는 기능을 만들었다
로그인 페이지
이전에 만들어놨던 login_2 데이터베이스와 로그인페이지를 이름만 변경하였다
데이터 베이스 연결 변수명을 login_2에서 login_3으로 바꾼 것을 제외하고 달라진 건 없다
5 ~ 8
로그인페이지의 입력값을 받아오고 아이디와 비밀번호가 있다면 아래의 과정을 이어가고 없다면 로그인 실패처리한다11 ~ 19
사용자 입력을 받은 SQL 질의문을 검증하는 단계를 추가해 줬다
완성된 SQL 질의문에서 SELECT, FROM, WHERE 단어의 개수를 구해주고
SELECT, FROM, WHERE의 개수가 모두 1개여야만 데이터베이스에 SQL 질의문을 전달하도록 한다21 ~ 44
만약 일치하는 회원이 존재한다면 로그인 성공 페이지로 이동하고 존재하지 않는다면 로그인 페이지로 이동하게 한다변수이름 : "test1, test2, test3, test4" , 의 개수 : substr_count(변수이름, "개수 세고 싶은 것 여기에") 3 = substr_count(변수이름, ",");
로그인 테스트
로그인과정에는 문제가 없다
login_3 - 로그인 우회 및 취약점
CASE 1 - SQL Injection
normaltic 계정만 존재하지만 위와 같은 SQL Injection을 이용하여 로그인에 성공했다
CASE 2 - 로그인 페이지로 바로 이동
입력값에 대한 검증만 강화하여 로그인 홈페이지로 바로 넘어가는 경우는 막지 못한다
CASE 3 - Brute Force ( 취약점 )
이 로그인 페이지에서는 로그인 시도 횟수를 확인하지 않고 있다
아이디가 normaltic 이고 비밀번호가 1234 이므로 사전대입공격으로 충분히 로그인이 가능하다
대응방안
CASE 1 - SQL Injection
select, from, where 를 포함하여 and 와 or 의 개수도 추가해 주도록 한다
CASE 2 - 로그인 페이지로 바로 이동
로그인에 성고을 해야만 접근이 가능하도록 세션을 이용해 주도록 한다
CASE 3 - Brute Force
로그인 시도 횟수를 확인하여 Brute Force 공격을 차단하도록 한다
728x90'Web - Security > Login' 카테고리의 다른 글
Captcha - Brute Force(KNN) (0) 2023.07.19 [JS, PHP, MYSQL] 로그인, 로그인 우회 - 3.2 (0) 2023.05.10 [JS, PHP, MYSQL] 로그인, 로그인 우회 - 2.2 (0) 2023.05.04 [JS, PHP, MYSQL] 로그인, 로그인 우회 - 2.1 (0) 2023.05.04 로그인 인증 - 쿠키, 세션, 세션아이디 (0) 2023.04.29