WEBHACKING/Beebox

injection 정리-1

+) 그냥 듣고 전부 메모한 수준이라 상당히 조잡하다. 시간 나면 정리 요망.

video-1. 왜 비박스인가?

 

beebox를 활용한 웹 애플리케이션 취약점 진단

->웹을 진단하는 사례들이 굉장히 많다.

-웹이 발전되면서 많은 기능들이 추가가 되었고, 이러한 기능에서 많은 취약점들이 발생하고 있다. : 공격하는 사례들이 많이 늘어나고 있다.

정보보안의 기초: 웹을 먼저 공부-> 웹이 접근이 상대적으로 용이하고, 소스가 보여서 무슨 문제가 발생하고, 취약점을 어떻게 보는지 확인이 가능하다.

 

beebox: 일종의 웹 서버, 공격자의 입장이 되어서 웹 서버를 공략하는 과정이다.

비박스, 웹해킹.kr등등 웹 취약점 진단을 위한 환경들이 많이 있다.

 

beebox를 사용하는 이유-> 오픈소스. 설치가 쉬움, 간단하게 5-10분정도 걸리는 과정을 통해 설치가 가능하다, 어떻게 안전한 코드를 짤것인가?를 확인할 수 있다. 다양한 취약점이 존재한다. 웹서버에서 발생할 수 있는 취약점들을 다루고 있다.

->ubuntu를 기반으로 만들어졌음. 아이디:bee 패스워드: bug

취약점은 OWASP top10기준으로 만들어져 있다.

 

점검도구: burpsuite, sqlmap, metasploit..

burpsuite:프록시 도구, 공격자의 입장에서 서버를 확인하는 용도. http를 주고받는 사이에서 잠깐 멈춰서 확인이 가능하다. burpsuite와 함께 보면 강의를 이해가능.

sqlmap: sql injection-> 여기서 말했던 취약점들과 자동화 도구 등이 필요하다.

많은 것들을 자동화 할 수 있어서 사용하고 있다.

user agent switcher-> 많은 운영체제가 다양한 곳에서 처리를 해야 하는데 여기에 맞게끔 데이터를 보내주기 위해서 user agent라는 것을 확인하게 된다.

 

 

video2- 환경 구성

 

beebox & kali linux를 설치한다.

id&password를 사용한다

id: root -password: toor//최고관리자

리눅스에 있는 모든 파일에 대한 절대적인 권한을 가지고 있다.

칼리리눅스를 vmware에 설치해보았다.

+키보드 설정, nat 네트워크 설정.

리눅스 환경- cd 명령어를 사용한다.

 

video 3- 인젝션

인젝션: 주사하다

html injection: 취약한 매개변수에 악의적인 html 코드를 삽입하는 공격, html 태그로 악의적인 사이트에 연결하거나 악성파일을 다운로드 하도록 유도한다.

html: 다른 환경: 윈도우에 설치하는 것

<html 의 구성>

open terminal-> gedit : test,html이라는 파일을 생성한다.

cd desktop-> gedit test.html

<html>

<head>

<title> test title </title>

<body>

<hl> hello world </hl>

</body>

</head>

</html>

 

 

클라이언트와 서버가 통신할 때 각기 사용하는 용어가 다름: 클라이언트(html, javascript 사용한다.)-> 사이트의 자바스크립트 코드에 삽입해서 실행하면 시스템에 영향을 미치도록 할 수도 있다 & 서버: php, asp..의 언어를 사용한다. html을 이용하여 자바스크립트를 바꾸어 볼 수 있다.

 

스크립트를 집어넣을 때 <h1>H1</h1>. <h2>,H2<h2>-> 태그가 해석되면서 내용이 보이게 된다.

reflected: 클라이언트가 자신에게 영향을 받음: 클라이언트가 영향을 받으므로 반사가 된다고 한다.->요청 : http가 일종의 형식을 갖추게 된다.

여기서 http는 헤더가 존재하고, 바디가 존재한다-> url의 정보 또한 들어가게 된다.

URL: 호스트 정보나, user agent 정보...

burpsuite를 이용해서 바디와 헤더를 확인해볼수 있다.

1) 프록시를 설정해줘야 한다.-> preference->advanced->network->나 자신에게 프록시를 걸고, 8080포트로 실행하겠다고 하는 것이다.

