For the complete documentation index, see llms.txt. This page is also available as Markdown.

두번째, 세션을 유지하는 방법

먼저 session을 유지하는 방법을 알아보기 위해서는 해당 페이지의 통신 과정과 통신으로 인한

데이터가 어떻게 유지 되는지 알아야 한다.

우선 Whireshark로 통신을 보면 아래 이미지와 같다.

/login.php로 접근을 하여 로그인이 성공이 되면 post /login.php로 통신이 이루어 지는데

get /index.php로 자동으로 넘어가면서 메인 페이지인 /vulnerabilities/brute로 넘어가는데

이때 통신은 get으로 바뀐다.

간단하게 말하면 POST /login.php -> /index.php -> GET /vulnerabilities/brute의 순서인 것이다.

Burp Suite로, login을 성공하고나서 /vulnerabilities/brute페이지에서

로그인을 성공하는 경우의 정상적인 통신을 캡쳐해보자

그럼 아래 이미지와 같이 목록을 확인 할 수 있는데

우선 URL을 보면 /login.php로 시작하여 /index.php -> /vulnerabilities/brute/ -> /vulnerabilities/brute/?username=admin&password=password&Login=Login 순서대로 통신이 진행되고 있는 것을 확인 할 수 있다.

그럼 Request는 어떻게 통신이 진행되고 있을까?

아래 이미지를 보자

기본적으로 메인 로그인 후, cookie 값과 security, Upgrade-Insecure-Requestes가 동일하게 유지 되고

초록색 형광팬으로 칠해진듯한 값들이 변형을 할 수 있는 데이터 값들인데

값을 보면 PHPSESSID, security, username, password, login, user_token으로 분류 된다.

/vulnerabilities/brute/?username=admin&password=password&Login=Login를

성공하는 정상적인 로그인 성공 통신 과정은 아래와 같다.

로그인을 하고 나서 "cookie 값과 security, Upgrade-Insecure-Requestes가 동일하게 유지를 하고 있는 상태"에서 headers와 payload의 값을 추가해줘야 session이 유지되기 때문에 정상적인 통신이 가능하다. 통신에서 보면 아래 이미지처럼 여러 값이 보이는데

이렇게

payload: username, password, login

cookies: PHPSESSID, security

header: Upgrade-Insecure-Requests, Accept, Referer, Accept-Encoding, Accept-Language, Connection

payload, cookies, header로 분류를 한 상태에서 통신을 시도해야 세션값이 유지가 된다.

그럼, 아래 이미지와 같이 test5.py 파일을 실행하면

Length가 4704로 통신이 OK 된 것을 확인 할 수 있으며

OK 통신이 떨어진 패킷에서 Response를 보면 'Welcome' 문구를 확인 할 수 있는데

이 'Welcome' 문구는 아래 이미지와 같이 로그인이 성공 했을 때에 화면이란 것을 확인 할 수 있다.

해당 Whireshark 통신은 아래와 같다.

아래는 소스 코드 이다.

---

메인 로그인을 끝낸 뒤 /vulnerabilities/brute 엔드포인트를 향해 무작위 대입 브루트포스 공격을 하는 코드는 다음의 리포에서 찾을 수 있다.

해당 코드를 실행시키면 다음과 같은 결과가 나온다.

Last updated