라벨이 php 보안인 게시물 표시전체 보기

홈페이지를 운영할 때 한 번씩 파일 변조가 나타나서 처음에는 단순하게 홈페이지를 복구했는데, 복구해도 얼마 안가서 계속 같은 증상이 반복되었습니다. 그래서 php 버전업해도 같은 증상이 나타났고, 감염된 파일을 삭제해도 몇 일 못가서 또 악성 파일이 만들어지고 결국에는 서버를 초기화했는데, 또 같은 증상이 나타났었습니다. 웹사이트의 index.php 파일에 악성코드를 삽입하여 이 사이트에 접속하는 사용자들은 광고 페이지로 우회 접속하게 만듭니다. 이런 해킹은 index.php …

Read more »
PHP - ModSecurity 란 무엇이며 왜 필요한가?

현재 모든 공격의 70% 이상이 웹 애플리케이션에서 수행됩니다.  아래 URL은 XSS(Cross-Site Scripting), 클릭재킹 공격, MIME 혼동공격, 최신 브라우저의 XSS 위험 등 해커 공격을 방지하는 데 도움이 되는 정보를 제공하는 곳입니다. https://peteris.rocks/blog/exotic-http-headers/?utm_source=bypeople 웹 애플리케이션 방화벽은 보호 수준을 높이고 공격이 웹 기반 소프트웨어 프로그램에 도달하기 전에 탐…

Read more »

