다양한 기록

[모의 해킹] 파라미터 위변조 본문

보안개론

[모의 해킹] 파라미터 위변조

라구넹 2024. 12. 29. 22:06

파라미터 위변조?

파라미터는 어떠한 특정 값을 저장하여 서버로 전달하는 역할을 한다. 간단히 말해 일반적으로 프로그래밍 말하는 변수라고 있다. 그런데 파라미터 위변조에서는 서버로 전달되는 변수(파라미터) 변조하여 서버측에서 이상한 값을 전달받아 악의적으로 동작시키는 공격이다. 완전히 같은 예시는 아니지만, C언어의 구조로 예시를 들면 함수를 콜하면 프로세스의 스택에 리턴 어드레스가 쌓일 것이다. 이것을 버퍼 오버플로우 공격으로 리턴 어드레스를 변조시켜 악의적으로 프로그램의 방향을 비틀 있을 것이다. 파라미터 위변조의 경우는 이와 비슷하게 행동에 영향을 미칠 있는 특정한 파라미터를 변조해서 공격자의 의도대로 프로그램이 작동되도록 만든다.

 

그러면 어떤 식으로 악용이 되는지 알아볼 있다. 우리는 인터넷 게시판을 사용할 로그인을 한다. 그리고 해당 사용자의 정보를 통해 어떠한 글을 누가 작성하였는지 확인이 가능하며, 자신이 작성한 글만 수정하고 삭제가 가능하도록 설정되어 있는 경우가 대부분이다. 그런데, 사용자 정보는 그대로 보내는데 작성한 글의 정보만 다른 사용자가 작성한 글로 바꿔치기 있다.

 

혹은 사용자의 정보를 바꿔치기 해서 다른 사용자인 하는 것도 가능하다. 일반 사용자의 ID 전달하려는 것을 운영자의 ID 변조해서 서버로 보낸다면 접근해서는 안되는 데이터에 접근하는 것도 가능할 것이고, 다른 일반 사용자들의 정보 또한 같은 방식으로 접근이 가능할 것이다.


공격

일반 사용자의 계정으로 로그인하면 다음과 같이 30점이 나온다.

 

설정에서 프록시를 켜주고, 프록시 프로그램을 사용한다. 이번 실습에서는 Burp Suite 사용하였다. 프록시 프로그램의 세팅과 컴퓨터의 프록시 세팅을 , IP 포트 번호를 맞춰 주어야 정상적으로 작동한다. 또한 이번 실습은 HTTPS 아니라 HTTP이기에 설정을 HTTP 해주어야 한다.

 

클라이언트의 요청이 바로 서버로 가는게 아니라 프록시를 거쳐서 가기 때문에 파라미터를 변조할 틈이 생기게 된다.

 

이러면 중간에서 해당 요청을 캐치해서 student라는 파라미터를 조작하는게 가능해진다.

 

student 값을 admin으로 변조해서 원래 가려던 서버로 다시 전송시키면 student 로그인된 상태에서 admin 성적을 조회할 있을 것이다.

 

성적 불러오기의 결과로 student 성적이 아닌 admin 성적이 보여지게 된다. 결과적으로, student 로그인했는데 파라미터를 조작해서 admin이라 인식시킨 것이다.

 

방어기법

실습 방법에 나온 방식 말고도 다양한 방식의 파라미터 위변조 공격이 존재한다. URL 매개변수를 직접 조작해서 매개 변수가 변조된 상태로 요청을 하는 것이 가능하다. 100000 가격의 물품을 구매한다고 , http://..../....?value=100000 형태를, http://..../....?value=100 으로 변조하는 것이 가능하다. 그렇다면 이러한 파라미터 위변조를 막는 방법 또한 있을 것이다. 파라미터 위변조는 클라이언트 측에서 서버측으로 이루어지는 공격이다. 서버 쪽에서 공격을 막기 위해 대책을 세워두어야 한다.

 

첫번째로는 들어온 입력값을 그대로 처리하기 전에 변조가 되었는지 확인을 해야한다. 100000원의 물품을 100원에 구입하려는 시도는 당연히 필터링해야 것이다. 혹은 전혀 예상하지 못한 값을 시도할 수도 있고, 그런 값이 예외 처리가 되어 있지 않다면 서버가 다운될 것이다. 입력이 유효한지는 필수적으로 확인해야 한다.

 

토큰을 사용하는 방법도 있다. 보통 로그인을 하면 토큰이 생성되는데 사용자를 인증하기 위해 사용된다. 로그인을 하면 사용자는 토큰을 발급받고 해당 토큰으로 권한을 인증 받는다. 권한이 부족한 사용자에게 부적절한 요청이 들어온다면 해당 요청을 거부할 있을 것이다. 토큰을 변조하는 경우도 있을 있지만 토큰의 내용을 암호화하는 등의 방법으로 대처할 있다. 암호화로 토큰의 무결성을 보장할 있다. 거기에 토큰은 ID 비밀번호처럼 유지되는 것이 아니라 일시적이기에 암호화되는 토큰의 내용이 자주 바뀐다.

 

토큰만 암호화하는 것이 아니라, 파라미터와 요소들을 암호화해서 전송하면 파라미터를 변조하는 것을 막을 있다. , 어떤 시스템을 사용하느냐에 따라 다를 있지만 암호화된 파일이라 할지라도 권한에 따라 받을 있게 해야 한다. 소스에서 암호화 키가 노출될 있다.

 

다양한 방법과 함께, 파라미터 위변조 시도가 있을 경우 어떤 시도가 있었는지 로그를 기록해두어야 한다. 대비를 많이 하더라도 우회하는 공격이 있을 있다. 그럴 어떤 문제가 있었는지 체크하기 위해 기록을 해두어야 한다.

'보안개론' 카테고리의 다른 글

[모의 해킹] UAF & Double Free  (0) 2024.12.29
[모의 해킹] XSS  (0) 2024.12.29
[모의 해킹] Blind SQL Injection  (0) 2024.12.29
암호 기법 정리  (0) 2024.06.08
PT, BBP  (0) 2024.06.08