2) intercept only라고 되어 있다-> burpsuite를 이용해서 무엇인가 잡을 수 있다.

특수문자 몇 개가 바뀌어서 들어가게 된다.

 

->경고창을 띄우는 스크립트를 집어넣어 본다.

처음에 url에 앞에는 신뢰성있는 사이트 이름을 집어넣고, 뒤쪽에 내용을 추가한다면 쿠키를 탈취하거나, 악의적으로 이용될 수도 있다.->http 헤더 쪽에서 발생하였다.

 

이미지 또한 가져올 수가 있다: 이미지를 넣기 위해서는 이미지 태그를 사용해야 한다.

소스를 가져온다(자신의 ip주소)/images/bee_1_png/

<script>alert(document,cookie)</script>,a-> 쿠키값을 출력해 줄수가 있다.

경고장을 띄워주는 함수가 존재한다.

->공격자에게 넘어가게 되면 문제가 생긴다. 아이디 없이 쿠키와 패스워드만으로도 공격이 가능하다.

보안 레벨 또한 설정할 수가 있다-> low로 했을 때 태그가 그냥 노출되는 일이 생긴다.

웹페이지 소스가 있는 곳: cd var/www/bWAPP/-> ls 해보면 알 수가 있다.

->apt-get install gedit: 자동으로 gedit을 설치할 수가 있다. htmli_get.php

gedit을 사용해서 html 소스를 확인할 수가 있다.

first name/last name을 전달하는 과정에서 intercept를 잡고 확이할 수가 있다.

0으로 세팅이 되어서 전달을 할 수가 있다.

low, medium, high등의 security level을 바꾸면서 각각 데이터를 체크하고 있다.

xss-> html과 매우 유사한 취약점이다.

둘중 하나밖에 실행이 안된다.

bg-> gedit functions_external.php

replace: 값을 치환한다. ex) 태그를 바꿔준다.->값을 인코딩해줌.

low를 세팅해준 다음에 각 스크립트에 경고창을 띄워준다.

필터링에 걸려서 더 이상 진행이 안된다.

1) 인코딩을 한번 한다. 2) 더블인코딩 된 상태이다-> 인위적으로 인코딩하면 두 번 인코딩된 상태이다.

->html encoder라는게 존재한다. 인코딩된 상태로 넘겨주면 두 번 인코딩된것이기 때문에 한번 디코딩으로는 안됨.

url에다 직접 출력이 되는 걸 확인할수 있었다.

xss_check-> 특수한 코드들로 인코딩을 시도하고, 각각 필터링을 해준다.

태그를 근본적으로 막고있기 때문에 태그를 인젝션할 수는 없다.

 

 

url에서 확인할 수가 있다.low, high

포스트 요청의 차이점이 무엇인가?: content-length

바디의 크기를 의미하는 것이기 때문이다.

htmli post.php->케이스별로 사용할 수가 있다.

게시물을 게시하는 형태로 취약점을 게시할 수가 있다.

html injection- reflected(post) 악의적인 html 태그가 데이터베이스에 저장된다.

저장된 태그 내용을 확인한 사용자의 pchtml 태그가 실행되는 공격이다.

희생자가 이것을 봄으로써 문제가 발생할 수가 있다.(악의적인 html 코드를 게시물에 등록한다):출력할 때는 태그를 필터링한다.

sec level 1& 2xss_check_3를 수행하라-> highlevel에서 수행하던 내용.

아무런 필터링 없이 출력을 해주는 것을 확인할 수가 있다.

 

video4: iframe injection

iframehtml 문서 안에서 또 다른 html 문서를 보여주는 태그로 다른 프레임과는 달리 어느 위치든 상관없이 사용할 수가 있다.

->html에 속해져 있어서 html과 굉장히 유사하지만 iframe을 빼놓는 이유가 있다.

한 줄에 소스를 추가함으로써 다른 대량의 파일을 불러올수 있기 때문에 상당히 위험하다.

화면에 안보이게 되어있다.-> paramwidht&height: 높이와 너비를 설정해주는 변수가 들어감.

사용자들도 아무 느낌이 없고, 소스를 관리하는 사람도 한줄이라 찾기가 힘들다.

iframe injection

