목록Web Hacking/Web 취약점 분석 (6)
Information Security
서버를 조금씩 변경해서 각각 어떻게 정보를 가져올지 알아볼 것이다. 1. news.php에서 내용을 출력할 때 사용한 while 문을 없앴다. -> mysql_fetch_array()는 쿼리의 실행 결과 중 한 줄만 가져오는 함수이다. -> SQL Injection으로 DB 정보를 얻어올 때도 한 줄만 가져올 것이다. -> 쿼리에 limit을 추가하여 몇 번째 줄의 정보를 가져올지 정해야 한다. ex) union select 1, column_name, table_name from information_schema.columns limit 10, 1 2. 이번에는 컬럼의 내용이 화면에 출력되지 않도록 변경했다. -> title, news 컬럼으로 DB 정보를 출력할 수 없는 상황이다. -> 이럴 땐 정보..
SQL 취약점 - Blind SQL Injection 1. 예제 작성 DB 구성: blind news: no (int), title (text), news (text) no의 값을 GET 방식으로 전달받아 blind DB에 저장된 내용을 출력하는 news.php를 작성한다. 2. 취약점 확인 이 사이트는 no의 값을 마음대로 변경할 수 있기 때문에 numeric injection 취약점이 존재한다. no의 값으로 위와 같이 아무렇게나 입력하면 쿼리 에러가 발생해서 화면이 하얗게 출력된다. 로그를 통해서 수행된 쿼리를 확인한다. -> 공백을 기준으로 앞은 값, 뒤는 쿼리로 인식한다. -> 뒤에 새로운 쿼리를 삽입할 수 있다는 것이다. ※ string injection news.php에서 위와 같이 전달받는..
SQL을 이용한 취약점 - SQL Injection(PHP file download) 1. 취약점 확인 게시글에서 파일 다운로드를 클릭할 때마다 Download의 횟수가 올라간다. ★ 이 부분에 취약점이 존재한다. 페이지 소스를 확인 -> 다운로드를 클릭하면 download.php를 호출하면서 GET 방식으로 값을 전달하는 것을 알 수 있다. download.php 확인 -> update 쿼리를 통하여 Download의 횟수가 올라간다. -> 실제 수행되는 쿼리를 예상해 볼 것이다. download.php에는 변수를 정의하고 있는 부분이 없고, lib.php를 확인 했다. lib.php에서 $t_board 변수가 정의되어 있다. 나머지 변수들은 download.php를 호출할 때 GET 방식으로 외부에서..
Server Side vulnerability - PHP File Upload 1. PHP File Upload 게시판에서는 사진 파일을 업로드하고 다운로드를 할 수 있다. 다운로드를 클릭해 보면 URL을 통해 파일이 업로드된 경로를 알 수 있다. 업로드한 파일은 모두 data 디렉터리에 위치한다. 만약 악의적인 php 파일을 업로드해서 실행이 된다면? -> 서버에 php 파일을 업로드할 수 있는 것만으로도 취약점이 된다. 2. PHP File Upload 공격이 가능하려면? 1) php 파일을 서버에 업로드할 수 있어야 한다. 2) 웹 브라우저를 통해서 접근이 가능해야 한다. 악의적인 php 코드를 작성하고, 파일 업로드를 시도해본다. 위와 같은 메시지를 출력하며 파일 업로드를 실패한다. 제로보드는 w..
Client Side vulnerability - XSS(Cross Site Scripting) 사이트를 교차해서 스크립트를 실행할 수 있다는 뜻이다. -웹 상에서 가장 기초적인 취약점 공격 방법이다. -1995년에 자바스크립트가 도입되고, 2000년에 자바스크립트를 이용한 최초의 공격이 발생했다. (Myspace라는 소셜 사이트의 회원 정보를 바꾸는 공격) -2005년에 악성코드의 형태로 발견되었다. -현재까지 다양한 변종과 함께 계속해서 공격이 활발하게 이루어지고 있다. 17년 동안 막는데 실패했다. -XSS 공격은 크게 두가지로 유형을 나눌 수 있다. 스크립트를 저장시켜 놓고 공격하는 stored XSS, 스크립트를 저장하지 않고 URL에 입력하면 바로 실행되어 공격하는 refletced XSS가 ..
-웹 기초에 대한 공부는 마치고 이제 취약점을 분석할 것이다. -취약점 분석을 위해 제로보드라는 공개 게시판을 사용할 것이다. 환경 설정 제로보드 설치 페이지 install.php에 접속한다. -> 뭐라고 써있는지 알 수가 없다. 크롬 웹 스토어에서 char encoding 프로그램을 추가한다. 설치 페이지에서 오른쪽 버튼을 클릭하면 설치된 프로그램이 보인다. -> 한국어를 선택한다. 이제 알아볼 수 있다. -> 퍼미션을 조정하라는 경고 메시지가 출력된다. 원래 zboard 디렉터리의 퍼미션은 위와 같다. 퍼미션을 707로 조정한다. [퍼미션 조정하였습니다.] 버튼을 클릭하면 설치를 시작할 수 있다. 제로보드에서 사용할 DB zboard를 생성한다. DB 설정을 해준 후 [설정 완료]를 클릭한다. 버전이..