본문 바로가기

IT Security/DVWA(Damn Vulnerable Web App)

[DVWA] Weak Session ID

안녕하세요 Retain0입니다. 이번 시간에는 " DVWA "라는 취약한 웹 애플리케이션을 통한 Weak Session ID 공격을 해보도록 하겠습니다.

 

Weak Session ID 란

  • 일반적으로 사용자가 대상 웹서버에 액세스 하면 식별을 하기 위해 세션 ID를 사용자에게 할당합니다. 획득한 세션 ID는 사용자의 쿠키에 저장되고 유지하면서 서버와 사용자 간에 식 벽을 하게 됩니다. 하지만 세션 ID가 단순하다면 쉽게 위조가 가능해집니다. 이럴 경우 공격자는 다른 사용자의 세션 ID를 쉽게 추측할 수 있기 때문에 다른 사용자로 하여금 접근이 가능해질 수 있습니다.

① Low

(사진 1) 쿠키생성 페이지

(사진 1) 을 보시면 Generate를 클릭 시 dvwaSession이라는 쿠키를 생성할 수 있는 페이지가 있습니다. 해당 실습을 진행하기 앞서 웹 프록시도구를 미리 준비해두셔야 합니다.

 

(사진 2) burp 의 intruder 기능사용

쿠키 생성 시 웹프록시 도구로 잡은 모습입니다. Cookie 값이 새로 생긴 모습을 확인할 수 있습니다. dvwaSession=20009라는 값이 보입니다. 안전한 보안유지를 하기 위해서는 유추하거나 패턴 있는 값을 사용하면 안 됩니다. 한 번 더 쿠키값을 재발행해보도록 하겠습니다.

(사진 3) 재발행

(사진 3)을 보시는 것처럼 Generate 즉 쿠키 생성할 때마다 값이 1씩 증가하는 것을 확인할 수가 있습니다. 이럴경우 공격자는 이전에 어떤 쿠키가 생성되고 그후에는 어떤 쿠키값이 생성될지 예측을 할수 있게 됩니다. 즉 로그인 중인 사용자의 세션을 훔치고 정상적인 사용자로 사칭하여 정보를 훔치거나 악의적인 작업을 수행할 수 있습니다.

 

(사진 4) Low 소스코드

'last_session_id'=0부터 시작하며 'last_session_id' ++; 로 그다음의 값은 단순히 이전 세션 id에 코드를 추가한다는 것을 쉽게 확인할 수가 있습니다.


② Mideum 

(사진 5) 쿠키값 발행

(사진 5) 이전 단계와는 사뭇 다르게 긴 값을 발행해주는 것을 확인할 수가 있습니다. 그래도 패턴이 있는지 확인하기 위해 여러 값을 다시 재발행해보도록 하겠습니다.

(사진 6) 재발행(2)

(사진 6) 특정한 패턴을 쉽게 추측할 수 없습니다. 뒷자리 값이 때론 올라가기도 하며 내려가기도 합니다. 이럴 경우에는 소스코드를 확인해보면 해답이 보입니다.

(사진 7) Mideum 소스코드

(사진 7) 얼핏 확인해 봤을 땐 일정한 규칙이 존재하지 않는 것 같아 안전해 보이지만 실제로는 158462 까지는 절대적인 값을 사용하고 그 뒷자리부터는 쿠키값을 생성한 시간(초) 를 기반으로 값을 지정해준다는 것을 확인할 수가 있습니다.

 


③ High

(사진 8) 쿠키값 발행

High 레벨에서는 전 단계 들과는 다르게 긴 값을 발행받습니다. 시간(초) 단위의 값도 아니며 이의 순서 규칙으로 나열하기에도 숫자와 문자가 섞여 있기 때문에 복잡해 보입니다. 일단 재발행을 받아보고 소스코드를 확인해봐야겠습니다.

(사진 9) 쿠키값 재발행

(사진 9) High 레벨에서는 절대값의 영역이 존재하지 않고 모든 값이 랜덤 하게 바뀌는 것 같아 보입니다. 소스코드를 확인해보도록 하겠습니다.

(사진 10) High 소스코드

(사진 10) 소스코드를 확인해본 결과 $cookie_value = md5라는 부분을 확인할 수가 있습니다. 즉 위에 서 발급받은 임의 값들은 " md5 "라는 암호화 알고리즘을 거 친상태였습니다. 하지만 md5 정도는 쉽게 깨트릴 수가 있기에 안전하다고 볼 수는 없습니다.

eccbc87 e4 b 5 ce2 fe28308 fd9 f2 a 7 baf3 --> 3
a 87 ff679 a 2 f3 e71 d9181 a 67 b7542122 c --> 4
e4 da3 b7 fbbce2345 d7772 b0674 a 318 d5 --> 5

부여받은 쿠키값을 해독해본 결과 3 -> 4 -> 5 순 즉 Low 단계처럼 1 값씩 증가하는 낮은 수준의 보안을 유지하고 있습니다.

findmyhash MD5 -h copy_hash_value

◆ 대응방안

(사진 11) Impossible 소스코드

추측하기 어려운 안전한 쿠키값을 생성하기 위해서는 " 무작위 " 로 즉 랜덤 하게 쿠키를 생성하는 것입니다. impossible소스코드를 확인해보시면 md5 보다 강력한 " sha1 " 암호화 알고리즘을 사용하여 mt_rand()라는 함수를 통해 추측이 불가능하게 무작위로 쿠키값을 생성하고 있는 것을 알 수 있습니다.

'IT Security > DVWA(Damn Vulnerable Web App)' 카테고리의 다른 글

[DVWA] CSP bypass  (0) 2020.05.13
[DVWA] XSS(Cross Site Scripting)  (0) 2020.05.12
[DVWA] SQL injection  (0) 2020.05.10
[DVWA] insecure CAPTCHA  (0) 2020.04.23
[DVWA] File Upload Vulnerability  (0) 2020.04.21