항상 이슈가 되는 건 파일 업로드 취약점을 이용하는 공격입니다. 다중 파일 확장자 취약점 아파치 문서에 나와 있는 내용으로 지시어 extension 부분을 보면 아래와 같이 설명하고 있습니다. (출처: https://httpd.apache.org/docs/2.4/ko/mod/directive-dict.html ) 일반적으로 filename에서 마지막 마침표 뒤에 나오는 부분이다. 그러나 아파치는 여러 확장자를 인식할 수 있기 때문에, filename에 마침표가 여러 개 포함된 …

Read more »

파일 업로드시 php 나 html 등 위험한 파일은 보통 제한하게 됩니다. 그래서 다양한 방법으로 허용가능 파일인지 체크 스크립트를 작성해 주는데, 문제는 잘못된 방법으로 개발자도 모르는 우회하여 파일을 업로드 됩니다. 예를 들어 다음과 같을 것입니다. <?php $filename = "test.php."; $ext = array_pop(explode(".", strtolower($filename))); if(preg_mat…

Read more »

프록시 서버나 인터넷 익스플로러, 크롬, 파이어 폭스와 같은 브라우저에 비밀번호와 같은 민감한 정보가 저장된다면 원치않게 정보가 노출되어 공격의 대상이 될 수 있습니다. 그래서 다음과 같이 민감한 정보가 저장되지 않도록 헤더를 추가해 줄 수 있습니다. <?php header(' Cache-Control: no-store, no-cache, private, max-age=0, must-revalidate, …

Read more »

Ajax 를 사용하는 경우 X-Requested-With 헤더를 추가해 직접 액세스하는 것을 금지하도록 하여야 합니다. 단, 공격자는 HTTP_ 로 시작하는 헤더를 자유자재로 추가할 수도 있기 때문에 완벽한 보증은 할 수는 없습니다. <?php if( !isset($_SERVER['HTTP_X-REQUESTED_WITH']) || ($_SERVER['HTTP_X-REQUESTED_WITH'] !== 'XMLHttpReq…

Read more »

HTTP 헤더 인젝션은 공격자가 헤더에 개행문자를 삽입하여 헤더를 추가하여 공격하는 수동적 공격 방식입니다. 이 공격이 허용되는 경우 쿠키를 임의대로 생성하거나 임의로 URL를 리다이렉트 시킬 수 있습니다. http://example.com/?id=1001 위과 같은 코드가 있다면 아래 코드로 고쳐서 공격합니다. http://example.com/?id=101%0D%0A%0D%0ASet-cookie+SID=a123456789 결국 아래와 같은 결과…

Read more »

C 에서 NULL 바이트는 문자열의 끝을 나타내는데, 이것을 이용해 공격하는 기법입니다. \x00 \0 아래 URL 의 값을 받는다고 가정해 보겠습니다. habony.php?user_id=%27%3BSELECT+*+FROM+member_table 다음의 결과처럼 의도치 않게 문제가 발생하게 됩니다. <?php $_GET['user_id'] = '%27%3BSELECT+*+FROM+member_table'; …

Read more »

Click Jacking 기법은 CSRF 기법과 비슷하지만 수동적인 방법으로 공격합니다. 예를 들어 공격자는 어떤 페이지에 투명한 프레임(iframe)으로 표시해두고, 사용자는 문제의 페이지를 열었을 때 무심코 그 투명한 프레임(iframe)을 클릭하도록 유도하는 방법입니다.  무심코 클릭하면 CSRF 기법처럼 게시물을 삭제해 버리는 등 의도치 않는 동작을 하게 합니다. iframe 의 사용을 제한하는 X-FRAME-OPTIONS 헤더를 이용해 문제를 해결할 수 있으며…

Read more »

CSRF 공격은 어떤 게시판의 페이지를 열었을 때 의도치 않는 어떤 처리를 실행시켜 버리는 방법입니다.  아래 코드는 언뜻 보면 정상적인 코드로 보일 수 있습니다. 예를 들어 아래 태그가 포함된 페이지가 있고, 관리자만 게시물을 삭제할 수 있게 하여 일반 사용자는 게시물을 삭제할 수 없도록 해두었습니다. 하지만 관리자 세션을 취득한 관리자가 아래 페이지에 접속하는 것만으로도 의도치 않게 손쉽게 페이지를 삭제해 버릴 것입니다. 일반 사용자가 관리자 세션을 취득하지 않아도…

Read more »

이 함수는 php코드를 평가하기 위해 사용됩니다. 예를 들면, 다음의 결과로 이해할 수 있을 것입니다. <?php $string = 'cup'; $name = 'coffee'; $str = 'This is a $string with my $name in it.'; echo $str. "\n"; eval("\$str = \"$str\";"); ech…

Read more »

보안에 있어 sql 이나 소스코드의 문제만은 아닙니다. 세션 데이터 노출 또한 위험성이 매우 높아 그 중요성이 부각되는데, 특히 공유호스팅 사용자라면 더욱 그러 합니다. 세션 데이터는 리눅스의 경우, /tmp 에 세션이 저장되는데, /tmp 폴더는 기본적으로 모든 사용자가 읽고, 쓰기가 가능한 권한을 가지고, 또 아파치도 여기에 세션 데이터 권한을 가지므로 그 위험은 커질 수 밖에 없습니다. 다음은 /tmp 폴더의 세션 데이터를 읽어 들이는 간단한 php 스크립트 예제…

Read more »

백도어 URL 은 URL를 통해 직접 리소스에 엑세스할 수 있는 것을 말합니다. 다음 예제 내용이 있다고 가정한다면, 상식적으로 test.php 파일을 접속하도록 되어 있지만, 이 백도어 URL은 cal.php 파일인 다이렉트로 접속해서 파일을 변조해 버립니다. <?php /* test.php ---- */ $auth = false; $auth = @$_POST['userid']; include "cal.php&qu…

Read more »

단방향 암호화란? 평문으로 암호화할 수 있어도 암호화된 암호문을 평문으로 복원할 수 없는 비가역적 암호화를 말합니다. 다시 말해 복원이 불가능한 상태입니다. 평 문 암호화 복호화 양방향 test 098f6bcd4621d373cade4e832627b4f6 test 가역적 단방향 test …

Read more »

SQL 질의 공격이 현실적으로 많은 문제점을 가져 온다는 점에 최신 버전(MYSQL, MSSQL..)에서 자체적으로 필터링하고 있지만, 구버전에서는 그렇지 못합니다. SQL 질의를 신뢰할 수 없는 명령으로 인해 SQL 질의에서 접근 제어를 우회할 수 있여, 일반적인 인증과 인증 확인을 무시하고, 종종 SQL 질의가 사용자가 가질 수 없는 권한을 강제 취득하기도 합니다. SQL 명령 인젝션이란? 공격자가 숨겨진 데이터를 노출하거나, 취약한 부분을 덮어쓰거나, 데이터베이스…

Read more »

크로스 사이트 스크립팅(cross-site scripting, 영문 약어 XSS)은 웹 페이지에 클라이언트 사이드 스크립트를 삽입하여 다른 사용자가 이를 실행하게끔 허용하는 취약점으로, 웹에서 사용되는 대표적 스크립트 언어로 자바스크립트, VB스크립트가 있습니다. 이 취약점은 사용자로부터 입력 받은 값을 제대로된 검사를 하지 않고 그대로 사용할 경우 나타나는데, 주로 사용자의 정보(GET, POST, COOKIE, SESSION 등)를 탈취하기 위하여 특수 문자나 예약어…

Read more »

리플레이 공격방식은 프레젠테이션 공격이라 부르는데, 정상적인 사용자가 인증권한을 취득하기 위해 전송한 데이터를 재전송하는 모든 종류의 공격을 말합니다.  리플레이 공격과 마찬가지로 패스워드 스니핑 공격을 차단하려는 노력은 많지만 완전하게 차단할 수 있는 방법은 없습니다. 그렇기 때문에 인증과정 중 폼의 여러 가지 속성을 설치한다 하더라도 공격자에게는 그다지 중요하지 않게 생각할 수 있으며 그래서인지 요즘은 HTTP요청내용과 HTTP응답내용이 노출되지 않게 보호…

Read more »