->robots.txt라는 파일이 존재함: 봇들이 검색페이지를 만들기 위해서 다양한 검색수집을 한다. 허용할것인지, 허용해주지 않을 것인지 찾아볼수가 있다.

이것들을 서칭하는 것을 허용해주지 않고있는게 판단되었을 때에는, 웹사이트를 훑어보는 것을 원하지 않고 있다. disallow해주는 내용들을 찾아볼수 있었따.

iframeinjection해줄수가 있다.->새로운 내용을 집어넣을수도 있다.

htmli_get.php를 불러오도록 실행을 시켜주었다.

 

widthheight를 조절해줄수도 있다. gedit attack.html을 하나 생성한다.

alert(Document.cookie)를 확인해줄수가 있다.-> 내부에서는 script가 등장하고 있다.

코드가 악성인지 아닌지 확인해줄수도 있다: iframe이 영향력이 있다는 것을 확인해줄수가 있다.

데이터를 체크해줄수가 있다.

 

return addslashes($data)을 확인해줄수도 있다.

아까와는 다르게 페이지가 뜨지 않는 것을 확인할수도 있다.

injection된 흔적 또한 보이지 않는다.

iframei.php를 확인해서 두 개가 다른 것또한 알아볼수가 있다.

 

 

->OS command injection

시스템 명령어를 쿼리문에 주입하여 취약한 변수를 통해 서버 운영체제에 접근하는 공격

시스템에 한번 nslookup이라는 것을 통해서 돌릴수가 있다.

shell_exc는 위험한 도구이다.

nslookup www.nsa.gov | ls

를 사용하여 디렉토리를 살펴볼수가 있다.

창을 사용하여 ls라는 명령어를 입력해주면 그 안에 디렉토리의 내용을 살펴볼수가 있다.

ls ../../../../~~를 이용하여 상위폴더로도 올라갈수가 있다.

commandi_check_2번이다: command가 두 번 들어가지 않도록 해줄수도 있다.-> escape_shell_cmd-> metacharacter들을 변환시켜줄수도 있다.

 

 

->php code injection

테스트 페이지만이라고만 나와있다-> 메시지를 클릭해보면 test라는 메시지를 출력해준다.

message를 클릭하여 확인해볼수 있게끔 할수도 있다.

php쪽에서 처리를 하고있는 내용이다. gedit phpi.php에서 확인을 해본다.

eval이라는 코드를 확인해볼수가 있다.-> 내부에 있는 모든 코드를 php 코드가 처리하고 있는 것처럼 처리해줄수가 있다.

sudo gedit attack.php-> 안에 스크립트를 하나 짜줄수가 있다.

두 개가 같은 동작을 하고 있는지 확인을 해볼수도 있다.

php 코드를 사용자가 직접 입력할수 있는지를 확인해볼수도 있다.

system('cat etc/passwd/')등의 동작이 작동하는지 확인해볼수도 있다.

kali에 서버를 하나 열고, 비박스 서버를 통해서 접속할수 있도록 쉘을 열어줄 것이다.

: 기존에 사용하던 ~#의 내용.

nc -l -p 666 => listening 666 port를 열어라. 접속하라고 명령을 내려주어야 한다.

ifconfig: ip주소를 확인해줄수가 있다.

시스템을 실행하면서 쉘이 실행이 되었을 것이다.-> 쉘이 정상적으로 작동하는지 확인해주어야 한다.

/bin/bash

whoami www.data webservice에 관련된 내용또한 확인해볼수가 있다.

정보들을 다 빼내는 시나리오를 실행해볼수가 있다.

 

 

->SSI injection

서버 사이드에서 필요한 자료들을 얻을수 있다.

firstname/lastname이 뜬다.-> 172.16.154.175

gedit ssii.html-> 등으로 확인할 수가 있다.

sudo gedit ssii.php

여러 가지 취약점을 만들어볼수가 있다.

html 파일을 만들 때 주의해야 할점들을 확인해볼수 있다.

역시 보안레벨들을 바꿔가면서 변화되는 것을 확인해볼수도 있다.

firstnamelastname등을 받아서 확인해볼수도 있다.

 

 

5. sql injection

기본적인 sql 문법에 대해 이야기함,

