ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS, PHP, MYSQL] 로그인, 로그인 우회 - 2.2
    Web - Security/Login 2023. 5. 4. 13:07

     

    로그인을 하면서 공백이 있으면 로그인이 안되도록 만들어 주었다

     

    로그인 페이지

    간단하게 id, pw 만을 데이터로 가지고 있는 테이블을 생성하였다

     

    로그인 페이지를 제작하였다

    php코드는 없지만 문제가 없기에 위와 같이 만들었다

     

    로그인페이지에서 입력된 값을 받아와 아이디가 공백인지 먼저 검사하고 해당 정보가 있는지 먼저 조회를 한다

    이후 아이디가 있다면 비밀번호가 공백인지 확인하고 다시한번 조회를 하여 로그인하도록 한다

     

    로그인에 실패했을 경우 위와같이 이전페이지로 돌아가도록 해 주었다

     

    데이터베이스 연결 코드와 로그인 페이지다

    간단하게 로그인이 되는지 확인하기 위함이여서 로그인완료 페이지에는 별다른 기능이 없다

     

     

     

    로그인 테스트

    공백으로 로그인을 시도해보니 위와 같이 로그인에 실패하였다

     

    잘못된 값을 넣어봤다

     

    로그인에 실패했다

     

    정상적인 값으로 다시 도전해보았다

    위와 같이 로그인에 성공하였고 정상적으로 페이지가 이동이 되었다

     

     

     

    login_2  -  로그인 우회 및 취약점

     

    CASE 1 - SQL Injection 1.1

    normaltic 계정만 존재하지만 위와 같은 SQL Injection을 이용하여 로그인에 성공했다

     

    CASE 2 - SQL Injection 1.2

    아이디와 비밀번호 검증을 따로하기에 비밀번호를 몰라도 위와 같은 방법으로 로그인을 시도 할 수 있다

     

    CASE 3 - 로그인 페이지로 바로 이동

    url에 로그인 성공 페이지를 바로 입력하면 위와 같이 로그인 과정을 뛰어넘고 바로 이동하게 된다

     

    CASE 4 - Brute Force ( 취약점 )

    이 로그인 페이지에서는 로그인 시도 횟수를 확인하지 않고 있다

    아이디가 normaltic 이고 비밀번호가 1234 이므로 사전대입공격으로 충분히 로그인이 가능하다

     

     

     

    대응방안

     

    CASE 1 - SQL Injection 1.1

    SQL Injection에 이용이 되는 #과 같은 주석기능을 제거해 줘야 한다

    또한 아이디값과 비밀번호를 따로따로 검증하는 방법도 있다

     

    CASE 2 - SQL Injection 1.2

    아이디와 비밀번호 검증을 따로 진행하는 과정에서 아이디를 확인하고 바로 넘어가지 말고 아이디 확인 변수를 0에서 1로 만든 뒤

    비밀번호를 확인하여 비밀번호 확인 변수역시 0에서 1로 만들어 2가지의 변수 모두가 1이 되었을 경우 로그인이 되도록 해준다

     

    CASE 3 - 로그인 페이지로 바로 이동

    로그인 페이지에서는 login_2check.php에서 확인되었다는 응답이 있어야 이동이 가능하도록 해 주어야 한다

     

    CASE 4 - Brute Force

    현재 쿠키와 세션 같은 기능을 추가해 주지 않았지만
    추가를 해 주었다면 로그인 시도 횟수를 확인하여 Brute Force 공격을 차단하도록 한다

    728x90
Designed by Tistory.