[Bee box] change password, change secret

2022. 8. 11. 17:55web웹/bwapp 실습

#change_password

새 비밀번호를 입력했더니 아무 검증없이 비밀번호가 변경됨

URL에 새 비밀번호가 그대로 노출됨

 

html injection 페이지로 이동 후 화면 속 이미지 태그를 입력

사용자 비밀번호를 evil로 변경 후 넓이와 높이가 모두 0인 이미지를 출력하는 명령

 

bee / evil 을 입력하면 포털 로그인에 성공한다

 

[대응방안]

보안 난이도 상에서와 같이

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