mysql -h, mysql -u root -p :mysql의 유저 권한을 요청하고, 패스워드를 적을것임을 입력한다.

 

큰 데이터가 있고, 이 데이터들을 여러 가지 테이블에 넣을수가 있다.

이 테이블들을 수정, 삭제, 조회하는 기능을 지원해주고 있다.

대부분의 것에서 데이터베이스를 사용하고 있다.

sql에 사용되는 엑셀을 직접 만들고, 수정 삭제를 해볼수도 있다.

mysql에 접속한 이후로 show database-> 데이터베이스 목록을 찾아볼수 있다.

새로 데이터베이스를 만들 수 있음->새로만든 데이터베이스로 이동한다.

데이터베이스 안에 테이블을 만들 수 있고, 한줄단위로 데이터를 집어넣을수가 있다.

내용을 작성하고, show tables를 입력하면 table을 보여준다.

desc testtable1을 입력하면 테이블 안의 내용을 보여준다.-> 이 이후로 insert를 이용해 내용을 집어넣을수가 있다.

 

-select &where를 통해 데이터 조건을 검색하여 비교할수도 있다.

비교, 논리, 범위, 집합, 패턴등이 검색가능하다.

+) * = 모든 내용 출력

 

like-> 패턴을 확인해볼수 있음.

limit 1-> 레코드 한 개 출력, limit 0,2->레코드 0(첫번째)에서부터 2개를 출력.

 

select+union-> 여러 조회 결과를 결합하여 출력한다.-> 테이블의 결과를 합칠수가 있다.

select * fromt uniontb;->새로운 테이블 만듦

union-> 컬럼수가 일치하는 경우에만 표를 합칠수가 있다,

select * from testtable1 union select *from uniontb-> 컬럼수가 같아서 표를 합칠수가 있다.

 

select *from testtable1 where 1=2(no=8) union select * from uniontb;

앞에 거짓을 입력하고 뒤를 참을 입력하면 뒤의 값만 출력이 된다.

 

 

video6 - sql injection

sql injection-> 사용자가 입력한 값을 검증하지 않고 데이터베이스 쿼리 일부분으로 포함될 때 발생 취약점

 

공격을 수행하는 공격자-> 웹에 요청을 날리면, 특정 변수값을 통해 웹으로 전달을 한다.

웹에서 데이터베이스로 sql을 하게 된다.

데이터를 db에서 가져온 값으로 다시 사용자로 보낸다.

where -> 그 컬럼의 정보를 출력한다.

where no=3 또는 1=1(두가지 정보를 전달) 출력을 조절할수 있게 된다.

where no=0 union select 1,2,3,@@version;-> union select를 통해서도 출력을 조절할 수 있다.

 

information_schema를 조회하면 모든 데이터베이스의 정보를 얻을수가 있다->활용도 높다.

주석을 처리하는 것을 배워야 함-> //, /**/, # 한줄 주석 처리

select * from testtable1 where id= " " or 1=1 #;->따옴표 안에 갇히게 된다. 주석을 처리해야 끝이 난다.

 

union select (column 수 맞춰서) database(), @@version, @@datadir, user()..의 정보를 조회해줄수 있다.-> injection을 통해 데이터를 얻을수 있다.

 

information schema의 데이터베이스도 조회가 가능하다.

실제로 터미널에서 확인해봐도 테이블 네임이 동일한 것을 알수 있다.(concat=문자열 합침)

0' union select ALL 1,concat(id,login,password),3,4,concat(email,secret),6,7 from users#

디렉토리의 데이터 역시 가져올수가 있다.

sha1 decoder-> 해시값을 디코딩해서 비밀번호를 얻을수가 있다.

 

sql injection의 대응방안->

mysql_real_escape_string-> x00, \n, null 등의 취약한 문자들을 \를 붙여서 sql 문법으로 인식되지 않도록 방어한다.-> 입력된 데이터를 필터링하게 된다.

 

-sql injection select

클라이언트에서 웹으로 요청을 할 때 모두 출력이 가능하지 않다. limit을 사용해야 한다.

web에서는 한 개만 출력을 하게끔한다. limit 1,1-> 출력을 조절해야할 필요가 있다.

테이블 전체를 조회하려고 하면 맨 처음것밖에 출력이 불가능하다.

 

-sql injection high 대응방안

