인증결함
인증 결함 이란 인증에 필요한 사용자의 계정 정보를 노출하는 취약점으로, 보통 웹 페이지의 HTML 코드에 계정 정보를 노출하거나 인증을 GET 메서드로 요청하여 URL에 계정 정보가 노출한다.
또한 웹 사이트에 가입할 때 추측할 수 있거나 무차별 대입 공격이 가능한 비밀번호 입력을 허용하는 경우도 포함한다.
이외에도 비밀번호 찾기 기능에서 사용자의 계정 정보를 노출하기도 한다.
1.ba_insecure_login_1.php(하)
웹 페이지가 안전하지 않은 로그인 형식을 사용하는지 점검 한다.
웹페이지의 소스코드를 분석해보면
전송 방식은 POST 방식을 사용하고 있고 action 으로 bWAPP/ba_insecure_login_1.php 여기로 전송해주고있다
코드를 분석해 보면 딱봐도 font 에 값이 써있는데 이걸 black 으로 바꿔주면
로그인창 옆에 그대로 출력되는걸 볼수있다.
각각 입력하고 로그인해주면 로그인이 된다.
1.ba_insecure_login_1.php(중)
난이도 중은 이미 값이 입력이 되어있다
개발자 도구로 우선 로그인창의 form 태그를 분석해봤는데 직접적으로 얻을 수 있는 정보는 없고 비밀번호를 클릭했을때 unlock_secret() 만 호출되는것을 볼수있다.
이제 unlock_secret() 함수를 소스보기를 통해서 찾으면
이렇게 비밀번호를 만드는 복호화 함수 정보가 모두 노출되어 있었다.
조건문 위의 secret 변수에 d,j,k,q,x,t,o,g,h,d,p 라는 문자열이 대입되어 있다.
unlock_secret 함수는 charAt 함수를 호출한다.
즉 secret 변수에 대입된 값은 문자가 아닌 var 타입으로 선언된 변수다. 같은 변수 명이 여러 번 등장하는 것으로 보아 변수에 입력한 값을 계속 덮어 쓰고 있다.
가장 마지막에 선언된 변수에 해당하는 값으로 원래 secret 내용을 찾는다
var bWAPP = "bash update killed my shells!"
저 위에서 첫 번째 문자는 h이다
다음 두번째 j를 보면 charAt(5) 이다 즉 6번째 존재하는 값이다
두번째 문자는 u
다음 k를 확인하면 charAt(14) 즉 15번째 존재하는 값이다
세번쨰 문자는 l
....
이런식으로 다 구해주면
hulk smash 값이 출력이 된다
대응 방안
난이도 상에서는 난이도 하 처럼 로그인 폼에서 color 태그로 숨겨 놓은것도 소스보기를 통해서도 아무런 힌트를 얻을수 없었다
페이지 정보에 값을 노출하면 안된다.
'OWASP top 10 ' 카테고리의 다른 글
[A2] 세션 관리 취약점 (0) | 2017.12.13 |
---|---|
[A2] 인증 결함 -비밀번호 무차별 대입 공격 (0) | 2017.12.13 |
[A1] Blind SQL 인젝션 (0) | 2017.12.12 |
[A1] SQL 인젝션 (0) | 2017.12.03 |
[A1] SSI 코드 인젝션 (0) | 2017.12.02 |