security_duck의 등록된 링크

키자드에 등록된 총 547개의 포스트를 확인하실 수 있습니다.

Naver Blog

Puzzle #4 : The Curious Mr. X

http://forensicscontest.com/2010/02/03/puzzle-4-the-curious-mr-x Puzzle #4: The Curious Mr. X – Network Forensics Puzzle Contest Puzzle #4: The Curious Mr. X February 3, 2010 / admin / 6 Comments While a fugitive in Mexico, Mr. X remotely infiltrates the Arctic Nuclear Fusion Research Facility’s (ANFRF) lab subnet over the Interwebs. Virtually inside the facility (pivoting through a compromised system), he conducts some noisy... forensicscontest.com While a fugitive in Mexico, Mr. X remotely inf

Naver Blog

쿠키의 개념

1. 쿠키와 세션을 알아보기전 HTTP프로토콜에 대해 HTTP ? 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다. Clinet ? Server ? Client - 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터를 이용한다. URL를 이용하여 서버에 접속하고, 데이터를 요청할 수 있다. Server - 클라이언트가 데이터를 요청한 것에 대한 응답을 해준다. 2. HTTP 연결방식 / Connectless(비연결성) & Stateless(무상태) 방식 2.1 Connectless ? · 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊는다. · 기본적으로 자원 하나에 대해서 하나의 연결을 만든다. 2.2 Connectless 의 장점 · 불특정 다수를 대상으로 하는 서비스에 적합하다 · 아무리 많은 사람들이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다. ==> 요청한 것에 대해 응답

Naver Blog

str_replace() / 문자 바꾸기

str_replace() 사용법 str_replace('변경대상 문자', '변경하려는 문자', 변수(replace함수로 이용한 바꾸고싶은 문자열)) <?php $txt = "IT신입의 블로그"; //대상 문자열 echo str_replace('IT신입','쪼밍밍',$txt); ?> 결과는 이렇게 나옵니다.

Naver Blog

접속자 ip 확인 /$_SERVER[&quot;REMOTE_ADDR&quot;]

$_SERVER ? · header 정보, 경로, 스크립트 위치등을 포함하는 배열입니다. · 포함하는 목록을 웹 서버에 의해서 생성되며, 웹 서버의 버전에 따라 다른 항목을 제공할 수 있습니다 REMOTE_ADDR ? · TCP/IP 접속 그 자체에서 생성되는 값으로, 접속자의 IP주소 값을 가지고 있다. $_SERVER["REMOTE_ADDR"] ? · 웹 서버에 접속한 접속자의 IP 정보를 갖고 있습니다.

Naver Blog

웹 접속환경 정보 $_SERVER['HTTP_USER_AGENT']

$_SERVER['HTTP_USER_AGENT'] · 사용자의 웹접속한경 정보를 담고있는 PHP 전역변수

Naver Blog

htmlspecialchars()

htmlspecialchars() ? · 문장내에 HTML 코드가 들어가는 특수문자를 포함시켜 입력하고 화면으로 출력할 때 HTML의 특수문자가 HTML태그로 적용되는 것이아니라 일반 문자로 인식되어 그대로 출력되게 해주는 역할 · HTML에서 사용하는 특수문자를 UTF-8로 반환한다. · UTF-8은 유니코드 한 문자를 1Byte부터 4Byte까지 인코딩하며 아스키코드도 호환이 가능하다. htmlspecialchars() 함수를 이용하여 HTML 태그에 사용되는 문자들을 인식하지 않게 인코딩하여, 인잭션을 막을 수 있다. 전 후 & &amp; " &quot; ' &#039; < &lt; > &gt;

Naver Blog

행정부 개발보안 가이드라인

구현 단계 보안약점과 분석•설계 단계 보안요구항목과 연관 관계는 다음과 같다 분석•설계 단계 보안요구항목 분류와 구현 단계 47개 보안약점 기준을 도표로 표시해 보면 대부분 의 기존 보안약점 기준들은 분석•설계 단계에서부터 고려되어야 함을 알 수 있다. 또한 일부 항목들 은 개발 단계에 코딩 규칙을 준수하는 것만으로도 보안 취약점들을 제거할 수 있다. https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000015&nttId=57473 소프트웨어 개발보안 가이드 | 행정안전부> 정책자료> 참고자료> 참고자료 행정안전부 홈페이지에 오신것을 환영합니다. www.mois.go.kr

Naver Blog

flee button 84p

wargame flee button button을 누르는게 문제인 것 같습니다. click me! 를 누르고 싶은데, 마우스 커서를 움직일때 마다 click me! 또한 움직여서 클릭할 수 가 없습니다. 소스를 확인해 봐야할 듯합니다 unescape함수가 눈에 보입니다. escape() 알파벳과 숫자 및 *, @, -, _, +, ., /를 제외한 문자를 모두 16진수 문자로 바꾸어 줍니다. 이 함수는 쉼표와 세미콜론 같은 문자가 쿠키문자열과의 충돌을 피하기 위해 사용됩니다 unescape() 16진수 문자열로 변환된 문자열을 다시 원상태로 복구 시킬 수 있습니다. 콘솔을 통해 그대로 붙혀 넣기 해보면 되겠습니다. 처음 한번을 했을 때는 바탕색이 바뀌는 걸 확인할 수 있지만, 여전히 커서가 움직이면 click me! 또한 움직여서 클릭할 수가 없습니다. 혹시나 모르니, 한번 더 입력해보겠습니다. 클릭 두번을 했더니, click me!가 고정이되고 클릭을할 수 있게 됬습니다. 클릭하면

Naver Blog

QR CODE PUZZLE 110p

javascript puzzle 문제인 듯 합니다. QR CODE를 퍼즐로 알맞게 맞추면 될 것 같습니다. 하지만, 시간을 투자하여 맞출수는 있겠지만 번거로운 관계로 소스코드를 확인하고 문제를 풀어보겠습니다. jquery.jqpuzzle.js 가 이 큐알코드를 만들어주는 자바스크립트인것 같습니다. 특정경로에서 이미지을 가지고 jquert.jqpuzzle.js에 내에 정의된 함수내에 6*6퍼즐을 만드는 것 같습니다. 그러면 그 이미지를 어디서 가지고 오는 것이 문제입니다. 바로 unescape 쪽이 수상합니다. escape() 알파벳을 16진수로 바꿔주는 함수 unescape() 16진수를 알파벳으로 바꿔주는 함수 이미지를 알기 위해 console에서 실행하면 되겠습니다. 경로가 뜨는것을 확인할 수 있습니다. 그 경로로 이동해 보겠습니다. 해당 이미지가 나오는데 이것을 휴대폰을 찍어서 확인해도 되겠지만 Google에 onlie qr code decoder라고 치고 decoder를 통한

Naver Blog

login filtering 133p

wargame login filtering 문제 : 계정이 있습니다.. 그러나 잠겨있습니다 필터링 우회문제입니다. login 로그인 페이지가 나오고, 해당 소스페이지를 볼 수 있는 것 같으니, get source를 해줍니다. id와 password가 입력하고 전달하면 맞는 정답이면 쿼리에 넘기는 것 같습니다. 하지만 id가 'guest', 'blueh4g'를 필터링을 하고 있습니다. 이 두 계정을 가지고 로그인을 성공하면 키 값을 줄 것 같습니다. 소스 마지막에 보시면 두 계정에대한 아이디와 비밀번호가 존재합니다. 저대로 입력하면 문제가 해결되겠지만, 방금 전에 말한 것처럼 필터링이 되고있습니다. 그렇다면 어떻게 다른방식으로 입력하는지가 문제입니다. mysql의 취약점을 이용해야겠네요. 해당 문제의 소스는 php소스입니다. php의 특성은 대소문자를 구별한다는 것인데요. 아이디와 비밀번호를 찾는 DB는 mysql 쿼리입니다. mysql은 대소문자를 구별을 하지 않는다는 것입니다. 폼

Naver Blog

WTF_CODE 154p

wargame WTF CODE 소스코드를 해석하는 문제인 듯 합니다. souce_code.ws를 클릭하면 파일을 하나 다운이 됩니다. 오픈하면 읽을 수 없는 파일이라고 해서 vscode로 열어보기도 하고, 메모장으로도 열어보기도하고, Hxd안에 넣어보기도 했지만 아무 값이 존재 하지 않았습니다. 머리가 아플정도로 머리를 굴러봤지만 해결되지 않았더 찰나, 확장자가 .ws인 것이 수상하다고 느껴 search를 하였더니 whitespace 라는 언어가 존재했네요 WHITESPACE LF, FF, CR은 모두 줄바꿈과 관련된 문자로, 과거 타자기 시절 기능에서 유래된 문자들이다. 문제는 현재 운영체제에 따라 어떤 문자를 줄바꿈으로 쓰는지가 다르기 때문에 호환성에 지대한 악영향을 미치고 있다. 기본적으로는 스택 기반의 명령어 입력형이다. 즉 공백과 탭과 엔터의 조합이 전부 명령어라는 것이다. 또한 스택과 힙을 갖고 있어서 스택에 임의의 정수(부동소수와 실수는 못 쓴다고 한다)를 입출력 가능하

Naver Blog

strcmp 211p

wargame.kr strcmp 문제 : strcmp 인증우회를 할 수 있다면, 너는 플레그 값을 얻을 수 있다. strcmp로 인증우회하는 문제인 것 같습니다. 일단 저는 시작할 때 1,2 ,admin, guest를 다 넣어보고 시작합니다. 결과는 4가지다 Wrong password.. 라고 뜹니다. 이제 view-source를 확인해보겠습니다. file_get_contents() · 전체파일을 문자열로 읽어들이는 PHP함수 · 로컬파일, 원격파일 모두 가능 랜덤 값으로 password를 가지고 오고, password의 값이 0이라면 문제가 풀리는 것 같습니다. 문제에서 힌트를준 것 같습니다. strcmp 인증우회를 사용하라고 하니, strcmp취약점이 있을 것 같습니다. 찾아보니 strcmp()는 문자열과 배열을 비교했을 대 NULL,O을 반환합니다. 즉, strcmp는 문자열과 문자열을 비교해서 같을 경우 0을 반환하지만, 문자열과 배열을 비교하여 같지 않아도 0을 반환하는 것

Naver Blog

md5_compare 231p

wargame.kr md5_compare 단지 비교하는 문제인듯 하다. 다양한 값들을 넣어서 시도를했지만, Wrong... 소스를 확인해보겠습니다. if (!ctype_alpha($v1)) {$chk = false;} if (!is_numeric($v2) ) {$chk = false;} if (md5($v1) != md5($v2)) {$chk = false;} ctype_alpha(string $text) %text 문자열이 모두 알파벳인지 확인하여 true 값을 반환합니다. (1값 반환) 그외 문자열이 있으면 false를 반환합니다(null값반환) is_numeric() 데이터타입을 확인하는 함수 이중에서 만약 특정 특정 데이터의 값이 숫자인지 아닌지를 확인하여 결과를 반환하는 함수 즉, v1는 알파벳, v2는 숫자형데이터이며, 그 둘을 md5 암호화했을 때 다르면 false 같으면 flag를 출력하는 문제인 것 같습니다. 처음에는 알파벳으로한 문자열과 숫자형데이터로 한 문자열을

Naver Blog

isset(), empty()

isset() 과 empty() 공통점 ? 두 함수 모두다 변수의 값을 유무를 확인할 수 있는 함수입니다. 차이점 ? isset() 변수가 존재하면 true, 그렇지 않으면 false를 return한다. empty() 변수의 값이 0 또는 null 값이라면 true, 값이 존재한다면 false를 return한다. http://b.redinfo.co.kr/20

Naver Blog

인젝션 Injection

인젝션 (Injection) ? 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 데이터베이스의 정상적인 쿼리 일부로 인식하고 실행할 때에 발생하는 취약점으로, 데이터를 입력받거나 데이터베이스 정보를 요청하는 곳에는 인젝션 공격이 가능하다. 인젝션은 공격방법이나 사용언어에 따라 종류가 달라진다. 밑에 사진의 인젝션이 대표적인 유형이다. HTML Injection, SQL Injection, OS command Injection, LDAP Injection 인젝션은 OWASP에서 발표한 웹 애플리케이션의 취약점 TOP10에서 가장 많이 많이 발생하고, 보안상 영향을 크게 줄 수 있는 취약점이다. 출처 : http://itwiki.kr/w/OWASP_Top_10

Naver Blog

HTML 인젝션

HTML 인젝션 ? 코드 인젝션 공격의 하위 개념으로, 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격이다. HTML Injection 공격기법은 사용자가 요청한 페이지에 악의적으로 html tag를 삽입(insert)하여 공격하는 기법이다. HTML Injection 공격은 반사기법과 저장기법으로 나뉜다. HTML Injection의 공격방법 1. 반사기법(Reflected) URL에 악의적인 HTML 태그를 삽입하여 링크를 클릭한 사용자의 PC에서 HTML 태그가 실행되게 하는 공격이다. 특히, GET 방식으로 데이터를 전송할 경우 URL에 변수명과 입력 값을 노출한다. GET방식 ? POST방식 ? Client가 Server에게 요청을할 때 Client는 데이터를 담아서 Server에게 보내야한다. 데이터를 담아서 방식에 따라 GET방식과 POST 방식이 있다. GET방식은 URL형태로 표현하게 되는방식이다. 특정 페이지를 다른사람에게 접속할게 할 수 있다. 데이터를