-> prepare statement의 장점: sql을 정형화하여 사용한다.

데이터베이스를 기반으로 sql을 날린다: 미리 그런 상황을 준비해놓는다.

 

location에 해당하는 곳으로 리다이렉션하게 된다.(난이도에 따라서)

case high/medium sqli_check_3으로 다이렉트된다.

-> 완벽한 방어는 아니다. sql injection을 막을수가 없다.

sqli_2-ps.php으로 리다이렉션하게 되면 다른 방어방법을 적용하게 된다.

 

-post/search: post 요청은 우리 눈에는 보이지 않는다: proxy 한번 잡아줘야 함.

 

 

video 7) sqlmap& metasploit

sql map= sqlinjection 결합을 이용해서 데이터베이스 접속을 자동화하기 위한 오픈 소스 침투 도구이다. 다양한 데이터베이스 관리 시스템을 지원한다.

boolean-based blind, time-based blind, error-based..등의 sql injection 기술을 지원한다.

password 해시 형식 인식을 자동화했고, 다양한 베이스를 지원한다.

sqlmap-> 도움말 출력

sqlmap(testparameter)...

자주 사용하는 구문)

select,from,where,concat, sleep(시간을 측정해서 참거짓 탐지하는 것-응답하는 시간을 잼.)

blog.naver.com/isc0304

mysql scan- 배너값 조회/출력

 

search-b-v 3 -p sleep

=search -b -v 3 -p title

--cookie=COOKIE

option을 주고 데이터베이스를 명시할수도 있다.

테스트테이블1을 조회할 수가 있다.-> testtable1 --dump(레코드까지 보임)

bwapp-sqli inurl:github

/usr/share/metasploit-framework/modules/exploits/multi/http/bwapp-cmdi.rb

모의해킹 시작- msf> search bwapp

rhost를 설정하고, 취약한 가능성이 있는 파일을 띄워준다.

exploit을 설정하면서, 백도어를 연결한다.

 

registeroption, username, password, 디렉토리에 대한 정보들도 다 세팅해줄수 있다.

txt 파일을 통해 이름 등을 정해서 넣어줄수도 있다. php 파일에 넣어주려고 하는 것을 확인할수 있음.

title->exploit, action->search

 

video8) AJAX,LOGIN,Blog

sql에 대한 이해와, sql을 어떻게 injection하는가에 대한 이해

 

ajax- 자바스크립트와 json을 혼합하여 사용하는 기술

페이지 이동없이 고속으로 화면 전환 가능, 서버처리를 기다리지 않고 비동기 요청 가능, 수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리위임 가능.

자동완성 이용-> 고속으로 화면 전환하는 기술 확인 가능하다.

 

client-sql-sql-database-> sql injection 10-1.php(이 내부에 자바스크립트 있어서 10-2파일을 계속 호출한다)->db

키가 올라올때마다 sqlisearch

 

login/hero-> secret이 불린다.

-> limt를 통해 테이블의 첫 번째 줄 값을 불러올 수도 있다.

 

blog- 저장을 해서 insert를 해서 취약점을 가져올수도 있다.

sql 인젝션 막기 위해서 처리를 잘 해두고 있다.

 

video 9)blind sql injection

sql을 요즘 잘 막아놔서 눈에 직접적으로 보이는 sql은 없다고 생각하면 된다.

blind sql injection-> 쿼리의 결과를 참과 거짓만으로 출력하는 페이지에서 사용하는 공격

추력 내용이 참과 거짓밖에 없어서 데이터베이스의 내용을 추측하여 쿼리를 조작할 수 있다,

거짓이면 실행이 안되도록 함.

공격 플로우)

1. sql 결과를 데이터베이스가 참과 거짓으로 주는가?

1=1? and 1=2?

2. 원하는 데이터의 길이 확인

length(string)=길이 반환

3. 원하는 데이터의 스트링 확인(substr,substring,right, left)->스트링을 추측해낼수가 있다.

blind sql injection 기초 공격 구문이 존재한다.

구문의 길이를 유추해서 참과거짓을 가림으로써 일단 길이를 알수 있다.

substr를 통해 한글자씩의 문자를 비교해볼수 있다.(ascii 코드도 비교 가능)

 

