이건 그냥 개인적인 생각

1. 서버에서 현재 millisecond값을 value로 하여 authKey를 생성, 유저아이디를 키로 authKey를 메모리에 저장하고 클라로 전송
 
2. 클라이언트는 받은 authKey를 가지고 signature를 생성한뒤 서버로 (signature, nonce, 메세지) 전송
  - nonce 는 클라이언트의 millisecond와 같은 값을 사용
  - signature 생성 : HMACSHA1(authKey,  nonce + 메세지)
 

3. 서버는 받은 nonce와 메세지를 이용해 서버에 저장된 authKey로 signature를 생성, 클라로부터 받은 signature와 일치하는지 체크


'Security' 카테고리의 다른 글

/etc/passwd 내용 노출  (0) 2015.09.03

게임 포털 웹서비스 조직에서 개발자 지원 업무를 하고 있었을때 발생한 보안 이슈였고 원인과 해결 방법에 대해 정리해본다.


1. 현상

사이트내 갤러리 게시판이고, 이미지를 클릭하면 다운로드하는 형태.

특정 url의 response 데이터에 /etc/passwd 내용이 노출되었다,

ex) http://xxx.xxx.com/xxx/xxx?param=file%3A%2F%2F%2Fetc%2Fpasswd



2. 원인

원래는 http://xxxxxx 식의 이미지 경로가 들어와야 하는 하며, 내부 로직에서는 들어온 파라미터를 이용해 

new Url("http://xxxx") 처리를 하도록 되어 있다. 문제는 파라미터로 들어온 file%3A%2F%2F%2Fetc%2Fpasswd

 url decoding을 하면 file:///etc/passwd 값인데 Url클래스가 로컬 파일 접근이 가능하기 때문에 

password 가 response 에 고스란히 노출되었던 것이었다.


3. 해결

기본적으로 XssFilter 적용이 되어 있어서 CRCF injection (http://www.acunetix.com/websitesecurity/crlf-injection/) 

공격과  directory/path traversal 도 되지 않도록 아파치 설정이 되어 있어 노출만 될뿐 추가적인 피해는 없었다.

따라서 아래와 같은 방법으로 해결하도록 가이드하여 적용하였다.

 

1. 파일 확장자 체크 - 정해진 확장자만 허용  (.gif, .jpg, .png )

2. URL 클래스 사용시 새로운 객체 생성에서 url에 HTTP만 허용 (ftp, telnet, file 등은 사용하지 않도록)

 

 추후에라도 파일 다운로드를 하는 웹서비스를 할 경우 까먹지 말고 유의하도록 해야겠다.


연관 이슈

sql injection, xss, parameter manipulation, buffer overflows, directory/path traversal etc.

'Security' 카테고리의 다른 글

서버와 클라이언트 간 메세지 전송  (0) 2015.09.03

+ Recent posts