01. APM 설치
- 수업 시간에서 사용할 환경: CentOS7(Server, Client)
1) Apache(httpd)
# yum -y install httpd*
2) PHP
# yum -y install php
# yum -y install php-mysql
# yum -y install php* --skip-broken
3) Mariadb(MySQL)
# yum -y install mariadb-server*
4) 실습을 위해 방화벽 중지
# systemctl stop firewalld
5) 웹서버 재시작하기
- 패키지와 데몬명이 다른 경우가 많음 + 프로토콜 같은 경우도 하지만 동일하게 일치되는 서비스들도 있음
# systemctl restart httpd
6) 데이터베이스 서버 재시작
# systemctl restart mariadb
- 1 ~ 6 과정을 통해 웹 아키텍처 구성을 완료함 (client와 server(web server와 db를 포함))
7) 외부에서 접근해보기
- client의 firefox에 server측 ip주소 입력해보기
- testing 123...페이지가 뜨면 접속이 된 것
02. 환경 설정 파일
- 주 환경 설정 경로/파일: /etc/httpd/conf/httpd.conf
> CentOS7 아래 버전 경로: /usr/local/apache/conf
> 31번째 줄: SeverRoot 웹서버가 읽는 환경설정 파일의 경로. 즉, 서버의 홈 디렉토리
> 42번째 줄: Listen 열어두는 포트 지정 → Kali_Linux에서 nmap ip주소 명령어를 사용하여 확인 가능
> 119번째 줄: /var/www/html
→ 해당 디렉토리에 index.html를 올리면 됨 + 웹프로그래머들이 프로그래밍한 웹문서들
→ index.html을 찾아가는 이유는 웹서버에서 index.html을 찾아가라고 설정해 주었기 때문임
→ 디렉토리 리스팅 취약점을 보완하기 위해 해당 경로에 문서가 없을 경우 testing 123..으로 리다이렉션을 해둠
> 164번째 줄: DirectoryIndex 웹서버가 index.html을 찾도록 지정해둠
> 305번째 줄: 확장자 타입 (html이외의 확장자는 여기에 추가해주어야 인식 가능)
- 보조 환경 설정 경로/파일: /etc/httpd/con.f/*
03. 데이터베이스 생성
1) 데이터 베이스 생성
# systemctl restart mariadb // 데이터베이스 실행
# mysql -p mysql
2) 데이터베이스 접속
초기 패스워드는 널이므로 엔터를 쳐서 접속하면 됨
3) 데이터베이스 생성
create database xe;
show databases;
4) 데이터베이스 사용자 추가 및 권한 설정
insert into user(host,user,password) values('localhost','xe',password('123456'));
flush privileges;
grant all privileges on xe.* to xe@localhost identified by '123456'
flush privileges;
quit
5) 데이터 베이스 종료 후 db 재시작
# systemctl restart mariadb
04. 개별 사용자별 웹사이트 구축
1) user 생성
- 우선 이미 test 계정이 있기 때문에 test계정을 사용해 볼 것임
test계정의 권한을 775로 변경: 웹사이트 개설을 위해 권한을 주는 것
추가적으로 웹서버에서는 사용자와 그룹을 apache(일반 사용자)로 설정
(root로 설정시 계정탈취가 이루어지면 심각한 사태가 발생할 수 있기 때문)
따라서 일반 사용자에게도 권한을 주기 위해 755로 설정하는 것
2) 일반 사용자에 디렉토리 추가
# cd /home
# cd 만든계정명(여기서는 test)
# mkdir public_html (디렉토리 생성)
public_html: test 계정 사용자의 웹사이트 홈디렉토리가 됨
# cd public_html // 디렉토리 이동
# vi index.html // index.html 생성
* ~: 나 자신 = 내 홈 디렉토리
3) 보조 환경설정 파일 수정
# systemctl stop firewalld
# setenforce 0
# systemctl restart httpd
# cd /etc/httpd/conf.d
# vi userdir.conf // 일반 사용자들이 웹사이트를 구축했을 때 접근 통제 혹은 해당 디렉토리를 어떻게 지정할 것인가를 쪼개둔 설정파일
# systemctl restart httpd // 환경설정을 수정하면 서버를 다시 시작
user directory의 웹사이트 구축을 disable했기 때문에 위에서 접속이 차단된 것
사용하기 위해서 17번째 줄을 주석처리하고 24번째 줄의 주석을 해제시켜야 함
이렇게 하면 일반 사용자가 웹사이트를 열 수 있음
4) Directory listing 취약점 확인
- public_html에 만들었던 index.html 파일을 지우고 korea1, korea2, korea3 폴더 및 test.txt, test2.txt 파일을 만든 후 다시 웹페이지에서 접속
Indexes: 디렉토리 목록을 출력해주겠다고 설정되어 있음
→ 그래서 디렉토리 리스팅 취약점이 발생한 것
해당 옵션을 제거하면 listing이 안됨
5) xe를 통한 웹 사이트 구축
- 다운로드
- 다운로드 파일 경로 옮기기: 설치된 경로는 다운로드 일 것임
# mv xe.zip /home/사용하는계정이름(test)/public_html/
# cd /home/test/public_html/
# unzip xe.zip // 압축해제
# chmod 707 xe -R // 하위 디렉토리를 포함한 권한 변경
홈페이지 접속
계정명 뒤에 /xe 디렉토리 경로를 주어야 함
defalut 값으로 DB 선택 전까지 Next를 누름
db 선택에서 mysql 선택
db 연동 부분: 위에서 생성했던 데이터베이스를 연동해줌
관리자 생성
사이트 접속
6) DNS 서버 연결
- DNS 설치
# yum -y install bind*
# cd /var/named // 홈 디렉토리
- 환경설정 파일 수정
# cd /etc
# vi named.conf
14번째 줄 주석처리(사용하지 않기 때문에) 및 13번째 줄에서 127.0.0.1을 localhost로 변경
7) 도메인 등록
# vi named.rfc1912.zones
위에서 listen-on-v6와 관련된 줄을 주석처리 했었으므로 해당 파일에서 25~29까지는 지워야 함
다음과 같이(37~41) 도메인 등록
8) 레코드 파일 생성 (test.co.kr.zone)
# cd /var/named
# vi test.co.kr.zone
# systemctl restart named // named 서버 재실행
다음과 같은 내용으로 파일 생성
9) 네임서버 지정
# cd /etc
# vi resolv.conf
다음과 같이 변경
10) 가상호스팅 생성
test.co.kr/~test/xe로 접속해서 설정 → 일반 들어가기
기본 URL을 위와 같이 변경
# cd /etc/httpd/conf.d
# vi vhosts.conf
# systemctl restart httpd
내용은 다음과 같이 설정
test.co.kr로 접속이 잘 되면 성공!
* 재부팅 시 설치는 다시 안해도 되지만 systemctl이나
도메인 네임서버 지정은 재부팅시 매번 해줘야하는 것 같다 :(....
# cd /etc
# vi resolv.conf // dns 수정
# systemctl stop firewalld
# setenforce 0
# systemctl restart httpd
# systemctl restart named
# systemctl restart mariadb
'Hacking Tech > Web hacking' 카테고리의 다른 글
[웹보안] Proxy 및 다양한 Scanning Tools (0) | 2022.04.04 |
---|---|
[웹보안] msfconsole로 DB 침투 및 brute force 공격 실습 (0) | 2022.03.31 |
[웹보안] 웹 보안 기초 이론 정리 (0) | 2022.03.27 |
[Dreamhack] Background: Non-Relational DBMS (0) | 2022.03.11 |
[Dreamhack] ServerSide: SQL Injection (0) | 2022.03.08 |