Naver Blog

HTML 인젝션 - Reflected(GET)

HTML Injection -Reflected (GET) - 난이도 하 HTML태그를 텍스트 필드에 입력합니다. First name : <h1>========</h1> Last name : <img src=http//[bee-box IP]/bWAPP/images/bee_1.png> 사용자는 HTML 태그가 삽입된 페이지를 정상적인 페이지로 오해하게 된다. 밑에 사진은 GET 메서드로 요청했기 때문에 URL에 그대로 노출되는 것을 확인할 수 있습니다. 난이도 중 First name : <h1>========</h1> Last name : <img src=http//[bee-box IP]/bWAPP/images/bee_1.png> 결과는 "난이도 하" 에서 처럼 출력이 안 됩니다. 태그에 사용되는 '<' , '>'이 필터링이 되고 있어서 그런 것 같습니다. 그렇다면 URL을 인코딩하여 입력하면 될 것 같습니다. URL 인코딩값 = ASCII코드의 HEX값 + %를 붙인값 이렇게해서 값을

Naver Blog

HTML 인젝션 - Reflected(POST)

난이도 하 POST 메소를 사용하여 데이터를 전송합니다. Firstname : <h1>Success</h1> Lastname : <img src=http://[bee box IP]/bWAPP/images/bee_1.png> Go 버튼을 누르고 확인 해보면 태그에 입력한 내용이 출력이되고 GET방식과 달리 URL에 노출이 되지 않는 것을 확인할 수 있습니다. 난이도 중 Firstname : <h1>Success</h1> Lastname : %3Cimg src=http://[bee box IP]/bWAPP/images/bee_1.png%3E 그대로 입력을 하고 Burp suite으로 입력 값을 확인하게 되면 "<" , ">"이 인코딩된 것을 확인할 수 있다. Burp suite에서 인코딩 된것을 확인하고 Forward를 눌러보면 정상적으로 Success와 bee이미지가 정상적으로 떠야 되지만 안뜨는 것을 확인할 수 있으며 문자열이 그대로 출력되는 것을 알수 있다. 실행되지 않는 이유를

Naver Blog

기타 인젝션 공격 -iframe 인젝션

iframe 인젝션 · iframe은 HTML 문서 안에서 또 다른 HTML 문서를 출력하는 태그로, 어느 위치든 상관없이 인제션 공격을 할 수 있다. · iframe 인젝션은 독립적으로 만들 수 있어서 HTML 인젝션 중에서도 공격에 자주 사용된다. · HTML 익젝션에서 사용하는 태그와 마찬가지로 페이지 내에 iframe 태그를 주입하는데, 주로 악성 URL을 삽입한 후 사이즈를 0으로 설정하여 숨기는 방법을 사용한다. 따라서 사용자가 의도하지 않은 악성 웹 사이트에 접속하거나 경고창을 띄울 수 있다. 난이도 하 'iframei.php'페이지는 GET 방식으로 데이터를 전송받으므로 URL에 변수를 노출한다. <변수> · ParamUrl : 연결할 주소를 받는다. · ParamWidth : 내용을 출력할 크기 지정 · ParamHeight : 내용을 출력할 크기 지정 f12(관리자 도구)를 통해 확인을 하면 iframei.php페이지는 iframe 태그를 사용하여 bWAPP 디렉터

Naver Blog

기타 인젝션 공격 - OS 커맨드 인젝션

OS 커맨드 인젝션 ? 취약한 변수로 시스템 명령어를 주입하여 서버 운영체제에 접근하는 공격이다. 난이도 하 DNS를 조회하는 시스템 명령어인 nslookup을 사용한다. * 파이프라인(|) : 파이프라인 왼쪽의 출력을 파이프라인 오른쪽의 입력으로 연결시켜주는 기능 * 세미콜론(;) : 여러 명령어를 한줄에서 실행 시킬 수 있음. ex) A;B : A 명령어 실행 후 B 명령어 실행 * 더블 엠퍼센트(&&) : 첫 번째 명령어 성공 시 다음 명령어 수행 (실패 시 다음 명령어 수행 안함) * 더블 버티컬바(||) : 첫 번째 명령어가 실패해도 다음 명령어 수행 (성공 시 다음 명령어 수행 안함) [출처] [비박스] OS Command injection + blind|작성자 shionista "|" 를 사용하는 이유는 앞에 nslookup이 생략되어 있는 상태이므로 다음옵션을 해줘야 원하는 명령어를 실행할 수 있다. | pwd | ls -al | ls ../../../ : 서버 시스템

Naver Blog

기타 인젝션 공격 - PHP 코드 인젝션

난이도 하 'message'를 클릭해보면 test라는 text가 출력이 되고, URL에 message=test라고 문자열이 노출되는 것으로, GET메서드로 요청하고 있는 것을 확인할 수 있다. PHP에서는 exec(), eval() 함수를 사용한 경우 세미 콜론(;)을 사용하여 다른함수를 실행하는 취약점이 있다. 취약점이 유무를 확인하기 위하여 세미콜론과 system() 함수를 사용한다. system()함수는 문자열 형태의 명령어를 인자 값으로 받아서 명령어를 실행한다. message 변수에 Success문자열을 입력한 후, (;)세미콜론으로 system함수의 'whoami' 를 실행 시켰다. 문자열은 그대로 출력이되고, 'whoami'통하여 'www-data'가 출력되었다. 시스템 정보를 획득할 수 있는 다른 명령어도 실행해볼 수 있다. ( 'shell_exec()' ) ※공격자는 현재 웹 권한을 가지고 있으므로 상위권한이 필요한 파일의 경우에는 접근이 불가능하다. ex) /etc

Naver Blog

기타 인젝션 공격 - SSI 인젝션

SSI(Servr-Side Includes) ? SSI는 HTML 페이지의 전체 코드를 수정하지 않고 공통 모듈 파일로 관리하며 동적인 내용을 추가하기 위하여 만들어진 기능이다. 일반적인 HTML 태그외에 웹서버에서 제공하는 특별히 확장된 기능들을 말한다. · 방문자수를 세거나, 홈페이지의 로고를 수정하는 간단한 기능을 추가할때 사용 · SSI를 사용하는 웹 페이지의 경우 SSI 지시어를 처리하기 위한 '.shtml' 확장자 파일을 생성 SSI 를 사용한 사이트 예시 · HTML 문서이면서 페이지내에 text카운터가 포함되어 있다. · 문서의 확장자가 html이 아니라 shtml이다. · 접속한 사용자의 IP주소나 사용하는 브라우저 이름등 여러가지 사용자 관련 정보를 HTML 문서내에서 보여준다. · 페이지 공통으로 쓰이는 부분을 하나의 문서로 만들어 페이지에서 공통된 문서를 포함시켜 사용한다. 참고 : http://blog.naver.com/PostView.nhn?blogId=ks

Naver Blog

SQL 인젝션 - GET/Search

SQL 인젝션 ? 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점이다. GET/Search 난이도 하 작은 따옴표(')의 역할 데이터베이스에서 작은따옴표로 문자 데이터를 구분하기 때문에, 웹 서버에서 데이터베이스 서버에 질의하는 쿼리에 문법 오류가 발생하게 된다. 이를 통해 서버가 어떤 데이터베이스 종류를 사용하는지 알 수 있다. 데이터베이스의 종류를 알아야 하는이유 데이터베이스는 종류에 따라 SQL구문이 차이가 있기 때문에 알아야 한다 작은따옴표(')를 입력하여 오류가 발생했고, 웹 서버는 MYSQL을 사용하고 있는 것을 알수 있다. 'or 1=1' 첫 작은 따옴표 앞구문의 내용과는 상관없이 '1=1'항상 참의 결과를 항상 참으로 만드는 쿼리이다. 만약 '#' 뒤에 주석이 존재한다면 ? 주석'#'은 해석을 하지 않는 부분이다. 그래서 주석이 있을 경우 뒤에 내용들은 무시하게 된다. ' or 1

Naver Blog

SQL 인젝션 - POST/Search

난이도 하 GET방식은 URL에 변수에 입력된 데이터값이 그대로 노출되지만,POST 메서드로 HTTP 연결 요청을 보낼 경우 URL에 노출되지 않는다. 그러나 검색란에 사용되는 변수가 취약하므로, SQL쿼리를 입력하면 취약점 여부를 확인할 수 있다. 기타 인젝션 공격 - SSI 인젝션 SSI(Servr-Side Includes) ?SSI는 HTML 페이지의 전체 코드를 수정하지 않고 공통 모듈 파일... blog.naver.com https://blog.naver.com/ster098/221885072665 POST/Search 파트에서는 GET방식과 매우 유사하다. 그러므로 GET/Search에서 했던 과정까지는 다 수행했던 가정하에 진행했다. 알아낸 사용자계정정보를 통해 2차 공격을 시도할 수 있다. 해시값으로 변환된 비밀번호를 평문으로 변환하여 사용자 계정을 탈취한다. 참고 해시값(6885858486f31043e5839c735d99457f045affd0)을 'sha1' 타입을

Naver Blog

SQL 인젝션 - GET/Select

난이도 하 sqli_2.php 페이지의 경우 변수 값이 URL이 그대로 노출되는 것으로 보아, GET메서드를 이용하여 HTTP 연결 요청하는 것을 확인할 수 있다. movie라는 변수를 주고 값을 숫자형으로 입력 받고 있다. movie 변수값에 작은따옴표를 입력해보면 오류가 뜨는 것을 확인 할 수 있다. SQL Injection이 가능하다는 것을 알 수 있다. GET/Search 페이지에서 했던 것처럼 칼럼의 수를 알기 위하여 UNION SELECT ALL 1,2,3,4,5,6,7#을 해보았다. 다른 정보들도 얻기위하여 아래와 같이 입력해보앗다. 0 union select null,database(),@@version,@@datadir,null,null,null database() : 데이터베이스 이름을 알려주는함수 @@datadir : 데이터베이스 서버가 존재하는 디렉터리가 저장된 시스템 변수 @@version : Mysql의 버전을 알려준다. 버전 : 5.0.96-0ubuntu3

Naver Blog

SQL 인젝션 - POST/Select

