목록정보보안 (26)
정보보안공부
SQL Injection - 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. - 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑 하지 못했을 경우에 발생한다. -> 공개게시판에 위와같이 사진을 첨부한 게시글을 작성하였다. 사진을 다운로드했을 때 다운로드 수가 증가하지만 SQL Injection공격에 의해 해당 다운로드수를 클라이언트가 임의로 수정할 수 있다. 이때 사용되는 쿼리는 update 쿼리이다. 먼저 해당 페이지의 소스코드를 살펴보자. -> 이부분이 바로 다운로드를 눌렀을때 에 의해서 코드가 실행되는 것을 확인한다. 실제 다운로드하지 않아도 이코드의 링크를 계속클릭한다면 Download수는 1씩 계속 증가한다. -> 두번눌러서 2로 증가되었다. downl..
# Web Shell -> 웹을 통해서 명령어를 입력할 수 있다. -> system($_GET[cmd])를 이용한다. -> 웹에서 GET방식에 입력한 명령을 웹에서 확인할 수 있다. # Bind Shell -> TCP를 이용한 원격 쉘이다. -> nmap설치후 ncat사용 -> nc(윈도우) : TCP통신을 할 수 있다. 이것을 이용해 쉘을 획득 타겟서버에 특정포트를 열어놓고 연결을해서 얻어온다. -> 해당 서버에 포트를 오픈시킨후 접속하려는 쉘(윈도우)에서 해당 포트번호로 연결을 시도한다. # nc파일 # nmap설치 # 해당 서버에 포트를 오픈 -> 해당 20000포트를 연다. # 접속하려는 쉘에서 해당 서버의 포트번호(20000)로 연결시도 -> 해당 192.168.229.128 IP에 20000포..
PHP # RFI ( Remote File Include ) 취약점 -> 파일을 include 할때 나타나는 취약점이다. -> 원격지에서도 include 할 수 있다. -> allow_url_include = On 설정을 하게 되면 원격파일도 include가 가능하다. -> 공개게시판에서 해당 zboard/skin/zero_vote위치에 error.php파일에 include 코드가 작성되어있다. $dir은 변수이므로 외부에서 선언할 수 있지만 실행하려는 파일 value.php3은 정해저있는 파일이다. echo를 이용해 웹페이지에서 해당 error.php파일에 접근했을 때 어떻게 실행되는지 파악해보자. -> dir은 변수이므로 GET방식을 이용해 dir값을 지정할 수 있다. 이제 include코드를 사용해..
PHP -> 앞서 살펴본 XSS, CSRF는 client script language로써 불특정 다수를 대상으로 공격을하지만, PHP언어는 server script language로써 한 곳을 대상으로 공격한다. #1 php 파일 업로드 취약점 - php 소스파일이 서버에 존재하는 경우 - 웹 브라우저에서 접근이 가능해야한다. ( 웹브라우저에서 php파일을 실행 ) 먼저 간단한 테스트를 해보자 메모장으로 확장자를 php로 설정한 attack.php코드를 작성한뒤 게시판에 첨부파일로 추가해보자 -> 게시판을 쓰려고하면 위와같이 php, html 관련파일은 업로드할 수 없다고 되어있다. 그렇다면 php코드에 이름만 확장자를 다르게해서 시도해보자. -> attack_test.aaa 파일로 같은 코드를 입력하고..
#CSRF ( Cross Site Request Forgery ) -> 교차 사이트 요청 위조 -> HTML 태그를 사용하는 XSS의 변종기법이다. -> 공개 게시판에서 attacker라는 유저의 레벨을 기존레벨인 9에서 레벨 1로 변경해보자. 웹페이지에 나타나있는 change level 버튼이 아닌 HTML코드를 이용해서 공격해본다. 먼저 관리자의 권한이 있을때 관리자 페이지에서 GET방식과 POST방식을 이용해서 시도해보자 # GET방식 -> GET방식을 이용해 유저의 레벨을 변경할 수 있다. -> 현재 attacker유저의 level은 1로 설정되어있다. -> change level버튼을 눌렀을때 전송되는 데이터가 무엇인지 코드를 통해 파악한다. 전송되는 데이터는 form태그 안에 작성되어 있다. ..
#XSS ( Cross Site Scripting ) 클라이언트에 대한 취약점을 이용해 javascript와 HTML 언어를 사용한 불특정 다수에게 공격하는 기법이다. 공격자가 악의적인 코드를 사용해 사용자의 웹 브라우저에 심어놓으면 해당 사용자가 접속할 때 악성코드가 실행된다. -> 교차해서 스크립트를 실행한다. -> 공격이 단순하면서도 강력하다. -> OWASP TOP 10에서 한번도 빠진 적이 없는 공격기법이다. -> javascript 공격중 하나이다. 1) stored XSS -> 공격자는 게시글, 쪽지, 댓글등등 여러곳에 자바스크립트 코드를 입력하여 작성해 놓는다. 공격을 당하는 사람은 해당 웹 페이지를 열때, 자바스크립트 코드가 실행되어 공격을 당하게 된다. ## 게시글 작성시 -> 게시글을..
Hash(해시) - 암호화는 아니다. - 평문(plain text) -> hash value - 단방향 함수( 복호화가 존재하지 않는다. ) - 평문의 길이와 상관없이 hash value의 길이는 고정 길이를 갖는다. - 평문이 같으면 해시된 값도 같다. - 평문이 다르면 해시값도 다르다. - 평문이 다를때 해시 값을 같게 의도적으로 한다. 이때 해시가 안전하지 않다고 한다. - md4, md5, sha1, sha2, sha256, sha512, ... 대표적인 해시함수는 sha512 - 기존의 파일을 해시한것과 복사한 파일을 해시한것을 비교해서 복사가 잘됬는지 여부를 확인한다. - 검색에 사용하기도 한다. - 공격으로는 : bruth force( 무차별 공격 ), dictionary attack( 사용..
MySQL과 PHP연동하기 # MySQL 라이브러리 설치 - php에서 mysql 라이브러리를 지원해준다. - php-mysql.i686 설치 yum install php-mysql을 이용해 mysql라이브러리를 설치한다. # MySQL 함수들 알아보기 ** mysql_connect -> mysql_connect('localhost', '계정', '비밀번호); die문을 이용해 해당계정이 연결이 안되면 종료하고 mysql_error()로 오류문장을 출력한다. exit()도 사용가능하다. ** mysql_select_db -> mysql_select_db('DB이름', MySQL연결) die문을 이용해 해당DB가 연결이 안되면 종료하고 mysql_error()로 오류문장을 출력한다. exit()도 사용가능..