id: qw / pw: qw 로 회원가입 후 로그인을 해보았다.
(자연스레 qw_admin 관리자 계정이 생성이 된다.)
마이페이지, 게시판, 로그아웃 기능이 구현 되어있다.
마이페이지로 들어가보자. CSRF문제이고, 관리자의 비밀번호를 변경해야하기때문에
비밀번호 변경이 되는지 먼저 확인 해보아야 한다.
버프스위트로 잡아놓고, 패스워드를 pw 로 변경 해보자.
- POST 메서드를 사용
- 파라미터는 id, info, pw 사용
- 요청메시지의 "인증 정보" 없이 비밀번호 변경 가능 확인.
GET Method 요청 가능 여부 확인
버프스위프트에서 요청메시지를 잡고, 우클릭 - Chage request method 클릭
Get method로 요청을 해도 비밀번호가 변경이 된다.
자,
요청메시지의 "인증 정보" 없고, Get 메서드로 요청 해도 비밀번호가 변경 된다?
그러면 비밀번호를 변경 할 수 있는 URL을 만들어서 사용자들이 클릭만 할 수 있게 만들면,
사용자(피해자)는 클릭 하는 행위 만으로도 공격자가 원하는 비밀번호로 변경을 할 수 있다.
공격 URL :
http://ctf.segfaulthub.com:7575/csrf_1/mypage_update.php?id=&info=&pw=1234
비밀번호를 1234 로 변경하는 GET요청 URL 이다.
여기서 간과한 것이 있다.
해당 URL을 클릭하면 리턴메시지로 alert('회원 정보 수정에 성공하셨습니다!') 이 돌아온다.
이러면 피해자들도 단번에 공격 인것을 감지 할 것 이다.
게시글을 들어가서 해당 URL을 클릭하는 것만으로는 속이기 어렵다.
그러면, 게시글을 클릭하여 들어가는 것만 으로도 비밀번호가 돌아오고, 리턴도 안받는 방법을 찾아야 한다.
img 태그 이용
HTML의 img 태그는 웹 페이지에 이미지를 삽입하는 데 사용된다.
img 태그 중에 src 속성은 source 의 줄임말로, 이미지가 어느 경로에 있는지 기입한다. ( 이미지 파일의 경로를 지정)
<img src="경로/image.jpg">
위 와 같이 사용하면, 이미지가 있는 경로로 이미지를 찾아가게된다. (요청)
이런 특징을 이용해서 공격을 해보자.
XSS 취약점 찾기
img 태그를 사용하기 위해서는 < > 꺽쇠가 게시글 제목이나 본문에서 사용이 가능해야한다.
XSS 보안 솔루션으로 HTML Entity 가 적용이 되어있는지 확인해보자.
< " ' > 로 XSS 테스트를 해보자.
게시글 만들기 - 버트스위트에서 메시지 잡기 - 생성한 게시글 들어가보자.
리턴메시지로 필터링이 되지 않고, 그대로 표현 된다.
게시글에는 제목. 본문 부분에는 XSS 취약점이 존재한다.
이제 <img src=""> 태그를 사용 할 수 있다.
CSRF + XSS 연계
<img src="http://ctf.segfaulthub.com:7575/csrf_1/mypage_update.php?id=&info=&pw=1234" alt="메롱">
글쓰기 완료!
나의 계정으로 테스트 해보자.
현재까지 나의 계정 비밀번호는 qw / qw 이다.
클릭해보자.
게시글 들어가보면, 위와같은 결과만 나오고, 아무런 액션이 없다.
하지만, GET메서드로 비밀번호가 1234 로 변경 되었을 것이다.
버프스위프트 리피터기능을 이용해서 아이디 qw / 비밀번호 qw 를 보내서 리스폰스를 확인 해보았다.
등록 되지 않은 사용자라는 응답메시지를 받았다.
아이디 : qw
비밀번호 : 1234
로그인 결과, 정상 로그인이 되는 것을 확인 가능하다.
관리자 계정 비밀번호 탈취
공격코드가 삽입되어있는 게시글읠 URL
http://ctf.segfaulthub.com:7575/csrf_1/notice_read.php?id=701&view=1
플래그 획득 성공!
'웹 해킹' 카테고리의 다른 글
CSRF 3번 문제(GET Amin 3) (0) | 2024.07.25 |
---|---|
CSRF 2번 문제(GET Amin 2) (0) | 2024.07.25 |
(Normaltic 스터디 6기) 3주차 과제 로그인 로직 4가지 케이스 (식별/인증/해싱) (0) | 2024.05.08 |
2주차 과제: 회원가입 페이지 만들기 (0) | 2024.05.01 |
(Normaltic 스터디 6기)1주차 과제 - 간단 로그인 페이지 만들기( HTML, CSS, JS, PHP) (0) | 2024.04.23 |