난이도 하 post 메소드를 사용하여 요청하고 있기 때문에 URL에 변수가 나타나지 않는다. 버프스위트를 이용해 변수명은 moive이며, 숫자형 값만 입력 받는 것같다. moive의 변수 값에 문자를 삽입하면 오류가 뜨는 것을 확인할 수 있다. 작은따옴표(')또한 오류가 뜨는 것을 확인할 수 있다. 데이터베이스 명, 데이터베이스 서버 버전, 서버에서 MySQL 위치경로를 확인해보기 위해 UNION SELECT구문을 사용하였다. 0 union select null,database(),@@version,@@datadir,null,null,null url 인코딩 ==> 0+union+select+null%2cdatabase()%2c%40%40version%2c%40%40datadir%2cnull%2cnull%2cnull 사용자의 호스트이름, 사용자 이름, 비밀번호를 출력하는 SQL구문을 입력한다. 0 union select null,host,user,password,null,null,nu

Naver Blog

NCS - 정보보안

https://ncs.go.kr/index.do NCS 국가직무능력표준, NCS 블라인드채용 NCS 메인에서 국가직무능력표준(National Competency Standards) 및 블라인드 채용에 대한 다양한 정보와 유용한 컨텐츠를 만나 보세요 ncs.go.kr 정보보호관리 · 운영 1. 정보보호 거버넌스 구현 2. 개인정보보호 거버넌스 구현 3. 정보보호 정책 기획 4. 개인정보보호 기획 5. 보안 위험관리 6. 정보보호 계획 수립 7. 개인정보보호 운영 8. 네트워크 보안 운영 9. 애플리케이션 보안 운영 10. 시스템 보안 운영 11. 관리적 보안 운영 12. 물리 보안 운영 13. 보안 장비 운영 14. 보안성 검토 15. 내부 보안 감사 수행 16. 협력사 보안 관리 정보보안진단 · 분석 1. 보안전력수립 컨설팅 2. 보안감리 3. 보안감사 4. 정보보호관리체계 인증 5. 정보보호제품 인증 6. 보안대책설계 컨설팅 7. 정보시스시템 진단 8. 정보보호관리체계 심사컨설팅

Naver Blog

Zoom ,제로데이 취약점

Zoom ? 줌 비디오 커뮤니케이션(영어: Zoom Video Communications)은 화상회의 서비스를 제공하는 미국의 기업이다. 화상 회의, 온라인 회의, 채팅, 모바일 협업을 하나로 합친 원격 회의 서비스를 제공한다. 출처 : https://ko.wikipedia.org/wiki/%EC%A4%8C_%EB%B9%84%EB%94%94%EC%98%A4_%EC%BB%A4%EB%AE%A4%EB%8B%88%EC%BC%80%EC%9D%B4%EC%85%98 현 세계적으로 1290만명이 Zoom을 이용하는 것으로 알고 있다. 코로나가 발생하기 전에도 많은 이용자들이 있었지만, 코로나가 발생하고 난 후 한국뿐만 아니라, 세계적으로 사용자들이 크게 증가했을 것이며, Zoom을 많이 이용할 것이다. 실제로 한국에서 교육부등, 일부학교가 영상강의에 활용하고 있다고 한다. 회의 세션을 기록 및 저장할 수 있고, 사생활 침해또한 가지고 온다. https://www.boannews.com/media/

Naver Blog

SQL 인젝션 - AJAX/JSON/jQuery

AJAX ? AJAX = HTML + JavaScript + JSON JSON 웹 서버와 데이터를 주고받을때 데이터를 표현하는 방법, 자바스크립트 형식으로 객체를 표현 jQuery 자바스크립트 라이브러리 중 하나, 클라이언트에서 스크립트 언어를 사용할 때 이를 단순화하고 AJAX 기능도 제공 난이도 하 sqli_10-1.php 페이지는 개발자 도구 또는 /var/www/bWAPP/sqli_10-1.php를 통해 title변수를 사용한 다는 것을 확인할 수 있었다. GET 메소드를 이용하는 것을 보아, URL에 변수 값이 노출이 되는것을 확인할 수 있었다. AJAX 기술을 활용해 Search 하는 기능이 존재하지 않지만, Search를 클릭하지 않고도 검색결과가 뜨는 것을 확인할 수있다. ' or 1=1# 쿼리를 통해 모든 자료를 출력할 수 있었다. 데이터 테이블 명을 알기 위해 UNION SELECT 구문을 사용해야 되지만, 구문을 사용할려면 , 기존 쿼리에서 호출하는 칼럼 수와 일

Naver Blog

SQL 인젝션 - Login Form/Hero

난이도 하 작은따옴표(') 를 삽입하여 데이터베이스의 종류(MySQL)를 확인할 수 있었다. 아이디에 항상 참인 결과를 출력해주는 쿼리 ' or 1=1# 을 삽입해봤다. 비밀번호를 입력하지 않고 아이디에만 쿼리를 입력해도 출력이 되는 것을 확인할 수있다. 해당 페이지는 변수를 따로 입력받지 않고 AND 연산자를 사용하여 아이디와 비밀번호를 출력하는 취약점이 존재해서 결과가 출력되는 것이다. /var/www/bWAPP /sqli_3.php 위치로 가서 소스코를 확인해 보았다. AND 연산자를 사용하는 것이 보인다. AND 연산자는 OR 연산자보다 우선순위가 높기 때문에 AND 연산자를 먼저 계산하고 무조건 참이 결과를 가져오는 ' or 1=1# 쿼리문으로 결과가 출력된다. 무조건 참인 결과를 가져오는 쿼리문으로 'heroes' 테이블에 저장된 아이디를 출력한 것이 neo이다. 만약 'heroes'테이블에 다른아이디도 있다는 전재하라면, 어떤 아이디가 존재하는지, 어떻게 불러올 것인지를

Naver Blog

SQL 인젝션 - Login Form/User

난이도 하 작은 따옴표(')를 입력하여 인젝션 취약점이 있는지 확인해보았다.오류메세지를 출력하고 현 페이지는 MySQL 데이터베이스를 사용하고 있는 것을 확인할 수 있다. 그렇다면 항상 참인 결과를 가져오는 쿼리를 삽입해보았다. ' or 1=1# 오류가 뜨는 것을 확인할 수 있다. 그렇다면, 해당 페이지의 소스를 확인해 볼필요가 있는 것 같다. 해당 소스를 보면 login 값과 password의 값이 같으면 출력되도록 되어 있습니다. 그렇다면 해당 페이지는 POST 메서드를 이용하여 요청하기 때문에 버프스위트를 이용해서 쿠키를 알아내고, sqlmap으로 데이터베이스를 확인해봤습니다. sqlmap 을 이용하여 MySQL에서 사용 중인 데이터베이스를 출력합니다. bWAPP 데이터 베이스가 보입니다. bWAPP 데이터베이스 안의 테이블또한 알아보겠습니다. 아래와 같이 입력하면, 모든 테이블명이 출력되므로 옵션 -D [데이터베이스] 해주겠습니다. heroes 테이블에 컬럼들을 확인해보겠습니

Naver Blog

SQL 인젝션 - SQLite

SQLite ? 클라이언트 응용 프로그램에 임베디드 되어 동작하는 오픈 소스 DBMS의 일종이다. 데이터베이스 전체를 파일 하나에 저장하기 때문에, 파일을 통째로 복사하면 백업이 끝난다. 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다. SQL Injection에 대한 취약점이 존재하는지 작은따옴표(')를 넣어봤지만 , Error가 뜬다. 결과를 항상 참으로 만들고 뒷부분을 주석처리 하는 쿼리 ' or 1=1# ' or 1=1-- ' or 1=1# 넣었을 경우 Error 가 뜨는 것을 알 수 있었다. 그러나 ' or 1-1-- 은 모든 자료들을 읽어 오는 것을 알수 있다. 좀 더 자세한 정보를 알기위해 쿼리문을 입력해준다. 기존의 칼럼수가 일치해야 union 쿼리문을 사용할 수 있다. ' union select all 1,2,3,4,5,6# 칼럼의 수는 6개인 것을 알 수있다. MySQL 처럼 버전이 5.0 이상이면 information_schema를 사용

Naver Blog

네이버 사칭 피싱 메일 - 갈수록 고도화 되고 세밀해진다.

본 뉴스를 보면 보안에 대해 잘 모르시는 분들인 경우 안심하고 해당 피싱 메일을 클릭하여 개인정보탈취 및 금전적이 피해를 가질 수 있다고 생각이든다. 요즘은 본 사이트와 매우 비슷하여 보안에 대해 조금이라도 관심있는분들이라도 쉽게 속을 수도 있다. 이를 예방하기 위해 피싱 메일 구별하는 방법을 몇 가지 정도는 알아야 한다고 생각한다. 1. 생년월일, 사회보장번호, 계좌번호, 로그인 정보를 물었다면 의심해야한다. 업무적인 이메일에서는 묻지 않는다. 2. 어떤 웹사이트로 연결되는 링크를 클릭하도록 요구한다면, 가짜일 확률이 높다. 3. 당신의 이름이 아니라 포괄적인 호칭을 칭했으면 의심해야한다. 대부분의 금융기관은 당신의 이름 정도는 알고있다. 4. 첨부파일이 포함이 되어있다면, 클릭을 우선적으로 하지말고, 발신자를 명확히 파악한 후 실행한다. 5. 이메일 내용에 마우스를 올렸을 때 하이퍼링크가 생긴다면, 피싱이 가능성이 높다. 6. 선물 기프트카트나 비싼 전자제품 등 비싼 무언가르 준

Naver Blog

개인정보보호법 시행령 개정사항

개인정보보호법 개정안은 크게 3가지를 개정사항을 둔다. 1. 개인정보거버넌스 일원화 온라인과 오프라인 모두 사업하는 경우 두법 모두 적용되는 유사 · 복제를 개인정보보호법 관련 규정에 통합 망법에만 있는 규정은 "특례"로 만든다. 2. 데이터 이용 명확화 데이터 이용과 관련한 개인정보 판단기준 보완 개인정보와 관련된 개념 체계 명확하게 함 데이터 결합을 위한 법적 근거 마련 3. 개인정보처리자 책임성 강화 가명정보의 안전한 활용 장치 마련 가명 정보에 대한 처벌 강화 https://www.boannews.com/media/view.asp?idx=87246 개인정보보호법 시행령 입법예고 눈앞! 3가지 개정사항 요약 개인정보보호법 개정안이 국회를 통과한 이후 법률 구체화를 위한 행정입법 등 후속조치들이 진행되고 있으며, 특히 ‘시행령’이 4월 첫 번째 주(3월 말~4월 초) 중에 입법예고될 것으로 알려졌다. 한국인터넷진흥원은 개인정보보호법 시행령과 행정규칙은 물론 가이드와 해설서 역시

Naver Blog

SQL 인젝션 - Stored(Blog)

난이도 하 SQL Injection 취약한지를 파악하기 위해 작은 따옴표(')를 입력해본다. MySQL 데이터베이스를 사용하는 것을 확인할 수 있었고, bee')' 라는 알 수 없는 오류내용이 보인다. '참'으로 만들고 뒷부분은 주석을 붙여 결과를 출력해봤지만 이 또한 오류가 뜨는 것을 확인할 수 있다. 버프스위트를 통해 입력한 값이 어떤 변수로 들어가는지 확인해본 결과 'entry'변수에 들어가는 것을 확인할 수 있다. 이번에는 '123을 입력해봤다. 'bee')' 와 구별하여 '123' 따로 오류메시지를 보여준다. 작은따옴표의 짝이 맞지 않아서 발생하는 오류이다. '123 을 sql 구문을 삽입하여 나온결과를 보면, '123','계정')' 이렇게 하면 짝이 한개 남는 것을 알 수 있다. 추측을 한다면,('사용자입력','계정')의 구문이 데이터베이스에 전달한다고 생각하면 될듯하다. 사용자입력 부분에 test1을 넣은 후, 테이블을 알아보면 된다. test1',(select tabl

Naver Blog

Blind SQL 인젝션

Blind SQL Injection ? 쿼리의 결과를 참과 거짓으로만 출력하는 페이지에서 사용하는 공격이다. 출력 내용이 참과 거짓 밖에 없어서 데이터베 이스의 내용을 추측하여 쿼리를 조작한다. Blind SQL Injection 사용 함수 · Substr · ascii · limit Substr() · 문자열의 일부분을 추출하는 함수 · 문자 하나씩 출력하여 이름을 알아내는데 사용 · PHP 4이상에서 사용할 수 있다. ascii() · 문자를 아스키코드로 변환 · 작은따옴표( ' ) 를 우회하는 변수일 때 문자를 입력하기 위하여 사용 limit() · 문자열의 길이를 반환 · 문자열의 길이를 알아내면 substr 함수로 문자열을 추측하기 쉬워진다.

Naver Blog

Blind Injection - Boolean Based

목적 : 사용자가 입력한 검색어와 일치하는 영화가 데이터베이스에 있는지를 출력한다 난이도 하 작은 따옴표( ' )를 입력하여 SQL인젝션이 가능한지를 알아본다. 오류메시지가 뜨는 것을 확인할 수 있고, 인젝션이 가능하다. 검색란에 결과를 항상 참으로 만드는 쿼리를 넣어본다. ' or 1=1# 'The movie exists in our database! 데이터베이스안에 영화가 존재한다' 이 말은 즉, 참인 결과를 나타낼 때 출력하는 메시지이다. 그렇다면 거짓일 경우 결과 또한 확인해본다. ' or 1=2# 'The movie does not exist in our database! 데이터베이스안에 영화가 존재하지 않는다.' 이 말은 즉, 거짓일때 출력되는 메시지이다. UNION SELECT 구문을 이용하여 컬럼 수를 확인할 수 있다. 앞서 말했듯이, 데이터베이스 안에는 기존쿼리문이 존재하고 데이터베이스 안의 내용을 파악하기 위해서는 SELECT 구문의 2개이상을 결합하는 UNION

Naver Blog

'n번방 회원 신상정보 공개' 스미싱

요즘 이슈가 되고 있는 것이 바로 n번방 박사 '조주빈'의 신상이 공개되고, 사람들은 '조주빈' 뿐만 아니라 다른 공범들의 신상도 밝혀야 된다고 촉각을 세우며 말하고 있다. 이점을 이용해 '신상공개'라는 미끼로 사람들을 유혹하고 있다. 문자를 통해 단축 URL 주소와 함께 악성 앱이 다운이 되는 '스미싱 문자' 이다. 링크를 클릭하면 PinkTv.apk 악드로이드 악성 앱이 다운이 되고, 개인정보 접근권한 및 기기 정보 탈취 권한을 요구하며 해당 앱은 'DroidJack' 이라는 악성 앱을 만드는 서비스를 통해 제작되었다. 'DroidJack'은 악성 앱에 감염된 안드로이드 스마트폰을 원격으로 제어하고 사생활 정보를 탈취하는 자동화된 스마트폰 해킹도구이다. 스미싱 공격 예방을 위한 3대 보안수칙 1. 신뢰할 수 있는 알약M과 같은 모바일 백신 프로그램을 설치하고, 정기적으로 검사 수행 2. 출처가 불분명한 경로를 통한 APK 앱 설치 금지 3. 의심스러운 내용의 문자 메시지에 포함된

Naver Blog

Blind SQL 인젝션 - Time Based

'sqli_15.php 참을 구별하기 위하여 sleep 함수를 사용하여 인젝션을 시도한다.' 페이지는 영화 검색 결과를 이메일로 보내는 기능을 한다. 참 거짓에 상관없이 검색 결과는 모두 동일한 메시지를 출력한다. 난이도 하 SQL Injection이 가능한지 확인하기 위해 작은따옴표( ' ) 를 입력해본다. 전 문제들 같은 경우 데이터베이스 종류를 나타내며 오류메시지를 출력하지만 해당 페이지는 검색결과를 이메일로 보낸다는 결과를 출력한다. 이번에는 인자에 입력한 시간만큼 응답을 지연시키는 sleep()를 사용한다. 그리고, 항상 참으로 만든는 쿼리를 and 연산자로 sleep()를 호출하여 이전 쿼리가 참이면 응답을 지연하게 한다. sleep(정수형 인값) · 입력한 숫자의 초 단위를 응답을 지연 ' or 1=1 and sleep(5)# 응답을 지연할 뿐 참또는 거짓을 구별하지 못하므로 내용을 확인하기 힘들다. 참과 거짓을 판단하기 위해 length() 와 substring()를

Naver Blog

Blind SQL 인젝션 - Web Services/SOAP

sqli_5.php 선택한 영화에 남아 있는 티켓 수를 출력하는 페이지로, 티켓 수 출력에 SOAP을 활용하여 예매 가능한 티켓 수를 사용자에게 보여준다. SOAP ? 애플리케이션 계층의 프로토콜을 전송 계층의 프로토콜로 사용할 수 있게 하는 프로토콜이다. HTTP, HTTPS, SMTP 등을 통하여 XML 기반의 메시지가 네트워크에서 교환된다. 웹 서비스는 네트워크에 있는 정보를 모아 서비스로 제공하므로 SOAP 덕분에 물리적으로 인접하지 않은 서버에 정보를 요청하고 요청에 대한 응답 값을 확인할 수 있다.( Client가 물리적으로 인접하지 않은 서버에게 객체나 함수를 호출하여 그 값을 반환받는 RPC중에 하나입니다.) XML ? Extensible Markup Language 의 약자로, 마크업 언어를 정의하기 위한 언어, 확장이 가능한 언어이다. HTML과 흡사하지만 차이점이 있다면, Tag를 정의할 수 있고, 데이터를 기술할 수 있는 마크업 언어이다. 쉽게말하면, HTML은

Naver Blog

sqlmap을 이용한 공격 시나리오 SQL Injection -GET/Search

sqli_1.php 데이터베이스의 회원의 번호, 아이디, 패스워드 획득 sqlmap을 이용한 데이터 정보를 획득하는 과정이다. burpsuite을 통한 쿠키값을 읽어와야 한다. #sqlmap -u "http://192.168.56.102/bWAPP/sqli_1.php?title=" --cookie="PHPSESSID=ecc56ecf32d6a2eb05e06077adaaadbc; security_level=0" -dbs --current-user, --is-dba, --privilege 옵션을 조합하여 권한을 획득한다. #sqlmap -u "http://192.168.56.102/bWAPP/sqli_1.php?title=" --cookie="PHPSESSID=ecc56ecf32d6a2eb05e06077adaaadbc; security_level=0" --current-user --is-dba --privilege 다음과 같이 root@localhost의 권한을 가지고 있는 것을 확인할

Naver Blog

XML/Xpath 인젝션

XML ? 데이터를 트리 구조의 노드로 표현하며 사용자 정의 로 데이터를 분류한다. Xpath ? 일종의 쿼리로, XML 데이터베이스 내용을 선택하고 조작하기 위하여 사용한다. XML · 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어 · 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다. · 부모 요소는 여러 개의 자식 요소를 가질 수 있다. 하지만 자식 요소는 단 하나의 부모요소만을 가진다. · XML 문서는 HTML문서와 마찬가지로 트리 형태의 계층 구조를 가진다. XML의 트리구조의 예시 <?xml version="1.0" encoding="UTF-8"?> <movies> <action> <id>1</id> <name>matrix</name> </action< 최상위 노드는 'movies' 이며, 하위 노드는 'action'이다 'action' 하위노드는 'id', 'name' 이다. 이렇듯, XML로 사용자

Naver Blog

XML/Xpath Injection - Login Form

xmli_1.php superhero 그룹의 사용자로 로그인하는 기능을 제공한다. superhero 그룹의 사용자 계정정보는 XML 데이터베이스에 저장된다. 난이도 하 작은따옴표( ' ) 를 입력해 XML/XPath 인젝션이 가능한지를 파악한다. 위와 같이 오류가 뜨는데 'XPath' 관련오류 인듯하다. 해당페이지는 로그인페이지로 login과 password가 and 연산자로 호출한다고 추측 및 가정할 수 있다. 그러다면 항상 참인 결과를 가지고 오기 위한 쿼리는 다음과 같다. ' or 1=1 or ' and 연산자가 있다고 가정하면 다음과 같은 쿼리 일것이다. login= 'login 폼' or =1=1 or ' ' and password= 'password 폼' 왜 이게 항상 참인 결과를 가져오는지 하는 사람이 있을 것이다. 우리가 알아야 되는점 과 해석순서는 다음과 같다. and 연산자는 or 연산자보다 우선순위가 높다. login='login 폼' or 1=1 or ' ' a

Naver Blog

키링, 사용자 정보 노출

디지털 지갑 애플리케이션인 키링에서 사용자 정보 유출 사고가 일어났다. 키링에서는 사용자들의 신분증, 면허증, 신용카드, 중요한 데이터 등들의 내용들이 있다고 한다. vpn 멘토에 의하면 AWS S3 버킷의 잘못된 설정으로 인한 데이터들이 노출된 상태라고 한다. 개인정보 노출의 원인은 내부에 있을 가능성이 높다고 생각이든다. 원인으로 따지면 업무담당자의 부주의, 홈페이지 설계 오류, 개인정보보호 의식부족이 원인 아닐까 생각이든다. 이번 사건은 사소한 실수가 대량의 개인정보를 노출시켰다. 사용자들의 개인정보가 남의 것이라 생각하지말고 자신의 것이라고 생각하며, 주의 기울여 한다고 생각한다. https://www.boannews.com/media/view.asp?idx=87453 인기 디지털 지갑 애플리케이션 키링, 수백만 사용자 정보 노출 인기 높은 디지털 지갑 애플리케이션인 키링(Key Ring)에서 사용자 정보 유출 사고가 발생했다고 VPN 보안 업체 vpn멘토(vpnMentor)

Naver Blog

XML/XPath Injection - Search

xmli_2.php 영화를 장르별로 분류하여 영화 제목만 테이블 형태로 출력한다. 난이도 하 'Search' 를 눌러보면 다음과 같이 테이블 형태로 출력이 되고 URL에 변수가 노출되는 것을 보아 GET방식으로 요청하는 것을 확인할 수 있다. 'genre' 변수에 작은따옴표 ( ' ) 를 넣어 SQL인젝션이 가능한지를 확인해보았다. XML 과 관련된 경고내용이 출력이 되고, XML/XPath Injection 공격에 취약점이 있는 것을 확인할 수 있다. /var/www/bWAPP$ vi xmli_2.php 해당 경로에서 소스를 확인해보면 아래를 확인할 수 있다. $result = $xml->xpath("/heroes/hero[contains(genre, '$genre')]/movie"); contains() : 두개의 인자에서 첫번째 인자의 문자열이 두번째 인자의 문자열이 있으면 참, 없으면 거짓으로 처리 예) contains('apple','app') 참 contains('appl

Naver Blog

A2 - 인증 및 세션 관리 취약점

참고 : https://tansfil.tistory.com/58 https://12bme.tistory.com/133 웹 애플리케이션에서는 로그인 하는 대상이 아이디와 비밀번호를 이용하여 사이트에 등록된 사용자가 맞는지 확인하는 인증 절차를 거친다. 다음은 Cookie와 Session을 이용한 인증방식이다. 1. 사용자가 로그인을 한다.(요청) 2. 서버는 사용자로그인의 정보를 읽고, 회원DB와 비교하여 사용자를 확인한다. 3. 사용자의 고유한 ID 값을 부여하여 세션 저장소에 저장한다. 4. 세션저장소는 사용자정보와 연결되는 Session ID값을 발급한다. 5. 서버는 HTTP 헤더에 Session ID 값을 같이 실어 사용자에게 돌려보낸다. 6. 사용자는 세션ID 값을 받아 쿠키에 저장을 하게 됩니다. 사용자가 서버에 요청을 할때마다 이 쿠키를 헤더에 담아서 요청하게 된다. 7. 서버는 세션저장소에 쿠키를 대조,비교를 한다. 8. 세션저장소는 그에 대응하는 정보를 서버에게 전달

Naver Blog

Broken Auth - Insecure Login Forms

ba_insecure_login_1.php 웹 페이지가 안전하지 않은 로그인 형식을 사용하는지 점검한다. 난이도 하 해당 페이지의 개발자도구 (F12) 를 실행한다. 'body'의 'main'을 보면 PAOT 메서드를 이용하여 요청하는 로그인 형식을 찾으면 font color ="white" 인 것을 확인할 수 있다. "white" -> "black"으로 수정해준다. 폼을 확인해보면 글자가 나타는 것을 확인할 수 있다. 다음 나타난 글로 로그인하면 된다. 난이도 중 난이도 중으로 높이면, 다음과 같이 Name칸에 이미 "brucebanner" 가 입력이 되어 있다. "brucebanner"사용자로 로그인하기 위하여 웹 페이지의 취약한 부분을 찾으면 될 듯하다. 개발자 도구(F12)를 통해 소스를 확인 해보았다. 변수명은 passphrase 인 것을 확인할 수있고, Unlock 버튼을 누르면 unlock_secret() 를 호출한다. 비밀번호와 관련된 정보를 더 확인하기 위해 페이지의

Naver Blog

Broken Auth - Password Attacks

출처 및 참고 : https://securitycode.tistory.com/21 해당글의 정의 및 설명은 위 주소를 참고했습니다. ba_pwd_attacks_1.php burp suite 의 Intruder 기능을 사용하여 Password를 알아낸다. Password Attack ? 사용자에 대한 계정 정보를 획득하기 위하여 비밀번호로 입력 가능한 모든 문자 조합을 입력하여 사용자의 계정과 비밀번호가 일치할 때까지 대입하는 공격이다. 난이도 하 Burp suite을 이용하여 공격할려는 페이지의 HTTP 요청을 가로챕니다. 해당 가로챈 페이지에서 "Send to Intruder"를 클릭해줍니다. Send to Intruder : 웹 애플리케이션을 대상으로 사용자 정의 공격을 할수 있는 자동화 도구입니다. 다음은 Intruder -> Target 에 가줍니다. Target : 공격할 대상 서버의 정보를 설정, 공격 수행을 위해 필수로 설정되어 합니다. Send to Intruder 를

Naver Blog

Broken Auth - Weak Passwords

ba_weak_pwd.php 백신 및 방화벽을 꺼놓은 상태에서 FuzzDB을 다운받아야 한다. 경로 :https://github.com/fuzzdb-project/fuzzdb Weak Password ? 비밀번호 사전 대입공격은 무차별 대입 공격과 비슷해 보이지만 비밀번호를 설정하는 사람들이 선호하는 문자열을 대입하는 공격이다. 인증 과정의 암호화가 복잡하여도 사용자가 설정하는 비밀번호가 간단하다면 공격자는 다른 사용자로 쉽게 로그인할 수 있다. 사용자들이 가장 즐겨 쓰는 비밀번호를 마치 사전처럼 기록한 파일에 있는 문자열을 대입하여 공격을 시도한다. -> 공격속도가 무차별 대입공격보다 빠르다./ 단 사전정보가 없으면 실패한다 난이도 하, 중 문자열 데이터베이스를 다운 받기 위해 아래 링크에 가서 다운을 받아준다. https://github.com/fuzzdb-project/fuzzdb 필자는 빠른 실습을 위해서 .txt을 따로 만들어서 실습하였다. 두 변수에 사전 공격을 위하여 '

Naver Blog

HTTPS, 사이버위협이 되고 있다.

HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한 통신 프로토콜이다. 하지만 제목에 적혀있듯이 HTTPS와 SSL이 오히려 위협이 되고 있다. 이는 IT에 관심있는 학생이거나 분야에 종사하시는 분들이라도 잘 모를수도 있다고 생각이든다. 사이버 범죄자, 렛츠인크립트와 같은 조직들이 무료로 인증서를 배포해주기 때문이다. 사이버 공격이 일어나는 것을 파악하기 위해서는 SSL 트래픽의 내용물을 검사를 해야한다. 하지만 프라이버시 문제로 인해 할수 없다고 한다. 또한, 생산성문제이다. 검사를 하기위해서는 복호화를 진행해야하는데 이는 방화벽과 다른 장비들이 속도가 느려질 수 있다고 한다. 한쪽에서는 HTTPS가 그래도 좋으니 널리 사용하자고 하고, 한쪽에서는 프라이버시가 중요하다고 하니 HTTPS 안의 내용물을 볼 방법이 효과적으로 개발되지 않는다고 한다. 아직까지 SSL의 트래픽의 내용중 필요한 부분만 복호화하는 환경이 없습니다. 프라이버시가 중요해서 개발이 되지 않는 점

Naver Blog

Session Mgmt - Administrative Portals

smgmt_admin_portal.php 관리자 권한을 체크하는 전달 값을 수정하여 관리자 인증 없이 내부 페이지에 접근 가능한지 점검한다. 비인가 사용자가 관리자 페이지에 접근하면 심각한 정보 노출이 발생할 수 있기 때문에 인증 프로세스가 꼭 반영되어야 한다. 아래 링크에 인증 및 세션 관리에 대한 자료를 정리해 놨습니다. https://blog.naver.com/ster098/221897137103 A2 - 인증 및 세션 관리 취약점 참고 : https://tansfil.tistory.com/58https://12bme.tistory.com/133웹 애플리케이션에서는 로그인 하는 ... blog.naver.com 난이도 하 난이도 '하'에서는 URL주소에 전달 값을 조작하여 우회합니다. 해당 페이지에 가면 변수 'admin'이 그대로 노출된느 것을 확인할 수 있다. 간단히 변수값을 조작해보았다. 0 -> 1 1로만 바꿧을 뿐인데 잠금을 풀었다는 메시지가 뜬다. 매우 간단한 공격이

Naver Blog

Session Mgmt - Cookies(HttpOnly)

Secure와 Httponly Secure : Secure 쿠키는 HTTPS 프로토콜 상에서 암호화된 요청일 경우에만 전송됩니다. Httponly :HTTPonly쿠키는 XSS 크로스트 사이트 스크립팅 공격을 방지하기 위해 JavaScript의 Documnet.cookie API에 접근할 수 없습니다. (새로운 쿠키들은 Document.cookie를 통해 만들어질 수 있으며, httponly가 없는 경우 쿠키들은 JavaScript에 접글할 수 있습니다. 이는 자바 스크립트에서 이용 가능한 쿠키들은 XSS를 통해 감청될 수 Cookie와 Set-Cookie 헤더 Cookie : 클라이언트 -> 서버 ( Request 패킷) Set-Cookie : 서버 -> 클라이언트 ( Response 패킷) 참고 : https://blog.naver.com/ster098/221897137103 A2 - 인증 및 세션 관리 취약점 참고 : https://tansfil.tistory.com/58htt

Naver Blog

A3 - XSS (Cross-Site Scripting)

참조 : https://www.youtube.com/watch?v=MQlIIcpV_Z4 XSS ( Cross-Site Scripting) 사용자가 요청한 자료를 서버에서 요청한 자료의 스크립트로 응답을 합니다. 즉, 사용자가 브라우저로 해커가 작성한 스크립트를 읽엇을 때 해커의 스크립트가 우리의 브라우저에 해석되는 것이다. 여기의 스크립트를 이용하여 세션 및 쿠키를 탈취하여 서버에서는 해커가 관계자로 해석할 수도 있습니다. 악성코드를 다운 받는 페이지로 접속해 악성코드를 다운받을 수 있다. 해커가 만든 악성사이트에 접속할 수도 있다. 여기서 말한 쿠키란 ? 사용자의 정보를 담고있는 것, 로그인 정보, Session ID 세션ID ? 클라이언트를 각자 구별하기 위한 ID를 말한다. XSS 공격방식 Stored Cross-Site Scripting 악성스크립트를 작성해 웹 서버에 저장한다. 악성 스크립트를 작성해 놓은 서버를 사용자는 읽게되고, 악성 스크립트가 실행되는 것이다. 홈페이지

Naver Blog

XSS - Stored(Blog)

참고 : https://blog.naver.com/ster098/221899246406 https://blog.naver.com/is_king/221613074078 xss_stored_1.php 텍스트 입력 공간에 내용을 입력하고 [submit] 버튼을 클릭하면 그 아래에 있는 테이블에 입력한 내용을 저장한다. 난이도 하 텍스트 입력 공간에 'Succeed' 라는 메시지를 출력하는 스크립트 코드를 입력하고 [Submit]한다. <script>alert("Succeed");</script> 다음은 쿠키값을 경고창을 출력하는 스크립트 코드를 작성한다. <script>alert(document.cookie)</script> 스크립트가 저장이 되어있어서 다른 유저 및 브라우저로 들어와도 경고창이 출력이 된다. 그 외 다른 코드또한 입력해보았다. <iframe src="http://악성코드 다운로드 경로" width=0></iframe> 개발자도구(f12)를 통해 확인해보면 정상적으로 입력

Naver Blog

중국의 APT 공격, 다섯개의 단체

내용 : APT 공격단체가 10여년동안 피해자 네트워크에 공격 기반을 마련해 두었다. 코로나 바이러스가 발생함으로써 재택근무자가 많이 늘어나 온프레미스 환경에서 빠져나가는 현상이 발생했다. 하지만 공격자들의 공격대상인 지적재산은 회사내에 여전히 존재한다. 근무자가 줄어든 만큼 경비병(?)들이 줄어 든 샘이다. 다섯개의 단체는 1) 브론즈 유니온 2)패스CV 3) 캐스퍼 4) 오리지널 윈티 5) 리눅스 해킹 전문으로 하는 WLNXSPLINTER 라고 불린다. 이들은 흩어졌다가 모이기도 하는데 모였을 때 이들을 '윈트'라고 칭한다. 이들이 리눅스 환경을 공격하는 이유는 클라우드 서비스 업체들 사이에서도 리눅스 인기는 대단하다 하지만, 이 환경은 대부분 늘 켜져 있거나 , 늘접속이 가능한 상태이다. 그래서 이들이 이것을 공략하는 것이다. 그런데도 리눅스 보안은 다른 OS보다 관심도가 떨어져서 취약하다고 표현하는 것같다. 이들의 공통점 및 목적: 1) 게임 기업들을 공격하여 코드 서명용 인

Naver Blog

XSS - Stored(Change Secret)

xss_stored_3.php 비밀번호 힌트를 새로 설정하는 기능을 제공한다. 'Succeed'라는 경고창이 출력하는 스크립트를 작성해준다. <script>alert('Succeed');</script> http://192.168.56.102/bWAPP/sqli_16.php (SQL Injection(Login Form/user))경로로 가서 로그인을 하면 스크립트가 실행되어 Succeed 경고창이 출력이 되는 것을 확인할 수 있다. 이번에는 사용자 쿠키값을 경고 창으로 출력하는 스크립트를 작성해서 Change 버튼을 눌러주고 로그인을 해보았다. <script>alert(document.cookie)</script> 해당 페이지는 사용자의 아이디를 웹 페이지 소스 코드에 노출 한다. 웹 개발자 도구 (f12)를 통해 hidden 타입의 login 변수값을 보면 확인할 수 있다. 실제로 사용자 아이디 'bee' 가 소스코드에 노출되는 것을 확인할 수 있다. 변수 값을 다른 사용자 아이

Naver Blog

XSS - Stored(Cookies)

xss_stored_2.php 해당 페이지는 영화를 선택하여 조회를 하면 경고창을 출력하게 해야 한다. 난이도 하 자신이 좋아하는 영화 장르를 선택하고 Like 해줍니다. 그렇다면 내가 좋아하는 장르를 선택했으니 조회를 해보겠습니다. Session Mgmt - Cookies(HTTPOnly) 페이지에서 Cookies를 클릭하면 조회가 가능합니다. movie_genre을 보니 제가 클릭했던 'action'이 보입니다. 다시 해당 문제 페이지에 가서 Edit this Cookies 를 통해 쿠키값을 확인해봤습니다. movie_genre가 보이고 쿠키값이 action인것을 확인할 수 있습니다. 이 점을 보아 저는 몇가지를 알 수 있었습니다. 1. 해당 문제 페이지에서 Like를 누르면 genre파라미터에 전달 (Client -> Server) 2. Server는 파라미터의 값을 저장합니다. (Server) 3. HTTPOnly 에서 조회를 하면 문제페이지의 genre 파라미터 정보값 전달

Naver Blog

XSS - Stored(SQLiteManager)

xss_sqlitemanager.php SQLiteManager 의 XSS 취약점 들어가기 앞써, SQLiteManager가 무엇인지 알 필요가 있을듯 하다. SQLiteManager : SQLite 데이터베이스를 웹 GUI로 관리하기 위한 시스템 해당 페이지를 가면 굵은글씨체 부분이 있다. HINT를 보면 CVE-2012-5105 이다. Search를 통해 어떤 취약점이 있는지 확인해보았다. https://nvd.nist.gov/vuln/detail/CVE-2012-5105 해석하면 , SQLiteManager의 1.2.4 버전에서 XSS 취약점이 있는데, 이 취약점을 통해 원격 공격자들은 main.php 에서 dbsel 파라미터 또는 index.php 에서 nsextt 파라미터와 dbsel 파라미터를 이용해서 웹 스크립트 또는 HTML을 삽입할 수 있다고 한다. 해당 페이지에 들어가보면 다음과 같은 화면이 보인다. 좌측 상단의 'Test'을 클릭하면 다음과 같은 화면이 나온다.

Naver Blog

XSS - Stored(User-Agent)

xss_stored_4.php 접속한 웹 브라우저의 정보가 저장된 'User-Agent' 헤더 값을 테이블 형태로 출력한다. 테이블에는 User-Agent 정보를 최근 접속한 순서대로 3개까지만 출력하는데, 'download'라는 굵은 글씨를 클릭하면 페이지에 접속한 모든 User-Agent의 정보를 새로운 페이지에 출력한다. 해당 페이지를 확인해보면,해당 페이지의 접속한 사용자의 Data, IP Address, User-Agent 정보를 테이블 형태로 확인할 수 있다. User-Agent : 페이지에 접속한 클라이언트의 정보(OS, 브라우저 정보 등) 를 저장하는 헤더 Burp Suite를 통해 해당 페이지의 User-Agent를 확인할 수 있었다. User-Agent에 쿠키값을 출력하는 경고창 스크립트를 삽입해보았다. <script>alert(document.cookie)</script> 다음과 같이 쿠키값을 출력하는 경고창과 함께 최근 접속한 User-Agent 를 출력한다.

Naver Blog

XSS - Reflected(GET,POST)

Reflected Cross-Site Scripting 악성스크립트를 입력해 웹 브라우저에서 실행하는 것이다. 사용자가 입력한 값에 대해 결과가나오는 것을 공략한 것이다. URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격이다. xss_get.php XSS 취약점이 있는지 알아보기 위하여 First name 입력란에 스크립트 코드르 입력한다. 스크립트 코드가 실행되면 'Succeed' 라는 경고창을 출력한다 난이도 하,중 해당 페이지의 URL을 확인해보면 변수되는 것을 확인 할수 있으며,GET 방식의 요청을 하는 것을 확인할 수 있다. Firstname 에 스크립트를 작성하여 경고창을 출력하게 만들었다. <script>alert('Succeed')</script> 아래와 같이 'Succeed'가 출력되는 것을 확인할 수 있다. 해당 유저의 세션ID 값을 출력하는 경고창을 출력하게 하는 스

Naver Blog

XSS - Reflected(JSON)

JSON ? · 클라이언트와 서버가 통신할 때 자료를 표현하는 방법으로 특정 언어에 제한 없이 그대로 사용할 수 있는 장점이 있고, 여러 자료 구조를 JSON으로 표현할 수 있다. · 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준이다. JSON의 구조 1. JSON 데이터는 이름과 값의 쌍으로 이루어집니다. 2. JSON 데이터는 쉼표(,)로 나열됩니다. 3. 객체(object)는 중괄호({})로 둘러쌓아 표현합니다. 4. 배열(array)은 대괄호([])로 둘러쌓아 표현합니다. xss_json.php JSON으로 객체를 선언하는 자바스크립트 코드를 사용하여 검색한 자료를 출력한다. 난이도 하 검색란에 아무 단어를 입력하여 Search를 해보았다. GET 메소를 이용하여 HTTP 요청을 하기 때문에 URL에 변수가 노출되는 것을 확인할 수 있다. 'title'이라는 변수에 이용자가 검색한 단어가 입력된 것을 확인할 수 있다. 개발자도구를 토앟여 소스를 확인해보았다. 스크립트로

Naver Blog

XSS - Reflected(AJAX/JSON)

AJAX ? · HTML,CSS,자바스크립트,DOM,XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법 · 웹 페이지를 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있게 해줍니다. · 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표실할 수 있습니다. JSON ? · 클라이언트와 서버가 통신할 때 자료를 표현하는 방법으로 특정 언어에 제한 없이 그대로 사용할 수 있는 장점이 있고, 여러 자료 구조를 JSON으로 표현할 수 있다. · 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준이다. JSON의 구조 1. JSON 데이터는 이름과 값의 쌍으로 이루어집니다. 2. JSON 데이터는 쉼표(,)로 나열됩니다. 3. 객체(object)는 중괄호({})로 둘러쌓아 표현합니다. 4. 배열(array)은 대괄호([])로 둘러쌓아 표현합니다. xss_ajax_2-1.php AJAX 기능을 활용하여 검색어를 입력하면 해당하는 영화

Naver Blog

XSS - Reflected(AJAX/XML)

AJAX · HTML,CSS,자바스크립트,DOM,XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법 · 웹 페이지를 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있게 해줍니다. · 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표실할 수 있습니다. XML · 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어 · 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다. · 부모 요소는 여러 개의 자식 요소를 가질 수 있다. 하지만 자식 요소는 단 하나의 부모요소만을 가진다. · XML 문서는 HTML문서와 마찬가지로 트리 형태의 계층 구조를 가진다. xss_ajax_1-1.php AJAX 기능을 활용하여 검색어를 입력하면 해당하는 영화가 데이터베이스에 있는지를 확인하고 결과를 바로 출력한다. 난이도 '하' 해당 페이지를 보면 Search 하는 Button 조차

Naver Blog

XSS - Reflected(Back Button)

xss_back_button.php 해당 문제의 페이지는 'Go back' 버튼을 누르면, 이전의 페이지로 되돌아 가게 된다. 경로를 조작하여 경고창을 출력하게 한다. 난이도 '하' 해당 페이지는 'Go back' button 만이 존재하는 페이지이다. 해당 'Go back' button을 누르면 전의 페이지로 돌아가게 된다. Burp Suite을 통해 HTTP 요청을 가로채서 확인해봤다. Burp Suite을 키고 'Go back' 버튼을 누르면 이전 페이지에 대한 URL을 GET요청하는 것을 확인할 수 있다. Referer 을 보면 현재 페이지 URL을 확인할 수있다. HTTP Referer 패킷 : 어떤 페이지를 들어갈 때, 어떤 URL를 통해서 접속하였는지 저장하는 항목 Referer 패킷을 조작하게 되면, 이전 페이지에 대한 정보를 조작이 가능할 것같다. 해당 문제 페이지의 개발자도구(F12)를 통해 소스를 확인해봤다. 'Go back' button을 클릭하면 documen

Naver Blog

XSS - Reflected(Custom Header)

xss_custom_header.php 일부 웹 클라이언트는 사용자 정의 http 요청 헤더를 사용합니다. http 헤더를 조작하여 문제를 푼다. 난이도 '하' 일부 웹 클라이언트는 사용자 정의 http 요청 헤더를 사용합니다. bWAPP 헤더를 사용할 수있도록 되어있는 것같다. Burp Suite을 통해 HTTP 요청을 가로채서 확인해 보았다. 해당 페이지는 'bWAPP' 의 헤더가 존재하지 않는다. 일부 사용자가 정의해서 헤더를 사용한다고 하니, 헤더를 작성하고 test를 넣어보았다. 'test'가 출력되는 것을 확인할 수 있다. 그렇다면 bWAPP 헤더에다가 스크립트를 작성해서 Forward 해주면 될 듯하다. <script>alert(document.cookie)</script> 쿠키를 출력하는 경고창이 뜨는 것을 확인할 수 있다. 난이도 '중' 이번에는 아래와 같은 스크립트를 작성해보았다. <script>alert("Success")</script> Forward를 했지만,

Naver Blog

XSS - Reflected(Eval)

xss_eval.php 해당 페이지는 현재 시간에 대한 정보를 보여주고 있다. 난이도 '하' 해당 페이지를 가졈 시간에 대한 정보를 보여주고 있다. Burp suite을 통해 HTTP 요청을 가로채보았다. date=Date() 을 GET 방식으로 요청을 하고 있다. Forward 를 하여 해당 페이지의 소스를 확인해 보았다. Date() 함수가 없으면 eval("document.write()"); 가 기본형태 인 것같다 Date() 함수대신 경고창을 출력하는 스크립트를 넣으면 될 듯하다. date=alert(document.cookie) 쿠키 정보가 있는 경고창이 출력되는것을 확인할 수 있다. 소스를 확인해보면 아래와 같이 나오는 것을 확인할 수 있다. 하지만 밑에 보면 Date() 함수를 제거했기 때문에 날짜에 대한 정보를 출력해오지 않는다. 좀 더 정확한 정답을 위해서 Date() 함수를 이용하고, 경고창도 출력하게 해보았다. date=Date())");alert(document

Naver Blog

XSS - Reflected(HREF)

xss_href-1.php 이름을 입력하고 'Continue' 버튼을 누르면 'xss_href-2.php' 페이지로 이동하고 영화 목록을 테이블 형태로 출력한다. 'xss_href-2.php' 페이지에서 'Vote' 버튼을 누르면 'xss_href-3.php' 페이지로 이동하고 추천한 영화 제목을 메시지로 출력한다. 난이도 '하' 폼에 작성을 하고 Continue를 눌려본다. 해당 페이지가 나오고 GET방식으로 요청했기 때문에, 변수가 노출되는 것을 확인할 수 있다. xss_href-1.php -> xss_href-2.php 로 이동 된것을 확인할 수 있고, 폼에서 입력한 'ming' 이 name 변수에 변수값으로 들어간 것을 확인할 수 있다. 이점을 보아, xss_href-1.php 의 폼에 넣는 값에 XSS 스크립트를 작성하면 xss_href-2.php 에서 스크립트를 해석할 것이다. 다음과 같이 <script>alert(document.cookie)</script> 를 삽입해

Naver Blog

XSS - Reflected(Login Form)

xss_login.php 해당 페이지는 로그인을 하는 페이지이다. 난이도 '하' 이미 SQL Injetcion에서 다루었던 페이지이다. " ' " 작은따옴표를 입력하여 Injection 이 가능한지 여부를 파악해보았다. 문법이 맞지 않아 오류메시지가 뜨는것을 확인할 수 있다. Mysql DBMS인것을 확인할 수 있고, " " AND password=" " at line1 구조 인듯하다. Burp Suite을 통해 HTTP 요청을 가로채보았다. POST 방식으로 HTTP 요청을 하고있다. 그리고 login, password, form의 변수가 존재하는 것을 알 수 있다. 항상 참의 결과를 가지고오는 구문을 삽입하면 될 듯하다. ' or 1=1# 이를 응용해 경고창을 출력하는 스크립트를 삽입하면 될 듯하다. 처음 오류메시지를 통해 한 줄로 입력하는 것을 우리는 알수 있었다. 한 줄로 입력한다는 것을 " ; " 을 통해 알 수 있다. 따라서 ID와 PW를 입력받는 SQL 구문이 다음과 같

Naver Blog

XSS - phpMyAdmin BBCode Tag xss

CVE-2010-4480 해당 페이지를 가면 HINT : CVE-2010-4480 로 굵은 글씨체 처럼 링크로 되어있다. 하지만 클릭할시, 사이트에 연결이 안된다. CVE-2010-4480 취약점이 무엇인지 검색을 해보았다. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4480) 번역 : phpMyAdmin 3.3.8.1과 3.4.0-beta1 이전 버전의 error.php에서 원격 공격자가 "@" 문자가 포함된("[a@url@page]") BBcode 태그 작성을 통해 XSS 공격을 수행할 수 있다. 아래와 같이 URL에 [비박스 주소]/phpmyadmin/error.php 로 접속해준다. 변수 error 에다가 아무 값을 입려해보았다. error 변수에 입력한 값이 출력되는 것을 확인해보았다. 그렇다면 이제는 취약점에서 확인할수 있는 [a@url@page]구문을 삽입해보았다. 위와 같이 click을 누르면 해당 경로로 이동이

Naver Blog

XSS - Reflected(PHP-SELF)

xss_self.php 폼 태그를 작성하여 go를 누르면 문자열이 출력된다. 폼을 작성하고 'Go' 버튼을 누르면 아래와 같이 출력이 된다. 이 점을 보아 First name과 Last name에 대해 다 출력하는 것을 확인할 수 있다. First name 이나 Last name에 스크립트를 작성하면 스크립트가 해석될 것 같다. First name에 <script>alert(document.cookie)</script> 를 삽입하고 Go를 했다. 경고창이 뜨고 Lastname에 입력했던 min은 그대로 출력되는 것을 확인할 수 있다. Lastname 에 스크립트를 작성해도 똑같이 경고창을 출력할 수 있었다. 이번에는 URL에 있는 폼 태그를 강제적으로 닫아서 스크립트 코드를 URL에 삽입해보았다. (현재 페이지는 PHP_SELF속성으로 URL을 폼 태그로 입력받고 있기 때문에 경고창을 출력하는 스크립트 코드를 URL에 입력한다.) 강제로 닫기 위해 ' "/> ' 삽입 후 뒤에 스크립

Naver Blog

XSS - Reflected(Referer)

xss_referer.php HTTP 요청 헤더 Referer : 바로 직전에 머물었던 웹 링크 주소, 사용자가 어떤 링크를 통해 페이지에 접속했는지 저장하는 헤더 User-Agent : 클라이언트 소프트웨어(브라우저, OS) 명칭 및 버전 정보 난이도 '하', '중' Referer 과 User-Agent 헤더는 변조되거나 없어도 응답패킷에 대해 영향을 주지 않는다. 다만, 지금 해당 페이지는 헤더의 값을 페이지 상에서 출력해주기 때문에, 헤더값을 조작하여 xss공격 수행할 수 있다. Referer 해당 주소 뒤에 <script>alert(document.cookie)</script> 를삽입해주었다. 공격이 성공적으로 삽입되어 경고창을 출력하는 것을 확인할 수 있다. 난이도 '중'도 똑같이 스크립트가 삽입이 가능했다. 난이도 '상' 난이도'하''중'과 똑같이 스크립트를 삽입해보면 문자열 그대로 출력되는 것을 확인할 수 있다. 대응방안 ( 경로 : xss_referer.php) 소스코

Naver Blog

XSS - Reflected(User-Agent)

xss_user_agent.php HTTP 요청 헤더 Referer : 바로 직전에 머물었던 웹 링크 주소, 사용자가 어떤 링크를 통해 페이지에 접속했는지 저장하는 헤더 User-Agent : 클라이언트 소프트웨어(브라우저, OS) 명칭 및 버전 정보 난이도 '하', '중' Referer 과 User-Agent 헤더는 변조되거나 없어도 응답패킷에 대해 영향을 주지 않는다. 다만, 지금 해당 페이지는 헤더의 값을 페이지 상에서 출력해주기 때문에, 헤더값을 조작하여 xss공격 수행할 수 있다. Burp suite을 통해 확인해보았다. User-Agent헤더의 뒷 부분에 <script>alert(document.cookie)</script>를 삽입해보았다. Forward를 하면 정상적으로 경고창이 출력되는 것을 확인할 수 있다. 난이도 '중'도 똑같이 취약점이 있는 것을 확인할 수 있다. 난이도 '상' 난이도 '하' '중' 에서 사용했던 스크립트를 삽입해보면 문자열 그대로 출력되는 것을

Naver Blog

XSS-game/Level 1: Hello, world of XSS

해당 사이트는 크로스사이트스크립팅(Cross Site Scripting) 워게임 사이트입니다. https://xss-game.appspot.com/ XSS game Warning: You are entering the XSS game area Welcome, recruit! Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn t... xss-game.appspot.com 해당 페이지를 가게되면 다음 같은 화면을 확인할 수 있습니다. 어서 오십시오, 신병! 크로스사이트 스크립팅(XSS) 버그는 웹 애플리케이션에서 가장 흔하고 위험한 유형의 취약

Naver Blog

XSS-game/level 2: Persistence is key

https://xss-game.appspot.com/level2 미션 설명 웹 애플리케이션은 종종 사용자 데이터를 서버측 데이터베이스에 보관하고, 점점 나아가 데이터를 클라이언트측 데이터베이스에 보관하고 나중에 사용자에게 표시한다. 이런 사용자 통제 데이터가 어디서 나오든 신중하게 다뤄져야 한다. 이 수준은 복잡한 앱에서 XSS 버그를 얼마나 쉽게 도입할 수 있는지를 보여준다. 미션 목표 스크립트를 주입하여 응용 프로그램의 목록 ()에서 알림을 팝업하십시오. 참고: 애플리케이션은 게시물을 저장하므로 코드를 몰래 입력하여 경고를 실행하면 다시 로드할 때마다 이 레벨이 해결된다. 일반 문자로 'hello'을 입력했을 때는, 출력이되는 것을 확인할 수있습니다. 하지만, <script></script> 구문을 입력하면 아무런 입력이 안되는 것을 확인할 수 있습니다. XSS를 방지하기 위해 필터링을 하는 것 같습니다. <img> 태그와 'onError' 속성을 사용해봤습니다. 이미지 태그에서

Naver Blog

XSS-game/Level 3: That sinking feeling...

https://xss-game.appspot.com/level3 미션 설명 이전 레벨에서 보셨듯이, 일반적인 JS 기능은 실행 싱크로 브라우저가 입력에 나타나는 스크립트를 실행하게 한다는 것을 의미한다. 때때로 이러한 사실은 후드 아래에 이러한 기능 중 하나를 사용하는 상위 레벨 API에 의해 숨겨진다. 이 레벨의 어플리케이션은 그러한 숨겨진 sink를 사용하고 있다. 미션 목표 이전과 같이 스크립트를 주입하여 앱에서 JavaScript 알림()을 팝업하십시오. 어플리케이션의 어느 곳에도 페이로드(payload)를 입력할 수 없으므로, 아래의 URL 표시줄에서 주소를 수동으로 편집해야 한다. 해당 문제 페이지를 보면 Image1,2,3 을 클릭할 때마다 url의 frame#(숫자) 변경되는 것을 확인할 수 있다. 다음문제를 풀기 위해 소스를 확인해보았다. 이미지 태그를 이용하는 방법인 것같다. 해당경로(/static/level3/cloud) + num.jpg'를 사용하고 있다. 그렇

Naver Blog

XSS-game/Level 4: Context matters

https://xss-game.appspot.com/level4 미션 설명 사용자 제공 데이터의 모든 비트는 해당 데이터가 나타날 페이지의 컨텍스트에 대해 올바르게 이스케이프해야 한다. 이 수준은 그 이유를 보여준다. 미션 목표 애플리케이션에 JavaScript 경고()를 팝업하는 스크립트를 주입하십시오. 해당 문제의 페이지에서 폼에 입력된 값을 'Create timer' button 을 누르면 아래와 같이 경고창이 뜨고 폼에 입력한 값이 변수 'timer'의 값에 들어가게 되는 것을 확인할 수 있습니다. 'timer' 변수를 조작하면 XSS공격이 될 것같습니다. 해당 페이지의 소스를 확인해봤습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <!doctype html> <html> <head> <!-- Internal game scripts/styles, mostly boring stuff --> <scri

Naver Blog

XSS-game/Level 5: Breaking protocol

https://xss-game.appspot.com/level5 미션 설명 사이트 간 스크립팅은 단순히 데이터를 올바르게 이스케이프하는 것이 아니다. 때때로 공격자들은 새로운 요소들을 DOM에 주입하지 않고도 나쁜 일을 할 수 있다. 미션 목표 스크립트를 주입하여 응용 프로그램의 alert()에서 알림을 팝업하십시오. 첫 페이지이다. "Sign up" 이 링크되어 있는 것을 확인할 수 있다. 다음은 'Sing up' 을 누르면,url에 변수 next 가 노출되고, 변수 값으로 confirm이 들어가 있는 것을 보아, GET 방식으로 HTTP 요청하는 것을 확인할 수 있다. Next 를누르면 URL 이 confirm 으로 바뀌고 몇 초후 첫 페이지로 되돌아간다. 자세히 문제의 페이지가 어떻게 돌아가느지 소스를 확인해보았다. confirm.htmllevel.pysignup.htmlwelcome.html <!doctype html> <html> <head> <!-- Internal gam

Naver Blog

XSS-game/Level 6: Follow the

https://xss-game.appspot.com/level6 Oops! Based on your browser cookies it seems like you haven't passed the previous level of the game. Please go back to the previous level and complete the challenge. xss-game.appspot.com 미션 설명 복잡한 웹 응용 프로그램에는 URL 매개변수의 값 또는 일부의 값에 따라 Javascript 라이브러리를 동적으로 로드할 수 있는 location.hash 기능있습니다. 스크립트를 비롯한 잠재적으로 위험한 유형의 XMLHttpRequest 데이터를 로드할 때마다 심각한 취약점을 초래할 수 있수 있기에 사용자 입력이 url에 영향을 미치도록 허용하는 것은 매우 까다로운 작업입니다. 미션 목표 응용 프로그램이 외부 파일을 요청하도록 하여 alert()를 실행하도록 하시오. 아래와 같이

Naver Blog

웹 해킹 - 대응방법, 필터링 함수

addslashes() DB 작업을 하는데 있어서 쿼리를합 작성하게 되는데, 작은따옴표( ' ), 큰 따옴표( " ), 백슬래시( \ ), NULL Byte를 문자열을 구분하는 등의 기준으로 이용하게 됩니다. 그러나 문자열안에 따옴표가 들어가게 되면 오류가발생하게 됩니다. 예를들어 I'm ming를 쿼리를 날리게되면 'i'm ming'으로 날리게 됩니다. 나는 i와 m사이에있는 따옴표를 표현하고 싶은데 오류가 뜬다. 이럴 때 필요한게 addslashes(), stripslashes()입니다 addslashes() 같은 경우 쿼리안의 따옴표를 이스케이프 (\)로처리 하여 DB에 저장됩니다. (I\'m ming) 작은따옴표( ' ), 큰 따옴표( ' ), 백슬래시( \ ), NULL Byte 가 존재할 경우 앞에 백슬래시( \ )를 붙혀 특수문자가 아닌 일반문자로 해석하게 하여 쿼리조작을 막을 수 있습니다. stripshlashes() addslashes() 함수에서의 I\'m ming

Naver Blog

조주빈 n번방 사건, 텔레그램 메신저 말고 4종?

올해 텔레그램 n번방 사건으로 이슈다. 조주빈말고도 다른 공범들이 다른 메신져 앱을 사용했다는 조사결과가 나왔다. n번방 사건으로 텔레그램 등 4종에 대해 관심도가 높아졌다. · 텔레그램 · 디스코드 · 위커 · 와이어 사건의 발달은, 대규모 다크웹 시장을 폐쇄하면서 다크웹 회원들이 온라인으로 오면서 텔래그램과 같은 채팅 앱을 범죄로 사용하기 시작한 것이다. 메신저 앱들은 대부분 강력한 암호화기술로 인해 다크웹 회원들에게 있어서 불법 거래 및 악의적으로 사용하는데에 있어서 최적화되어 있다. 최근들어서 많이 사용하는 메신져 앱인 디스코드(Discord)또한 그렇다고 한다. 디스코드(Discord)는 보이스채팅, 자료 공유 에대해서도 유용했지만, 배틀그라운드, 오버워치 등 게임 유저들이 사용하기에 최적화 되어 있어서 더욱 유명해졌다. 게임 메신져 앱답게 게임 버그, 핵 등이 거래되는데 사용되었고, 더욱 발전에 나중에는 음란물 거래까지 이뤄졌다고 한다. 이러한 앱들의 트래픽중 의심이 가는

Naver Blog

A4 - 취약한 직접 객체 참조(DOR)

참조 : https://vmilsh.tistory.com/274 https://goitgo.tistory.com/52 A4 - 취약한 직접 객체 참조 · 파일, 디렉토리, 데이터베이스 키와 같은 내부적으로 처리되는 오브젝트가 노출되는 경우 다운로드 취약점 등을 이용하여 시스템 파일에 접근하는 취약점 등을 의미한다. · 접근통제에 의한 확인이나 다른 보호가 없다면, 공격자는 이 참조를 권한 없는 데이터에 접근하기 위해 조작 할 수 있다. 공격방법 · 주로 파일, 데이터베이스 키, URL에 노출된 세션 아이디를 통하여 조작이 가능하며, 접근 제어나 검증 절차가 없으면 공격자는 허가 없이 객체 참조를 조작하여 데이터를 접근할 수 있다. 대응방안 · 사용자 혹은 세션 당 간접 객체 참조를 사용한다. 이를 통해 공격자가 허가되지 않은 자원을 집적적으로 공격 목표로 삼는 것을 방지 할 수 있다. · 신뢰할 수 없는 소스로부터 직접 객체 참조가 사용되면, 각각의 사용에 대해 요청한 객체가 사용자

Naver Blog

Insecure DOR (Change Secret)

insecure_direct_object_ref.1php 접속한 사용자의 비밀번호 힌트를 변경하는 기능을 제공한다. 난이도 하 개발자 도구(F12)를 통해 소스를 확인해보면 login를 hidden 타입으로 정의하고 있고, 변수 값으로 bee로 되어 있는 것을 확인할 수 있다. <input type="hidden"> : 사용자에게는 보이지 않는 숨겨진 입력 필드를 정의합니다. 이해가 안 가실까봐 밑에 그림으로 설명하겠습니다. 마우스 커서를 갓다대면 해당 필드의 소스를 확인할 수 있습니다. 첫번째 사진은 폼에 대한 소스입니다. 두번째는 Change button에 대한 소스를 확인할 수 있습니다. 이처럼 사용자에게 보이지 않는 것을 hidden type으로 정의하고 있습니다. 아래와 같이 login변수 값을 임의의 아이디 'test' 로 변경해줍니다. "New secret" 폼에 아무 입력값을 넣고 "Change" Button을 눌러줍니다. 그리고 페이지 "sqli_16.php" (SQ

Naver Blog

Insecure DOR (Reset Secret)

insecure_direct_object_ref_3.php 접속한 사용자의 비밀번호 힌트를 'Any bugs?'로 초기화하는 기능을 제공한다. 난이도 하 다음과 같은 화면이 주어진다. 'Any bugs?' button을 누르면 아무런 반응이 없는 것을 알수 있다. 개발자 도구(F12)를 통해 소스를 확인해보았다. 'Any bugs?'에 대한 소스를 확인해보면 ResetSecret() 함수를 호출하는 것을 확인할 수 있다. Ctrl+F 기능을 통해 ResetSecret()함수를 찾아보면 무슨 역할을 하는지 파악할 수 있었다. 빨간 박스가 의심이 간다. <reset><login>bee</login><secret>Any bugs?<secret></reset>" *<reset> : 상기 어레이의 첫 번째 요소 내부 포인터를 이동한다. <login>bee</login> : 사용자 로그인에 대한 정보 <secret>Any bugs?<secret> : 사용자에 대한 힌트(secret) 을담고 있

Naver Blog

Insecure DOR (Order Tickets)

insecure_direct_object_ref_2php 티켓을 주문하는 기능을 제공한다. 난이도 하 'hidden' 타입으로 ticket_price변수가 정의 되어 있는것을 확인할 수 있다. 변수 값이 15를 1로 바꿔보았다. 150 ticket을 작성을 하고 Confirm 을 하면 150EUR 로 뜨는 것을 확인할 수 있다. 대응방안 난이도 '중' '상' 에서는 티겟 가격을 조작할 수 있는 변수가 존재하지 않는 것을 확인할 수 있다. 하지만 Burp Suite 을 통해 http 요청을 가로챈 후 변수 "ticket_price"를 생성하면 된다. 티켓 1개의 값이 1유로인 것을 확인할 수 있다. 난이도 상 난이도 '하' '중' 에서 사용했던 방법들을 사용해봤지만 난이도 '상' 에서는 티켓 값을 조작할 수가 없었다. 해당 페이지의 소스를 확인해봤다. ( 경로 : insecure_direct_object_ref.2php) security_level=0 (난이도 '하' ) 일 때는 ti

Naver Blog

A5 - Security Misconfiguration/ Insecure WebDAV Configuration

A5 - Security Misconfiguration/ Insecure WebDAV Configuration 안전하지 않은 WebDAV 설정 WebDAV · 원격적으로 웹 서버를 제어할 수 있는 HTTP 프로토콜의 확장 기능 · WebDAV가 보안 설정이 되어 있지 않으면 공격자는 이 확장 기능을 이용하여 악성 스크립트가 포함된 파일을 업로드해서 시스템에 침투 가능 · 기존에 있는 파일을 수정하여 악의적인 행위도 할 수 있다. · 몇몇의 서비스에서 PUT 메소드를 허용하고 있어 악성 웹셸이 업로드 되는 경우가 있다. · WebDAV 프로토콜의 가장 중요한 기능에는 만든이나 수정 날짜에 대한 속성 관리,이름 공간 관리, 정보 수집, 덮어쓰기 보호를 포함한다. 속성 관리에는 파일 정보의 작성, 제거, 조회 등을 포함한다. sm_webdav.php 난이도 하 /webdav 디렉터리에 접근하면 'Index of' 보안 설정이 되지 않은 상태에서 다양한 문서를 확인할 수 있다. 비박스 서버

Naver Blog

A5 - Security Misconfiguration/ Robots File

Security Misconfiguration (보안 설정 오류) 훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있다. 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지되어야 한다. 또한 소프트웨어는 최신의 상태로 유지해야 한다. robots.txt 파일은 페이지에 대한 접근 권한을 설정하는 파일로, 웹 크롤러의 접근 범위를 설정할 수 있다. robots.txt 파일이 외부에 노출되는 경우 페이지에 대한 접근 권한 자체가 노출된다. User-agent : * : 모든 검색 엔진 User-agent : googlebot : 구글 검색 엔진 Allow : / : 모든 디렉터리 접근 허용 Disallow : abc.ini : 'abc.ini' 파일 검색 차단 Disallow : /admin/ : 'admin' 디렉터리 접근 차단 Disallow : 모든 디렉터리 접

Naver Blog

A6 - Sensitive Data Exposure (민감 데이터 노출)

A6 - Sensitive Data Exposure (민감 데이터 노출) 많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수 있다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호조치를 취해야 한다. 민감 데이터 노출은 클라이언트와 서버가 통신할 때 암호화 프로토콜(SSL) 을 사용하여 중요한 정보를 보호하지 않을 때 발생하는 취약점이다. · 사용자가 민감한 정보를 입력할 때 암호화 저장이 이루어지지 않으면 공격자가 중간에서 정보를 탈취할 수 있다. · 데이터 처리와 암호화 저장이 클라이언트에서 이루어질 경우에도 공격자는 클라이언트 PC를 장악하여 탈취할 수 있다. 대응방법 · 인증 정보와 같은 민감한 정보 전송시 암호화 프로토콜을 이용하여 암호화해서 전

Naver Blog

A6 - Sensitive Data Exposure/ Base64 Encoding (Secret)

Base64 · 8bit의 이진 데이터를 일종의 64진수 문자셋을 변환하는 인코딩 기법이다. · 이진 데이터를 6bit씩 표현한다. · Base64는 다른 이진 데이터 변환 규칙과 관계 없이 아스키코드만으로 데이터를 인코딩하므로 플랫폼 제한 없이 사용할 수 있다. · 이진 데이터가 6bit씩 나누어지지 않을 때는 패딩 문자를 자동으로 붙여 6bit씩 채운다. insecure_crypt_storage_3.php 쿠키 값에 비밀번호 힌트를 포함한다. 난이도 하 쿠키 값에 비밀번호가 인코딩되어 있다고 한다. 'EditThisCookie' 를 통해 쉽게 secret 변수에 대한 인코딩된 값을 확인할 수 있다. 이 값을 복사해서 base64로 디코딩해주면 된다. https://www.base64decode.org/ 'EditThisCookie' 가 없을 경우 Burp Suite 을 통해 HTTP 요청을 가로채서 확인할 수 있다. 난이도 중 난이도 '하' 와는 달리 값이 다른 것을 확인할 수

Naver Blog

A6 - Sensitive Data Exposure/ Clear Text HTTP (Credentials)

insuff_transp_layer_protect_1.php 칼리 리눅스에서 스니핑 도구인 Ettercap 또는 WireShark 프로그램으로 SSL을 사용하지 않은 통신에서 평문 데이터가 ARP 스푸핑 공격을 통하여 노출되는 것을 확인해 보자 해당 문제 페이지를 가게되면 일반 로그인폼인 것을 확인할 수 있다. 칼리리눅스를 접속한 후 사용자의 패킷을 보기 위해 'Wireshark' 프로그램으로 스니핑을 할 것이다. WireShark 을 실행하기 위해 아래 명령어를 입력해준다. HTTP 프로토콜을 통한 통신하기 대문에 Search 창에 http protocol 이라고 치면 쉽게 찾을 수 있다. 아니면 해당 패킷에 우클릭을 하여 HTTP Stream을 통해 파악할 수 있다. 평문으로 노출되는 것을 확인할 수 있다. 대응방안 다음경로에서 소스를 확인해보았다. ( 경로 : insuff_transp_layer_protect_1.php) security_level = 0 ( 난이도 '하') $

Naver Blog

A6 - Sensitive Data Exposure/ Heartbleed Vulnerability

(아래 문제 풀이도 포함되어 있습니다.) Heartbleed HeartBleed 취약점은 OpenSSL 라이브러리의 구조적인 취약점입니다. OpenSSL의 확장규격 중 하나인 HeartBeat는 서버와 클라이언트 사이에 무슨 문제는 없는지 또는 안정적인 연결을 유지하기 위한 목적으로 일정 신호를 주고 받을 때 사용하는 확장규격입니다. 클라이언트는 HeartBeat 확장프로토콜을 이용하여 임의의 정보를 그 정보의 길이와 함께 서버에 전송합니다. 그 후 서버는 전달받은 정보를 다시 클라이언트에 전달해 주는 과정을 통해 자신의 존재 사실을 알려줍니다. 이 때 클라이언트로부터 전달받은 정보와 그 정보의 길이가 일치하지 않는다면, 클라이언트의 요청에 서버는 응답을 하지 않는 것이 정상적인 동작입니다. 이번에 발견된 HeartBleed 취약점은 서버가 클라이언트로부터 전달받은 정보의 내용과 그 정보의 길이의 일치 여부를 검증하지 않은 채 정보를 보내주면서 문제가 발생된 것입니다. 그림1. 정상

Naver Blog

A6 - Sensitive Data Exposure/ HTML5 Web Storage (Secret)

웹은 비연결지향성이기 때문에, 웹 서버는 클라이언트 컴퓨터의 상태를 기억하지 못합니다. 그래서 '쿠키'에서 정보를 저장되어서 사용됩니다. 하지만 매번 자신의 정보('쿠키')를 HTTP 요청 헤더에 실어서 보내야 한다는 단점이 있습니다. 이는 곧 트래픽 낭비를 불러오고, 보안에 대한 취약점을 드러냅니다. (세션하이재킹 등) 이러한 '쿠키'의 단점을 보안하여 나온 것이 HTML5에서의 웹 스토리지(Web Storage) 이다. 웹 스토리지(Web Storage)는 서버가 아닌, 클라이언트에 데이터를 저장할 수 있도록 지원하는 HTML5의 새로운 기능이다. 쿠키와는 다르게 서버와의 통신과정에서 매번 쿠키를 전송하지 않기 때문에 안전하다. 다만, 클라이언트에서 정보를 수정할수 있어서 XSS 수정이 가능하다는 취약점이 있다. insecure_crypt_storage_1.php 사용자의 정보가 web stroage에 저장되어 있다. 다른 사용자가 정보를 확인할 수 있는지 확인해본다. 난이도 '

Naver Blog

A6 - Sensitive Data Exposure/ Text Files (Accounts)

insecure_crypt_storage_2.php 입력한 사용자의 계정 정보를 텍스트 파일로 웹 서버에 저장하고 사용자가 계정 정보가 저장된 파일을 다운로드하는 기능을 제공한다. 난이도 '하' 아래와 같이 로그인에 성공을 하면 Download 링크, Delete 링크가 출력되는 것을 확인할 수 있다. Download 링크를 클릭하여 다음 페이지에 이동을 하게되면 아래와 같이 사용자의 정보가 그대로 노출되는 것을 확이날 수 있다. 난이도 '중' 똑같은 방법으로 로그인을 하면 된다. 이번에는 password 부분이 암호화 된 것을 확인할 수 있다. 위의 암호화된 값을 복호화 해보았다. https://crackstation.net/ 위와 같이 SHA-1 해시함수로 암호화하고 복호화 한 값이 bug 인 것을 확인할 수 있다. 난이도 '상' 난이도 '하' '중' 에서 적용했듯이 로그인을 하고 Download 링크를 클릭하면 아래와 같이 뜬다. 이번에도 복호화 사이트에서 적용해봤지만 복호화가

Naver Blog

A7 - Missing Function Level Access Control (기능 수준의 접근 통제 누락)

Missing Function Level Access Control (기능 수준의 접근 통제 누락) Missing Function Level Access Control (기능 수준의 접근 통제 누락) 은 2013년 기준 OWASP 기준 TOP10의 A7로 되어 있다. 2017년 OWASP 발표한 자료에 따르면 Insecure Direct Object References(객체직접참조) 와 통합이되어 TOP10의 A4이다. 대부분의 웹 애플리케이션은 UI에 해당 기능을 보이게 하기 전에 기능 수준의 접근권한을 확인한다. 그러나, 애플리케이션은 각 기능에 접근하는 서버에 동일한 접근통제 검사를 수행한다. 요청에 대해 적절히 확인하지 않을 경우 공격자는 적절한 권한 없이 기능에 접근하기 위한 요청을 위조할 수 있다. 대표적으로 파일 다운로드, 업로드 취약점 을 이용하여 웹 서버에 접근하는 공격유형이 있다.

Naver Blog

A7 - Missing Function Level Access Control/ Directory Traversal - Directories

경로 탐색 취약점(Directory Traversal) 파일 다운로드 취약점과 같은 뜻으로 사용한다. 경로 탐색 취약점으로 불리는 이유는 상대경로나 기본으로 설정된 파일명, 디레터리명을 통하여 관리자가 접근을 허용하지 않은 디렉터리나 파일에 접근하기 때문이다. 경로 탐색 취약점이 있는 경우 공격자는 시스템과 데이터 베이스의 정보를 수집할 수 있다. directory_traversal_2.php HTTP 연결 요청에 GET 메소드를 사용하기 때문에 URL에 변수를 노출한다. 디렉터리 난이도'하' 문제의 페이지를 들어가기 전에 beebox 에서 어떻게 Directory Traversal 이 적용되는 것인지 보겠습니다. /var/www/bWAPP$ cd ../../ 를 해주면 하위경로 밑에 하위경로로 가는 것을 확인할 수 있습니다. ls ../../../ 하면 최상위 경로의 디렉터리 및 파일들을 확인할 수 있습니다. ls ../../../../../../ .... 계속해도 최상위 경로로

Naver Blog

A7 - Missing Function Level Access Control/ Directory Traversal - Files

https://blog.naver.com/ster098/221914802924 - 이전 실습 이번 페이지에서는 directory 변수로 접근하지 못했던 passwd 경로에 접근을 해보겠습니다. directory_traversal_1.php 경로 탐색 취약점으로 시스템의 파일을 확인한다. 이전 페이지에서는 directory 변수로 URL에 노출하고 있었다. 하지만 현제 문제 페이지에서는 page 라는 변수가 노출되고 있는 것을 확인할 수 있다. directory 변수로는 접근하지 못했던 passwd 경로로 접근해보았습니다. http://192.168.56.102/bWAPP/directory_traversal_1.php?page=../../../../etc/passwd 정상적으로 출력되고 있는 것을 확인할 수 있습니다. passwd 는 비박스 서버에 접근할 수 있는 아이디와 접근 권한 등을 기록한 파일입니다. 이 점을 보아 파일이 저장된 디렉터리와 파일명을 정확히 알고 있다면 원하는 데

Naver Blog

A7 - Missing Function Level Access Control/ Remote & Local File Inclusion (RFI/LFI)

File Inclustion · 악의적인 코드가 입력된 파일을 사용자가 서버에서 열람하는 공격이다. Remote & Local File Inclusion (RFI/LFI) · RFI : 외부 서버에 있는 악의적인 파일을 이용하여 내부 서버에 있는 정보를 획득하는 방식 · LFI : 내부 서버 자체적인 취약점을 이용하여 내부 서버에 있는 정보를 획득하는 방식 rlfi.php RFI/ LFI 취약점을 이용하여 서버안에 있는 정보를 획득한다. 난이도 '하' *LFI 방식 아래 사진들을 보면 language 변수가 각 select 요소 마다 변수값이 달라지는 것을 확인할 수 있다. 이전 페이지에서 봤던 Directory Traversal 취약점을 이용할 수 있을 것같다. language=../../../../etc/passwd 위의 사진처럼 서버의 정보가 노출되는 것을 확인할 수 있다. 이 방법이 내부에서의 취약점을 이용한 LFI 방식 이다. *RFI 방식 insecure.crypt_sto

Naver Blog

A7 - Missing Function Level Access Control/ Restrict Device Access(디바이스 접근 제한)

서비스가 웹과 모바일 페이지로 구분되면서 개발할 때 웹 사용자 브라우저에서 모바일 페이지로 접근을 제한한다. 이는 보안 측면에서 보면 PC단말에서 데이터를 조작하는 행위를 방어하기 위해서다. restrict_device_access.php 모바일이나 태블릿 등의 모바일 기기로 접속하여야 내용을 출력한다. 따라서 PC로 접근하면 모바일이 아니라는 경고 메시지를 출력한다. 난이도 '하' User-Agent 헤더를 이용한 우회방법 User-Agent : 페이지에 접속한 클라이언트의 정보(OS, 브라우저 정보 등) 를 저장하는 헤더 'User Agent Switcher'는 사용자의 기기 정보를 변경하여 서버에 오쳥하는 부가 기능으로, 주로 PC에서 보이지 않는 모바일 페이지르 보기 위하여 사용한다. User-Agent Switcher for Chrome Spoofs & Mimics User-Agent strings. chrome.google.com 해당 사이트에 들어가서 Chrome에 추가

Naver Blog

A7 - Missing Function Level Access Control/ Server Side Request Forgery (SSRF) - RFI

SSRF(Server Side Request Forgery) 서버 측 요청 변조 공격자가 요청을 변조하여 취약한 서버가 내부 망에 악의적인 요청을 보내게 하는 취약점이다. 서버 측 요청 번조의 유형 1. RFI를 사용하여 포트를 스캔 2. XXE(XML External Entity)를 사용하여 내부 망 자원에 접근 3. XXS(XML External Entity)를 통하여 스마트 TV를 해킹 ssrf.php - rlfi.php 첫번째 방법인 RFI로 비박스 섭의 포트를 스캐닝하는 방법 RFI에서 사용할 PHP 코드는 비박스 가상환경에서 '/var/www/evil' 디렉터리에 있습니다. 이번 페이지에서는 RFI로 비박스 섭의 포트를 스캐닝 하기 위해 rlfi.php 페이지에서 실습을 합니다. RFI에서 사용할 PHP 코드는 비박스 가상환경에서 '/var/www/evil' 디렉터리에 있습니다. 'ssrf-1.php'는 포트 스캐닝 후 그 결과를 출력하는 PHP 코드입니다. PHP 코드가

Naver Blog

A7 - Missing Function Level Access Control/ Server Side Request Forgery (SSRF) - XXE

SSRF(Server Side Request Forgery) 서버 측 요청 변조 공격자가 요청을 변조하여 취약한 서버가 내부 망에 악의적인 요청을 보내게 하는 취약점이다. 서버 측 요청 번조의 유형 1. RFI를 사용하여 포트를 스캔 2. XXE(XML External Entity)를 사용하여 내부 망 자원에 접근 3. XXE(XML External Entity)를 통하여 스마트 TV를 해킹 ssrf.php - sqli_8-1.php 두번째 방법, XML의 외부 엔티티를 사용하여 네트워크에 있는 자원에 접근한다. XML 문서는 외부 엔티티라는 저장 단위로 구성되어 있는데, 외부 엔티티를 선언하면 다른 파일의 텍스트를 가져올 수 있습니다. 'sqli_8-1.php'페이지로 가서 Any bugs? 를 눌러 Burp Suite 으로 HTTP요청을 가로챕니다. 그 후, 마우스 우측클릭을 눌러 Send to Repeater 를 눌러줍니다. Repeater : HTTP 요청을 재요청하고 애플리

1 2 3 4 5 6