웹 해킹 & 시큐어 코딩

웹 해킹 & 시큐어 코딩 (29)

홍시뗄레 2025. 2. 21. 12:32

파라미터 변조 취약점이란 무엇인가?

정상 요청 : mypage.jsp?id=hacker

공격 요청 : mypage.jsp?id=admin

이렇게 파라미터 값을 변조하기 때문에 정상 요청인지 공격 요청인지 파악하기 어렵고, 공격하기에는 쉽다. 

공격 원리 분석

사용자 입력값을 통해서 액션이 이루어지는 기능. 파라미터. 

mypage.jsp?id=guest

여기서 id값을 받을 것이다. 사용자에 대한 레코드가 애플리케이션으로 반환된다. sql에서 select * from member where id='guest'; 이런 식으로 반환될 것이다. 

 

해커 같은 경우, 자신의 id가 hacker인데 admin으로 변조한다. 물론 존재하는 id를 넣어서 조회가 되는지 확인해야 한다. admin에 대한 레코드가 그대로 반환되면 공격 성공이다. 

공격인지 아닌지 분별하기가 어렵다. 어플리케이션에서는 확인할 수 있다. 세션을 통해 확인 가능! 

파라미터를 통해서 액션이 이루어지도록 하지 않고 세션을 통해 액션이 이루어지도록 한다면 파라미터 변조 취약점에 대응할 수 있을 것이다. 

[실습9-1] 파라미터 변조 취약점 공격을 통한 타 사용자 게시글 무단 수정, 삭제 실습

우선 기존에 시큐어 코딩을 적용했기 때문에 실습을 위해서 위와 같은 코드를 주석 처리 해주었다. (modify 부분)

삭제 부분도 마찬가지. 이렇게 취약한 환경을 구성하였다.

해커 계정으로 로그인해주자.

우선 이런 식으로 게시글 두개를 작성해주었다. 해커 계정으로 하나, 관리자 계정으로 하나 작성해주었다.

modify.php와 action.php를 다음과 같이 수정해주자. 해커가 쓴 게시글에서 수정 버튼을 눌러 관리자 게시글을 수정하고 싶은데, 패스워드를 입력하라는 로직이 있어서 없애주었다. 이 게시판은 익명 게시판이 아니라 회원제 게시판이기 때문에 딱히 비밀번호 입력하는 부분이 필요가 없다.

현재 해커 계정이고, 해커 계정으로 올린 게시글을 수정해보는 칸에서 url을 보자.

http://127.0.0.1/insecure_website/index.php?page=modify&idx=61

idx=61이란 부분을 관리자 게시글로 가기 위해 62로 수정해보자.

이렇게 쉽게 modify page를 이동할 수 있다.

악의적인 해커가 관리자를 조롱했다.

등록하고 나면 이렇게 수정이 완료되었음을 확인할 수 있다. 

지금 이렇게 수정한 건 form page에서 수정한 거고, 다른 방식으로 수정해보자. 

버프 스위트를 활용해 수정해보자. 

우선 해커 계정으로 로그인한 뒤, 관리자가 올릴 법한 게시글로 수정해주어야 한다. 

해커가 올린 게시글을 수정해주자.

좀 우스꽝스럽게 글을 썼다. 이제 modify 버튼을 누를 때 burp suite로 수정해줄 것이다.

지금 이렇게 뜬다. 현재 idx가 61이므로, 62로 수정해주자.

그러고 나서 게시글을 확인해보면 62번째 게시글이 이렇게 수정된 것을 확인할 수 있다. 해커 계정으로 수정했지만, writer는 관리자로 되어 있다. 

action page에서 시큐어 코딩을 해야 두 가지 공격 실습 방법을 모두 대응할 수 있다.

이번에 삭제도 해보자.

해커 계정으로 올린 게시글을 삭제해보자. 이때 버프스위트를 켜보자.

이때 idx 61을 62로 바꿔주자.

그럼 이렇게 관리자가 작성한 게시글이 삭제되었음을 알 수 있다. 이렇게 파라미터 변조를 통해 타 게시글을 수정, 삭제할 수 있다.