개발/PHP31 [PHP]파일 권한 설정 파일 업로드에서 var/www/html에 upload 파일을 만들어 넣으려고 하는데, 잠김 표시가 뜨면서 www-data의 소유로 r--r--r--으로 올라가서 다운로드가 안되는 현상이 있었다. 이를 해결하기 위해서 아직 설정을 하고 있다. https://ksbgenius.github.io/wordpress/2020/09/19/owner-and-permission-settings.html 이 사이트에서 폴더 권한 설정을 해주라고 해서 해당 폴더에 소유자를 www-data로 바꿨다. sudo chown -R www-data:www-data var/www/html 또한 폴더 권한을 chomod 777로 열어주었다. 하지만 아직 해당 부분이 해결되지 않았다. 파일을 더 하위에 만드는 방안으로 접근해야할 것 같.. 2022. 4. 27. 기본기능을 갖춘 웹 개발 예시 PHP 파일 공유 페이지 맵은 아래의 게시물에 있습니다. 서버 루트 폴더에 upload 파일을 생성해야합니다. xampp 깔고 올려서 취약점 찾기나 시큐어 코딩에 참고하세요! [member - member] [bbs - board] [bbs - iboard] [bbs - ireply] [bbs - reply] 2022.01.08 - [홈페이지 만들기 🛠/PHP] - [홈페이지 제작] 홈페이지 제작 과제 결과물 [홈페이지 제작] 홈페이지 제작 과제 결과물 메인 index.php member.php idcheck.php member_ok.php 회원 login_ok.php main.php 좋아요/조회수/파일/글수정 삭제 기능 read,php hit_up.php hit_del.php read_mod.php like.php li.. 2022. 2. 25. [시큐어 코딩] PHP - 서버 정보 노출 취약점 예방 웹 서버 소스 코드(HTML) 및 오류 메시지를 통한 운영 정보 노출 시 공개된 취약점으로 인한 악용 위험이 있습니다. - 보안 조치 방법 1. Apache2.conf 파일에서 ServerTokens을 Pord로 설정한 후 재 시작합니다. 2. PHP 정보를 숨기기 위해 php.ini을 찾아 expose_php를 Off로 설정합니다. 3. 에러 페이지에서 시스템 운영정보를 노출하는 것을 막기 위해 커스텀 에러 페이지를 제작해 띄웁니다. Apache2.conf 에 해당 부분을 아무 곳에나 추가해주면 Apache2 서버 정보 노출을 막을 수 있다. ServerTokens Prod ServerSignature Off PHP.ini 의 expose.php 부분을 off로 설정해준다. PHP 정보를 숨길 수 있습.. 2022. 2. 21. [시큐어 코딩] PHP - 디렉토리 리스팅 취약점 제거 디렉토리 리스팅 취약점 : 인덱스 파일로 지정한 파일이 존재하지 않거나, 디렉토리 리스팅을 허락하도록 설정했을 경우 디렉토리 리스트가 출력됨에 따라 하위 파일 및 디렉토리 목록이 출력되어 파일의 열람 및 저장도 가능하게 하는 취약점입니다. 공격자는 파일의 구조를 파악한 후 악성 파일 업로드/다운로드 등 다른 추가 취약점 공격에 이를 악용할 수 있습니다. 조치로는 웹 서버 설정에서 디렉토리 인덱싱 기능을 비활성화합니다. Apache의 경우 httpd.conf 파일에서 indexes 인자를 제거합니다. 내 가상 머신에서는 httpd.conf 가 아니라 apache2.conf 파일이였고 index 부분을 찾아 제거해주었다. [수정 전] [수정 후] [시큐어 코딩 전] [시큐어 코딩 후] 2022. 2. 20. [시큐어 코딩] PHP - 인가취약점 예방, form 변수 값 자동 넘기기,document.getElementById().submit() 사용. 인가 취약점으로 허가되지 않은 글을 보지 못하게 하기 위해서 pw검증을 하면서 다음 페이지로 인가 검증용 변수를 발급했다. 변수를 넘겨주면서 해당 글안에 수정, 삭제 등 일련의 과정을 하도록 구현하였다. 자동으로 값을 넘겨주게 하기 위해서 자바의 document.getElementById().submit(); 함수를 사용하였다. pw 검증이 되었는지 확인하기 위한 pw_chk 값, idx 넘버 개별 구분을 위한 idx_chk 값을 넘겨주었다. [read_check.php] 잠김글일 시 Pw검증 값과 검증 값이 해당 글 넘버가 맞는지 검사한다. [read.php] 잠김글이 아닐 시 별다른 권한 없이 조회 이외의 경우는 접근을 허용하지 않았다. [비밀번호 검증 페이지 코드] 2022. 2. 20. [시큐어 코딩] PHP - 인증 취약점을 막기 위한 세션 변수 사용 세션의 정의 = 세션이란 웹사이트에서 사용자 정보를 저장하는 방법으로 보안에 취약한 쿠키를 보완해 로그인과 같은 인증정보 확인에 쓰이고 있습니다. 세션은 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다. 인증 취약점을 예방하기 위해 세션 변수를 적용해줍니다. 세션 변수는 $_SESSION['변수 이름']="값"; 으로 지정되어 사용할 수 있고 세션을 사용할 페이지에서는 맨 앞에 session_start()를 사용해야한다. [댓글 작성 페이지] 인증 시 다른 방법보다 이 세션 아이디를 불러와서 값이 일치하는지 검증하면 인증 취약점을 예방할 수 있다. 예를들어 기본 비밀번호 입력 검증시 플로우 통제(step1>2>3)를 우회하여 바로 수행페이지로 넘어가거나 할 수 있기 때문에 기본적으로 .. 2022. 2. 19. [시큐어 코딩] PHP - XSS 대응방안 - htmlspecialchars() 함수 사용 XSS를 예방하기 위해서 HTML Entity로 이스케이프를 시켜줘야한다. 2021.11.20 - [N 스터디 👩💻/수업 기록] - [6주차]XSS 키로커 삽입과 대응방안 [6주차]XSS 키로커 삽입과 대응방안 * 참고사항 XSS 시 단순한 알림창에 위협을 느끼지 못하기 때문에 버그바운티나 실제 업무에서 보고서를 작성할 떄 위험하다는 것을 직관적으로 인지시켜주기 위해서 얼마나 영향력 있는 취약점 myungjjju.tistory.com SQL 문 삽입 부분을 모두 Prepare Statement해주고 나서 추가로 변수에 htmlspecialchars() 함수를 사용했다. 아래는 코드 예시. [게시글 작성 페이지] DB에 이스케이프된 HTML문이 잘 삽입된 것을 확인할 수 있다. 예전처럼 XSS 공격을 시.. 2022. 2. 19. [시큐어 코딩] PHP - CSRF 대응방안 2차 인증 구현 - 회원정보 수정시 비밀번호 재입력 [회원 정보 수정 페이지] 개인정보 수정같은 경우에 2차인증이 없으면 CSRF를 통해 언제든 개인정보를 공격자가 원하는 정보로 변경이 가능하기 때문에, (게시글 form 태그로 코드를 구현해서, 혹은 GET 방식으로) 이차인증으로 비밀번호 재검증을 하거나 CSRF 토큰을 발급해 사용해야한다. 나는 개인정보 수정 폼에 2차인증으로 비밀번호 재인증을 추가하였다. 세션변수를 활용해서 2차인증을 구현했다. //비밀번호 재확인 폼 //if로 대조 if($_POST['pw_chk']==$_SESSION['user_pw']) 2021.12.05 - [[모의해킹]실습 💻/Burp suite Academy] - CSRF 취약점 실습 CSRF 취약점 실습 ## — CSRF 토큰 검증 미흡 https://portswigge.. 2022. 2. 19. [시큐어 코딩] PHP - SQLI 대응방안 Prepare Statement - like 함수편 시큐어 코딩 [검색기능] - like 함수 편 catgo 카테고리 부분은 option 으로 세가지만 허용되기 때문에 if문을 이용해 화이트 리스트 기반 필터링을 적용했다. prepare statement like함수는 파라미터에 "%{$_GET['search']}%"로 값을 주어 적용할 수 있었다. 적용시 SQL injecion이 적용되지 않고 검색이 되는 것을 확인할 수 있었다. if($catgo = "title" or "name" or "content") { $param = "%{$_GET['search']}%"; $sql2= "SELECT * from board where $catgo like ? order by idx desc"; $stmt = $db->prepare($sql2); $stmt->b.. 2022. 2. 19. 이전 1 2 3 4 다음