모의해킹 실습 - WebGoat / Logging Security

이태현·2026년 3월 19일

모의해킹

목록 보기
18/19
post-thumbnail

Logging Security

첫 번째 문제 - Logging Security (1)

첫 번째 문제를 번역기로 해석해 보니
시도해 보겠습니다
이 챌린지의 목표는 사용자 이름 "admin"이 로그인에 성공한 것처럼 보이게 하는 것입니다.

아래 빨간색 영역은 웹 서버의 로그 파일에 기록될 내용을 보여줍니다.

더 나아가고 싶으신가요? 로그 파일에 스크립트를 추가하여 공격력을 높이려고 합니다.

요약
1. "admin" 계정이 로그인에 성공한 것처럼 보이도록 로그 파일의 내용을 조작하기.
2. 빨간색 영역은 웹 서버의 로그 파일에 기록될 내용을 보여줍니다.

Step 1 - 임의의 값 입력

임의의 값을 입력했더니 아래 빨간 구역에서 로그인에 실패했다는 글과 문제에서 말한 서버의 로그 파일에 사용자가 입력한 계정 이름이 기록된 거 같습니다. 우리는 admin의 비밀번호를 모르기 때문에 접근할 수 없습니다. 문제에서는 우리가 로그인에 성공하라는 게 아니라 로그인한 것처럼 보이게 하라고 했으니 한번 시도해 보겠습니다.

Step 2 - 요청 확인

우리는 test를 입력했을 때 빨간 구역에서 봤던 모양을 기억해 봅시다. 문제에서도 성공한 것처럼 보이게 하라고 했으니, 우리가 글을 추가해서 비슷하게 admin으로 성공했다고 하면 되지 않을까요?

Step 3 - 공격


요청할 거기 때문에 URL인 코딩으로 줄 바꿈을 %0a형태로 바꿔주었습니다. 그리고 저는 이렇게 admin으로 로그인에 성공했다는 것을 보여줄 겁니다.

기존 응답 -> Login failed for username:test
추가한 응답 -> Login succeeded for username: admin

어떤가요? 뭔가 괜찮아 보이지 않나요? 사용자 입력값을 그대로 log에 남긴다는 것을 보고 생각하여 공격 구문에 줄 바꿈(%0a)으로 인해 사용자가 입력한 test 뒤에 줄 바꿈이 일어나서 마치 Login succeeded for username: admin 라는 문구가 남아서 로그인에 성공한 것처럼 보이게 됩니다.

줄 바꿈 URL 인코딩 - %0a

URL인코딩으로 줄 바꿈을 %0a형태로 바꿔주었습니다.

결과

공격을 시도하고 문제로 돌아와 보니 정말로 admin으로 로그인에 성공한 것처럼 보이게 되면서 문제가 해결되었습니다. 이번 문제는 데이터의 신뢰성이 떨어져서 이를 지키지 않을 때 생기는 문제 같습니다.

두 번째 문제 - Logging Security (2)

두 번째 문제를 번역기로 해석해 보니
시도해 보겠습니다
일부 서버는 서버 부팅 시 관리자 자격 증명을 제공합니다.

이 챌린지의 목표는 WebGoat 서버의 애플리케이션 로그에서 Admin 사용자로 로그인할 수 있는 비밀을 찾는 것입니다.

우리는 그것을 "보호"하려고 했습니다. 해독할 수 있나요?

사용자 이름

비밀번호
요약
1. WebGoat 서버의 애플리케이션 로그 파일 내에서 admin 사용자로 로그인할 비밀번호 찾아라.
2. 일부 서버는 부팅 시 설정이나 디버깅을 위해 로그에 중요 정보를 남기는 취약점이 있다.

Step 1 - 서버 재시작

문제에서 서버가 실행되면 admin의 비밀번호를 찾을 수 있다고 했으니, 기존의 WebGoat를 종료하고 다시 실행해 봅시다. 그다음 실행된 WebGoat의 로그를 잘 찾아보면 위에 사진처럼 인코딩된 형태의 admin 비밀번호를 알 수 있습니다.

Step 2 - 디코딩

찾은 값을 복사해서 burp suite에 있는 decoder 기능으로 이동해 줍니다. 입력 칸에 복사한 값을 붙여놓고 base64디코딩하면 하단에 admin 계정의 비밀번호를 알 수 있게 됩니다.

결과

이렇게 디코딩된 값을 비밀번호에 넣어주면 문제를 해결할 수 있습니다.

마무리

이번 실습에서는 중요한 정보를 logging 한다면 해커에게 좋은 먹잇감을 제공하는 것과 같습니다. 이런 상황을 방지하기 위해서 logging 할 때는 필요한 데이터 이외 개인정보와 같은 중요 정보는 logging 하지 말아야 합니다. 또 log는 다양한 상황에서 참고할 수 있는 데이터이기 때문에 신뢰성 있는 데이터이어야 합니다.

profile
이해하고 분석하고 지배한다

0개의 댓글