❓ 공격 개요
Weak Session IDs 공격개요
> 사용자의 접근을 효율적으로 관리하기 위해 애플리케이션을 각 사용자들에게 세션을 만들어 주거나 사용자에게 세션을 확인하게 하는 토큰을 발행한다 세션 자체는 서버에 할당돼 있는 데이터 집합의 구조이며, 애플리케이션과 사용자 간의 상호작용을 도와주는데 사용된다 하지만 다음과 같은 상황에서 민감한 데이터의 노출이 발생할 수 있다.
1. HTTP 프로토콜을 사용하여 민감한 데이터가 전송되는 경우
2. 민감한 데이터가 평문으로 저장되는 경우
3. 안전하지 않은 암호화 방식을 사용하는 경우
이러한 경우 공격자는 데이터를 쉽게 유추할 수 있어 다른 사용자인 것처럼 접근이 가능하게 된다
💻 실습

Weak Session IDs 의 메인화면이다
Generate 버튼을 눌러 새로운 dvwaSession 쿠키를 발행할 수 있다고 한다
한번 발행해보자

위와 같이 dvwaSession 쿠키가 발행되었다
어떤 형식으로 발행되는지 확인하기위해
Burpsuite 로 패킷을 잡아 여러번 발행해 보자

1 > 2 > 3 형식으로 1씩 더해지며 발행 되는걸 알 수 있다
쿠키값에 임의성이 없으며 값을 쉽게 예측할 수 있다.
이는 곧 중간자 공격 백터로 이어 질 수 있다.
Burpsuite 의 Sequencer 기능을 이용해
임의성 테스트를 진행해보자

마지막으로 쿠키를 발행했던 페이지를 Sequencer 로 보내준후

Start live capture 을 누르면 검사가 실행된다.
이제 검사해보자

결과는 임의성이 전혀 없다고 나온다
매우 취약한 상태임을 알 수 있다.
🔍 대응방안
1. 쿠키값 암호화 / 해싱 / 솔팅
> 암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 알고리즘을 이용해 정보를 전달(관리)하는 과정을 의미한다.
> 해싱은 어떠한 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것이다
민감한 정보를 그대로 노출시키지 않고, 한눈에 알아볼 수 없는 문자열로 변환하여 주고받을 때 사용한다.
🔐 해시값을 만들 때 조건
1. 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다.
2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
3. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.
> 솔팅은 솔트란 해시함수를 돌리기 전에 원문에 임의의 문자열을 덧붙이는 것이다
원본 값에 임의로 약속된 추가 문자열을 추가하여 해시를 진행하여 기존 해시값과 전혀 다른 해시 값이 반환되어 알고리즘이 노출되더라도 원본 값을 보호할 수 있도록 하는 안전장치이다.
🔐 솔트 사용 주의점
1. salt는 유저와 패스워드 별로 유일한 값을 가져야 한다.
2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때마다 새로운 임의의 salt를 사용해서 해싱해야 한다.
3. salt는 절대 재사용하지 말아야 한다.
4. salt는 db의 유저 테이블에 같이 저장되어야 한다.

impossible 의 코드를 확인해보면 mt_rand() 함수와 time() 함수를 사용해 무작위로 랜덤값을 생성한후 md5 보다 강력한 sha1 알고리즘을 사용하여 암호화 하고있다.
'Web Hacking > DVWA' 카테고리의 다른 글
[DVWA] - XSS( Reflected) (0) | 2022.11.19 |
---|---|
[DVWA] - XSS(DOM) (0) | 2022.11.18 |
[DVWA] - Blind SQL Injection (0) | 2022.11.13 |
[DVWA] - SQL Injection (0) | 2022.11.12 |
[DVWA] - Insecure CAPTCHA (0) | 2022.11.09 |
❓ 공격 개요
Weak Session IDs 공격개요
> 사용자의 접근을 효율적으로 관리하기 위해 애플리케이션을 각 사용자들에게 세션을 만들어 주거나 사용자에게 세션을 확인하게 하는 토큰을 발행한다 세션 자체는 서버에 할당돼 있는 데이터 집합의 구조이며, 애플리케이션과 사용자 간의 상호작용을 도와주는데 사용된다 하지만 다음과 같은 상황에서 민감한 데이터의 노출이 발생할 수 있다.
1. HTTP 프로토콜을 사용하여 민감한 데이터가 전송되는 경우
2. 민감한 데이터가 평문으로 저장되는 경우
3. 안전하지 않은 암호화 방식을 사용하는 경우
이러한 경우 공격자는 데이터를 쉽게 유추할 수 있어 다른 사용자인 것처럼 접근이 가능하게 된다
💻 실습

Weak Session IDs 의 메인화면이다
Generate 버튼을 눌러 새로운 dvwaSession 쿠키를 발행할 수 있다고 한다
한번 발행해보자

위와 같이 dvwaSession 쿠키가 발행되었다
어떤 형식으로 발행되는지 확인하기위해
Burpsuite 로 패킷을 잡아 여러번 발행해 보자

1 > 2 > 3 형식으로 1씩 더해지며 발행 되는걸 알 수 있다
쿠키값에 임의성이 없으며 값을 쉽게 예측할 수 있다.
이는 곧 중간자 공격 백터로 이어 질 수 있다.
Burpsuite 의 Sequencer 기능을 이용해
임의성 테스트를 진행해보자

마지막으로 쿠키를 발행했던 페이지를 Sequencer 로 보내준후

Start live capture 을 누르면 검사가 실행된다.
이제 검사해보자

결과는 임의성이 전혀 없다고 나온다
매우 취약한 상태임을 알 수 있다.
🔍 대응방안
1. 쿠키값 암호화 / 해싱 / 솔팅
> 암호화는 일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 알고리즘을 이용해 정보를 전달(관리)하는 과정을 의미한다.
> 해싱은 어떠한 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것이다
민감한 정보를 그대로 노출시키지 않고, 한눈에 알아볼 수 없는 문자열로 변환하여 주고받을 때 사용한다.
🔐 해시값을 만들 때 조건
1. 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다.
2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
3. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.
> 솔팅은 솔트란 해시함수를 돌리기 전에 원문에 임의의 문자열을 덧붙이는 것이다
원본 값에 임의로 약속된 추가 문자열을 추가하여 해시를 진행하여 기존 해시값과 전혀 다른 해시 값이 반환되어 알고리즘이 노출되더라도 원본 값을 보호할 수 있도록 하는 안전장치이다.
🔐 솔트 사용 주의점
1. salt는 유저와 패스워드 별로 유일한 값을 가져야 한다.
2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때마다 새로운 임의의 salt를 사용해서 해싱해야 한다.
3. salt는 절대 재사용하지 말아야 한다.
4. salt는 db의 유저 테이블에 같이 저장되어야 한다.

impossible 의 코드를 확인해보면 mt_rand() 함수와 time() 함수를 사용해 무작위로 랜덤값을 생성한후 md5 보다 강력한 sha1 알고리즘을 사용하여 암호화 하고있다.
'Web Hacking > DVWA' 카테고리의 다른 글
[DVWA] - XSS( Reflected) (0) | 2022.11.19 |
---|---|
[DVWA] - XSS(DOM) (0) | 2022.11.18 |
[DVWA] - Blind SQL Injection (0) | 2022.11.13 |
[DVWA] - SQL Injection (0) | 2022.11.12 |
[DVWA] - Insecure CAPTCHA (0) | 2022.11.09 |