substr를 막아놓는 경우가 있다. 이때 right(string,length),left 으로 가져올 수도 있다.

 

boolean-based/time-based

time-base 일 때 ‘ or 1=2 and sleep(5) 하면 거짓이라 sleep 까지는 실행이 안된다.

‘ or id=1 and substr(title,1,1)="G" and sleep(2) 앞이 참이라서 sleep까지 실행이 가능하다.(요청 시간에 따라 다르다)

데이터베이스 조회와도 결합이 가능하다.

 

blind (SOAP)->주석 처리가 안된다.

다른방법을 찾아야 한다.

title=aaaaa' or '1'='1

 

sqlmap injection point 설정-> b,e,u,s,t(함부로 사용하면 db성능저하)등의 명령어를 통해 실행이 가능하다.

 

video10) xml xpath injection

 

xml 구조 에 악의적인 행위를 일으키는 내용을 삽입한다.

xml- 데이터를 트리 구조의 노드로 표현(데이터베이스를 분류함)

xpath- 이것을 질의하는 sql의 일종.

xml의 일종의 형태(movies/action[id=' ', $id '']...

xpath 명령어

1) / 최상위 노드

2) // 현재 노드로부터 모든 노드 조회

3) . 현재 노드

4) parent, child, []=조건문, node()현재 노드로부터 모든 노드 조회.

 

w3schools->xpath example등의 튜토리얼을 제공한다.

1) <bookstore>

각가지 노드들이 존재한다(title, author, year,price..)

/bookstore/book/title

-> 직접 사이트에서 실습해볼수가 있다.

/bookstore/book[price>35]/title

 

beebox로 가서 직접 xmli.php를 살펴볼수 있다( security level에 따라 지시하는 내용이 다르다.)

count, string-length, substring..

parents의 내용을 바꿔주면서 테스트가 가능하다.(시스템 자체에 영향은 없지만, password와 아이디를 탈취할수 있다.)

genre에도 injection이 가능하다(여러가지 명령어를 연결해 줄수 있음.)

 

 

video 11) 인증 결함

많이 발생하는 내용, 적절한 인증이 필요하다는 내용.

- 인증에 필요한 사용자의 계정 정보를 노출하는 취약점

- html 코드, get 요청 url에 변수 노출

- 취약한 암호 설정, 인증 과정

insecure login form

-급하게 사이트를 배포해서 드래그하면 아이디와 패스워드를 찾아버릴 수 있다.

 

medium으로 이동하면 passphrase를 찾고, secret이라는 암호문을 찾고 같으면 unlock이 된다,

var bWAPP 의 문장에서 문자열의 문자 하나하나마다 새로운 변수를 설정해주었고, 이를 해독하면 secret을 찾아낼수 있다.

javascript로 문장을 복사하고, alert(secret)을 이용해서 hulk smash!라는 문자열을 찾아내수 있다.

 

weak password- 사전 형식을 해보고 안되면 brute forcing-> 처음부터 무차별적으로 모두 대입함.

burpsuite로 하나하나 대입을 해볼수도 있지만, 상당히 오래걸린다.

사전 형식: inurl github fuzzdb-passwds 자주 사용하는 패스워드 들 위주로 검색을 주로 해주고 있다.

high로 보안을 올려주면 captcha 때문에 bruteforcing이 불가능하다.

captcha- randomstring& image: 추측할 수가 없다.

weakpasswordtest- 주로 사용하는 패스워드를 집어넣고 깨는데 얼마나걸리는지 확인이 가능하다.

 

video 12- 세션 관리 미흡

세션 관리: 세션이란 웹 사이트에서 서비스를 제공할 때 사용자의 로그인을 유지하기 위하여 사용한다.= 세션을 어떻게 관리하느냐가 굉장히 중요하다.

stateless 방식- 현 상태를 계속 유지하지 않고, 사용자가 계속 새로운걸 요청할대마다 로그인을 요청한다.

웹 사이트에서 서비스를 제공할 때 사용자의 로그인을 유지하기 위하여 사용한다.

- 실제로 가장 많이 도출되는 취약점 중 하나가 세션 관리 미흡에서 발생한다

변수하나만 가지고도 페이지가 반응을 한다(정상적이지 않은 방법)

- 악의적인 의도를 가지고 행동하기 쉽다.

 

