티스토리 뷰

웹 해킹/웹 공부

php SESSION에 대하여, 취약점

삼전동해커 2020. 9. 15. 13:11

출처 : http://tcpschool.com/php/php_cookieSession_session


세션에 대하여

세션이란?
세션이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법.
사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라 한다.

쿠키는 사용자의 정보를 사용자의 컴퓨터에 저장하지만 
세션은 서비스 제공 서버에 저장하고, 세션의 키값만을 사용자에게 건내준다.


세션 시작

session_start()함수를 사용해 세션연결을 새로 시작하거나 기존의 세션을 다시 시작할 수 있다.

이 함수가 세션 아이디가 존재하는지 확인하고, 존재하지 않으면 새로운 아이디를 만든다.

세션 아이디는 세션이 유지되는 동안 사용자의 컴퓨터에 저장되고, 세션 변수를 등록하는 키로 사용된다.

세션의 지속시간은 php,ini에 설정되어 있다.



세션 변수 등록(PHPSESSID)

세션이 생성된 후 세션 변수를 $_SESSION 배열에 등록할 수 있다.

이때 세션 변수의 이름이 키값이다.


ex)

$_SESSION['city']="seoul";

$_SESSION['gu']="songpa";


city 세션 변수의 값은 seoul이고, gu 세션 변수의 값은 songpa이다.


세션 변수 해지

웹 사이트에 로그인되어 있는 상태에서 로그아웃이 필요할 땐 세션 연결을 끊어야한다.
그럴땐 세션 변수 연결을 해지해야한다. 이때 자동으로 세션 변수를 serialize한 데이터를 파일 시스템에 저장한다.

경로는 
우분투는 /var/lib/php5
redhat,centos는 /var/lib/phpsession
에 저장된다.


ex)

session_unset();  //모든 세션 변수의 등록 해지
session_destroy();  //세션 아이디 삭제


취약점

악의적인 사용자는 웹 사이트 쿠키에서 PHPSESSID를 알 수 있기 때문에 서버에서 공격 대상의 디렉토리를 예상할 수 있다.


위와 같이 PHPSESSID가 name인 세션에 get방식으로 세션 값을 생성하는 방식에서

/session.php?name=<?php system('id');?> 
이렇게 작성할 경우 서버에 serialize되어 들어갈 때 취약점이 발생한다.
그럼 세션이 연결될 때 system('id')가 실행된다.



'웹 해킹 > 웹 공부' 카테고리의 다른 글

http redirect  (0) 2020.09.21
Brute Force 공격  (0) 2020.09.17
Directory Traversal 공격  (0) 2020.09.09
[PHP] mysql_fetch_array,row  (1) 2020.08.04
[php] $_SERVER함수  (0) 2020.07.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함