인프런 커뮤니티 질문&답변

고광우님의 프로필 이미지
고광우

작성한 질문수

모의해킹 실무자가 알려주는, XSS 공격 기법

섹션 4. 공격상세방법론 - [미션] 게시판 취약점 찾기 풀이 검토 및 개인적인 질문

해결된 질문

작성

·

505

1

안녕하세요. 크리핵 티브님 미션으로 주셨던 강의 내용 풀이 시도한 내용과 개인적인 질문 내용 드리겠습니다.

 

미션1) board/index.php에서 XSS 취약점을 최대한 많이 찾아보는 미션

-> 맨 처음에는 black-box test 방식으로 시도했으나 도무지 방법을 찾지 못해서 php 코드를 보고 풀이를 했습니다.

미션풀이 이미지-1.png-> 붉은 상자로 표시한 부분에 value 값에 XSS 구문을 넣으면 XSS가 가능할 것으로 판단 했습니다.

미션풀이 이미지-2.png-> 그래서 URL에 vlaue=<script>alert('XSS');</script> 구문을 넣어서 XSS가 잘 동작함을 확인했습니다.

-> DOM을 통해 client 단에서 동작하는 것이 아니기 때문에 Reflected-XSS로 판단합니다.

[검증]

미션풀이 이미지-3.png

-> burp suite로 XSS를 동작시킬 때 Response부분을 잡아본 것인데 Response에 alert('XSS')가 들어감을 확인할 수 있습니다.

 

[질문1]

위에서 Refelected XSS외에 다른 XSS 취약점을 찾지 못했는데 다른 XSS 취약점도 있는지 궁금합니다.

그리고 제가 아직 모든 강의를 끝까지 들은건 아닌데 혹시 추후 강의 들에서 풀이가 있는지도 궁금합니다.

 

미션2) xss/eample5.php에서 어떤 XSS가 가능한지, DOM인지 Relfected 인지 한 번 찾아보는 미션

-> 이 역시도 black-box test방식으로 시도했으나 결국 성공하지 못해 php코드를 확인하고 XSS를 시도하였습니다.

미션풀이 이미지-4.png-> permissionCheck() 함수를 이용해서 XSS 공격을 시도해 봤습니다.

미션풀이 이미지-5.png-> URL에 ");로 if문을 닫아 버린 다음에 <script>태그를 이용했으나 필터링 코드에 의해 막혔습니다.

-> 그래서 필터링 코드를 우회하기 위해 XSS cheat sheet를 이용했습니다.

미션풀이 이미지-6.png-> 위의 이미지외에 여러 cheat sheet에 있는 코드를 시도했으나 모두 실패했습니다.

-> php코드를 보면 DOM XSS와 Relfected XSS모두 가능할 것 같지만 잘 모르겠습니다.

 

[질문 2]

해당 필터링 구문을 우회하려면 어떻게 하는지 궁금합니다.

 

[질문3-개인적인 질문]

현업에서는 black box test방식으로 모의해킹을 진행하게 되면 back-end단에서 돌아가는 코드(ex. php, jsp, asp, Node.js 등)구조를 알 수가 없는데 그러면 그냥 guessing을통해서만 XSS취약점을 점검해야 하는지 궁금합니다.

(전제 조건이 file download/upload취약점을 사용하지 않고 XSS를 점검하는 경우를 질문드리는 겁니다.)

 

감사합니다.

답변 1

1

크리핵티브님의 프로필 이미지
크리핵티브
지식공유자

미션1) Reflected XSS가 맞습니다. 다만, PHP 코드를 참고한게 아쉽긴하네요.

질문1) 제가 해당 환경을 제작한지가 오래되어 어디 포인트에서 XSS 발생하는지 기억이 잘 나질 않네요; 질문자님께서 최대한 많이 찾아보세요. 그리고 미션에 대한 풀이는 없습니다. 이건 나중에 풀이를 추가하는 방향으로 해보겠습니다.

미션2) 사실 이부분은 PHP 코드를 보는거와 버프 상의 응답 메시지 보는거와 크게 차이가 없습니다.

?id=test 요청 시 응답은 아래와 같습니다.

...

if("" == "test") {

...

이를 통해 응답 값 내 사용자 입력 값이 포함된 것을 알 수 있습니다. 이를 통해 Reflected xss 시도가 가능하겠죠.

질문2) 이부분은 제가 교육생들에게도 항상 정답을 제공하진 않습니다. 이유는 교육생들이 풀이로 얻을 수 있는 깨달음의 기회를 뺏을 수 있기 때문입니다.

힌트를 들이면 사용자 입력 값이 어짜피 <script>~ </script> 태그 내에 위치하니 굳이 <script> 태그 사용이 필요하지 않습니다. 즉, 적는대로 js 조작이 가능하다는 이야기입니다. 생각보다 간단한 부분이니 꼭 해결하시길 바랄게요!

질문3) XSS는 서버 측의 코드 의존도가 높지 않습니다. 미션 1과 같이 제가 드린 말씀이 응답 값을 보고도 할 수 있는 부분이라고 했습니다. 이처럼 요청에 따른 응답 분석하는 능력을 키우면 이부분은 해결이 쉽습니다.

질문 하신것들을 보면 어느정도 이해를 하고 계신 느낌이 듭니다. 클라이언트 측, 서버 측 언어와 버프를 통한 분석들을 조금 키우시면 실력이 훨씬 높아질꺼라 생각됩니다. 화이팅 하세요!

고광우님의 프로필 이미지
고광우
질문자

답변 주셔서 감사합니다.
미션2)에서 아직 미해결 된 부분 제가 한 번 노력해서 해결해 보도록 하겠습니다.

 

2023년 4월 21일 09시 15분 기점으로 공격에 성공했습니다.
(정답이 될 수 있는 코드는 가려 놨습니다. 크리핵티브님이 주신 힌트를 통해 풀 수 있었습니다.)

image

감사합니다.

 

고광우님의 프로필 이미지
고광우

작성한 질문수

질문하기