burpsuite에서 쿠키를 1로 바꿔주면 뚫린다.

 

video 13) 크로스 사이트 스크립팅

html <>

클릭을 하면 옮겨갈 수 있는 기능이 상당히많다.

계속 하이퍼링크 같은 것들이 움직이는 것을 체크하기 까다롭기 때문에 취약점이 발생할 수 있다.( 웹페이지를 세련되게 만들기 위해 태그를 많이 집어넣음)

 

xss injection-stored(html injection과 흡사)

- 악의적인 스크립트 코드가 데이터베이스에 저장됨

- 저장된 코드 내용을 확인한 사용자의 pc에 스크립트 코드를 실행하는 공격,

 

블로그 stored 형태의 injection이 발생할 수가 있다.

html과 방어 방법이 크게 다르지 않다.-> gedit해서 내용 확인 가능.

change secret-> user-agent가 개입할수 있다.

사이트 명을 입력하면 모바일 형태로 리다이렉션 되는 것을 확인할수 있다.

proxy를 잡았을 때 내용을 보면 모바일의 형태로 내용을 보내고 있다.

302번이 넘어왔음 -> 300번대가 redirection에 해당하는 내용들을 보내주는 것임.

xss를 사용하기 위해서는 사용자의 임의적인 값이 필요하다. edit도 가능함.

 

video 14) xssreflected

-취약한 매개변수에 악의적인 html 코드를 삽입하는 공격.

html 태그로 악의적인 사이트에 연결하거나 악성 파일을 다운로드하도록 유도한다.

- 악의적인 사용자가 희생자에게 임의의 링크를 준다.

서버에 접속하도록 바꾼다. 악의적인 사용자가 서버에 무언가 주입을 했다면, 사용자가 하도록 유도해서 직접 악의적 코드를 실행하도록 한다.(사회공학적 방법, 피싱)

 

json- high로 바꾸면 security level에 따라 다르게 처리된다.

1,2가 아니면 바로 xss_check_3로 넘어가서 다시 확인한다. html과 상당히 흡사.

 

ajax- 실시간으로 요청이 들어가서 계속 검색을 실행한다.

<script>alert(1)</script>

ajax- 내부적으로 호출을 다시 하고 있기 때문에 처음에 있던 2-1 페이지가 xss에 대한 취약점이 없다. 취약점이 있는 것은 2-2 이다. 내부적으로 2-2를 호출하다 보니 밖에서는 보이지 않는다.

 

reflected(eval)

스크립트를 바꿔줌으로써 바로 실행이 될수도 있다. 굳이 검증과정이 필요 없다.

 

phpMyadmin

apm 이 세 개 프로그램이 돌아가고 있음. 이 세 개가 혼합해서 들어가고 있는 상황

이런 apm으로 돌아가고 있기 때문에 php에서도 phpmyadmin이라고 하는게 존재한다.

hint- cve 사이트로 바로 연결이 된다. 참고할 수 있는 사이트를 이용하면 된다.

자바스크립트처럼 동작을 한다. error.php- test1234를 전달하면 1234에 대한 저보가 전달이 된다. 뒤에 and를 넣은 다음에 사용하게 된다.

test1234&error=test4321- bb코드를 넣으면 새로운 데이터를 넣을수 있다. [a@url@page]click[/a]

html 이렇게 유도를 한다.

error 페이지는 아닌데 앞에 신뢰할수 있는 내용을 넣는다.

 

php self- 서버에서 phpself라는 변수를 갖고 있다.

세션을 사용했을 때 서버에 있는 phpself라는 변수는 서버쪽에 할당이 되어있어서 유저마다 사용하는 변수가 다르다.

서버- phpself자체가 서버 변수이다. 서버가 어떻게 쓰이는지 실습.

 

HREF- 이름을 입력해서 투표하는 사이트

name=sum action=vote-> 하이퍼링크가 존재한다.

view page source- 내용이 존재함.

 

모의해킹을 하면서는 새로운 결과를 원함. 쿠키값들을 어떻게 서버로 가져오느냐등의 문제를 다뤄야 함.

alert창을 띄우는 법을 알았다면 어떻게 서버로부터 데이터를 가져오는가에 대한 문제를 해결하는 방법 또한 알고 있어야 한다.