반응형
php CI index 죽이기
- 환경 -
아파치 2.4.x / CI 3.x / MySQL 5.x / CentOS 7.3
(7.2 보안취약점 발견되었다고함)
https://www.cikorea.net/bbs/view/lecture?idx=7073
이하 버전분들은 위 링크를 참고해주세요 . CI 포럼 웅파님 글입니다.
먼저 httpd (아파치)가 설치된 경로에 환경설정 경로로 이동합니다.
httpd 하위 폴더는 아래와 같이 구성되어있습니다. (글쓴이 기준)
conf conf.d conf.modules.d logs modules run
2.4.x 버전의 아파치는
cd /etc/httpd/conf.modules.d |
경로에 00-base.conf(이름이 다르면 찾아봐야함) 라는 파일이 있습니다.
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so |
파일을 vi로 읽어보면 주석제거가 되어있을 것입니다. 만약 주석처리 (#) 되어있다면 제거하고 저장하세요
(혹시나 mod_rewrite가 설치안되어있으면 별도로 설치해야한다고하는데 요즘 아파치는 같이 설치된다)
cd /etc/httpd/conf.d
cd /etc/httpd/conf.d |
conf.d 폴더에 vhost.conf 라는 파일을 vi 편집기를 이용하여 생성합니다. (가상호스트 설정할 경우만)
NameVirtualHost *:80 <VirtualHost *:80> # 웹 프로그램 폴더 DocumentRoot "루트경로" # 서버의 관리자 메일주소 ServerAdmin 메일주소 # 서버이름 (주 도메인) ServerName 도메인 IP # 서버별칭 (부 도메인) ServerAlias 도메인 호스트 네임 # 에러로그 ErrorLog "logs/error_log" CustomLog "logs/access_log" common # 프로그램 구동 옵션 <Directory "루트경로"> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> |
80포트 가상호스트 설정입니다.
구동 옵션에서 Options FollowSymlinks 를 하지않아도 되는경우 생략해도 됩니다.(아마 필수일지모르지만 보안상 취약한 듯)
AllowOverride All 필수
cd /etc/httpd/conf |
위 경로에 있는 httpd.conf를 vi 편집기로 읽습니다.
주석 제거 및 변경해야하는 값
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
추가해야하는 값
allow_writeable_chroot=YES
listen_port=9902
pasv_enable=NO
ftp_data_port=9903
옵션을 수정한 후 :wq 명령어로 저장합니다.
(가상호스트 설정을 안하는 경우 AllowOverride none을 찾아 모두 All로 바꿔주세요 none->All)
위의 설정을 모두 다하고 나면 systemctl restart httpd 명령어로 아파치를 재시작 합니다. (에러가 나는 경우엔 설정이 잘못된 경우)
CI의 config.php 파일에서 아래 설정을 변경해주세요.
//$config['index_page'] = 'index.php'; $config['index_page'] = ''; |
CI를 설치한 경로에 보면 application index.php system 등이 있을 것입니다.
위와 같은 경로상에 .htaccess 파일을 아래의 내용을 작성하여 생성한 후 넣어주시면 됩니다.
아래 내용은 복붙해서 사용하세요. 직접 타이핑 하지마세요(바보같이)
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule> |
.은 리눅스에서 숨김파일입니다. .을 붙이고 htaccess 파일이 생성이 되지 않는다면
윈도우에서 메모장을 이용하여 작성하면 될 것입니다. 작성후 ftp나 git을 통해 서버로 전송 하시면 됩니다.
이로써 index.php 죽이기 성공 ~!
(추가적인 에러 사항이 있으시면 댓글 부탁드립니다. 같이 공유해요)
반응형
'Backend > PHP' 카테고리의 다른 글
브라우저 구별법 (0) | 2019.10.17 |
---|---|
날짜 비교 (stamp) (0) | 2019.07.16 |
파일 업로드 및 다운로드 (0) | 2019.06.26 |
접근 방지 (0) | 2019.06.23 |
리퍼럴 체크 (0) | 2019.06.23 |