본문 바로가기
워게임/bWAPP(bee-box)

HTML Injection(인젝션) - Reflected(반사) POST

by B T Y 2019. 7. 15.
반응형

반사(Reflected) - POST HTML Injection(인젝션) - Reflected(반사) POST

 

반사(Reflected) - POST

 

 

 


Level - low


POST method를 사용해서 데이터를 전송할 때는 서버로 전송하는 변수 값이 HTTP 프로토콜 header에 포함 되는 것이 아닌 body를 통해서 보내기 때문에 URL에 노출 되지 않는다. BurpSuite를 이용해서 웹 브라우저에서 요청하는 데이터를 가로채서 확인해보면 firstname과 lastname이라는 변수에 데이터가 전송되는걸 볼 수 있다. BurpSuite로 가로챈 패킷에서 firstname과 lastname 변수에 값을 html 태그를 이용해서 수정한 다음 패킷을 보내주면 웹서버에서 요청을 받아 응답을 보내주게 되고 웹브라우저에서 그 응답을 보여줄때 html 태그가 실행된 결과가 나온다.

 


Level - medium


BurpSuite를 이용해서 패킷을 잡아 html 태그를 포함한 데이터로 변조해 보낸 다음 웹 브라우저에 출력되는 결과를 보면 html 태그가 실행 되지 않고 문자열 그자체로 출력이 되는걸 볼 수 있다. 이런 경우에는 html 태그에 사용되는 <, > 같은 기호가 서버단에서 필터링 되고 있을 확률이 높다. 그래서 해당 문자를 퍼센트 인코딩을 통해서 보내는 방식으로 결과를 확인해 봤는데 마찬가지로 처음 방법과 결과가 동일했다. 두 방식의 결과에 대한 차이가 없기 때문에 여러가지 방식을 고려해서 예상해볼 필요가 있다. 그래서 우선적으로 서버단에서 해당 데이터에 대해서 여러번 디코딩 하는 경우를 가정해서 인코딩 문자를 표현 할 때 앞쪽에 %도 디코딩 된다고 고려해줘서 %253C('<'에 대한 더블 디코딩을 고려한 표현 방식)과 같은 방식으로 표현해서 다시 한번 데이터를 보내준 결과 html 태그가 실행되는 원하는 결과를 얻을 수 있었다. 여기서도 앞쪽 GET 방식의 medium 난이도와 마찬가지로 서버단에서 더블 디코딩을 해서 html 태그 실행에 대한 필터링을 하고 있다.



* VMWare(bee-box)에 웹브라우저에서 보내는 POST 요청을 프록시를 이용해서 데스크탑(Window10)에 있는 BurpSuite를 이용해서 패킷을 잡아보려 했으나 아직 해결하지 못했다.. 우선은 데스크탑(Window10)에서 웹브라우저를 통해 VMWare에 켜져있는 웹 서버에 접속해서 bee-box를 실행해서 진행해야 될 것 같다.



Level - high


BurpSuite를 이용해서 firstname과 lastname 변수의 값을 html 태그를 포함한 값으로 변조 시켜서 보내보면 html 태그가 실행 되지 않고 문자 그대로 표현 되는것을 볼 수 있다.

 

 

반응형

댓글