-
[Bee box] change password, change secretweb웹/bwapp 실습 2022. 8. 11. 17:55
#change_password
새 비밀번호를 입력했더니 아무 검증없이 비밀번호가 변경됨
URL에 새 비밀번호가 그대로 노출됨
html injection 페이지로 이동 후 화면 속 이미지 태그를 입력
[대응방안]
보안 난이도 상에서와 같이
password_curr의 값을 SHA-1 해시 함수를 씌워 DB에 저장된 패스워드와 값을 비교한 후 비밀번호가
변경될 수 있도록 페이지를 작성한다.
#change_secret
csrf_3.php 페이지의 소스코드를 열어보면 다음과 같은 부분이 있다.
hidden 타입으로 선언된 login 변수에 현재 아이디 값이 할당되어 있다.
버프스위트로 잡아서 밑에 나오는 3개의 변수를 확인한다.
xss_stored_1.php 페이지로 이동 후 화면 속 이미지 태그를 입력한다.
SQL Injection (Login Form/User)로 이동해서 로그인하면 아까 입력했던 이미지 태그의
secret 변수의 내용이 화면에 출력됨을 볼 수 있다.
[대응방안]
csrf_3.php 페이지에서는 모든 난이도에서 mysqli_real_string 함수로 입력값을 우회한다.
스크립트 코드가 입력될 경우 문자로 인식하도록하기 때문에 SQL공격에 안전하다.
난이도 중-상에서처럼 로그인 요청을 토큰으로 받아 비밀번호 힌트를 변경할 수도, 다른 사용자의 비밀번호 힌트에
접근할 수도 없도록 한다.
토큰 값에 mt_rand라는 메르센 트위스터 알고리즘을 사용하는 함수를 써서 토큰이 중복될 확률을 최대한 낮춘다.
또 uniqid()를 이용하여 mt_rand의 반환값을 인자로 한 번 더 임의의 문자열을 생성하여 토큰의 중복 및 예측공격 확률을 낮춘다.
'web웹 > bwapp 실습' 카테고리의 다른 글
[Bee box] SSRF(서버측 변조 요청) 실습 (0) 2022.08.04 [Bee box] 반사된 XSS 취약점 실습 (0) 2022.07.31 세션 관리 취약점 (0) 2022.07.24 SQL time based injection 실습 (0) 2022.07.11 퀴즈 오답노트 0707 (0) 2022.07.10