Preview
모의해킹은 중요 시스템의 정보를 탈취, 조작, 파괴 등이 가능한지 파악하는 취약점 진단을 수행한다. 체크리스트 기준으로 항목별 취약점 점검하는 업무를 수행하기 위해 위협이 있을 수 있는 웹사이트를 구현하고 공격자의 입장에서 침투테스트를 실시한다. 진단 항목을 올바르게 이해하고 프로젝트 수행 시 더 나은 결과물을 산출하기 위함이다. 자신만의 웹서버를 가지고 있고 그 서버가 입력 값에 따라 어떤 에러를 내는지 이해한다면 웹 취약점의 원리파악이 쉬워질 것이다.
구현 환경
웹 서비스를 개발 / 구축한 환경은 다음과 같다. 웹 취약점 진단 항목을 정확하게 이해하기 위해 웹 페이지 내 에러메시지 출력 설정이 되어 있으며 서버측 소스코드 및 디버깅 정보가 포함될 수 있다.
환경은 APM(Apache2, PHP, Mysql(MariaDB)로 구성하였으며 취약한 웹 사이트의 구현을 목적으로 하기 때문에 서버의 보안설정은 최소로 설정하였고 서버의 웹 서비스 데몬의 권한도 최고로 부여하였다.
사전에 협의되지 않은 타인의 서버를 대상으로 실습, 공격하는 행위는 정보통신망법에 저촉되는 행위이므로 꼭 자신만의 서버를 구성하여 실습하도록 한다.
종류 |
버전 |
OS |
Ubuntu 18.04 LTS |
Apache |
2.4.38 |
PHP |
7.3.19 |
DB |
MariaDB 10.3.27 |
phpMyAdmin |
5.0.4 |
[표 1] 대상 환경
진단 도구
구분 |
진단 도구 |
설명 |
프록시 |
BurpSuite |
WEB 프록시 기능을 이용한 HTTP 분석 툴 |
네트워크 |
EditThisCookie |
쿠키값 분석과 조작 도구 |
Wireshark |
네트워크 패킷 분석 프로그램 |
|
Socat |
리버스 쉘 연결 도구 |
연구항목
포스팅은 다음의 순서로 진행된다.
No. |
구분 |
취약점 항목 |
내용 |
1 |
입력 값 검증 부재 |
SQL Injection |
대화형 웹 사이트에 비정상적인 사용자 입력 값 허용을 차단하여 악 의적인 데이터베이스 접근 및 조작 |
2 |
XSS |
사용자의 클라이언트에서 임의의 스크립트가 실행되는 취약점 |
|
3 |
취약한 파일 처리 |
파일 업로드 |
파일을 업로드할 수 있는 기능을 이용하여 시스템 명령어를 실행할 수 있는 프로그램을 업로드하는 취약점 |
4 |
파일 다운로드 |
파일 다운로드 스크립트를 이용하여 시스템 주요 파일을 다운로드할 수 있는 취약점 |
|
5 |
취약한 인증 및 세션 관리 |
CSRF |
사용자의 세션 쿠키와 다른 인증 정보를 포함하는 위조된 HTTP 요청을 취약한 웹 애플리케이션에 전송하는 취약점 |
6 |
자동화 공격 |
웹 애플리케이션의 프로세스에 자동화된 공격을 수행함으로써 자원을 고갈시키거나 계정을 탈취할 수 있는 취약점 |
|
7 |
불충분한 인증 |
민감한 데이터에 접근할 수 있는 곳에 취약한 인증 메커니즘으로 구현된 취약점 |
|
8 |
불충분한 인가 |
민감한 데이터에 접근할 수 있는 곳에 취약한 인증 메커니즘으로 두지 않는 취약점 |
|
9 |
중요 정보 처리 미흡 |
정보 누출 |
웹 사이트 데이터가 노출되는 것으로 개발과정의 주석이나 오류 메시지 등에서 중요한 정보가 노출되어 공격자에게 2차 공격을 하기 위한 중요한 정보를 제공할 수 있는 취약점 |
10 |
데이터 평문 전송 |
서버와 클라이언트 간 통신 시 암호화하여 전송하지 않아 중요 정보 등이 평문으로 전송되는 취약점 |
[표 3] 취약점 연구 항목
서버 구축
APM 설치 및 서버 환경을 구축한다. https://blog.lael.be/post/7264 사이트를 기반으로 진행하였으며, 친절하게 설명되어 있다. 이 포스팅은 서버 구축이 핵심 주제가 아니니 간단하게 소개만 하도록 하겠다.
sudo apt upgrade
모든 서버 구축의 시작은 최신 패키지로의 업데이트이다.
sudo apt-get check && sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove && sudo apt-get autoclean
apache2 설치
sudo apt install apache2
php 설치
sudo apt install php php-mysql
php설치 확인
sudo vim /var/www/html/info.php
<?php phpinfo(); ?>
localhost/info.php 로 확인
MySQL 서버 설치
sudo apt install mysql-server
MYSQL 지원 종료로 MariaDB를 설치한다.
https://linuxize.com/post/how-to-install-mariadb-on-ubuntu-18-04/
sudo apt install mariadb-server
초기화
/usr/bin/mysql_secure_installation
설치 확인
sudo systemctl status mariadb
phpMyAdmin설치(옵션)
phpMyAdmin의 설치는 php와 SQL Database의 연결과 관리를 쉽게 해준다.
sudo apt install phpmyadmin
/etc/apache2/apache2.conf 을 열고 다음과 같이 설정한다.
<Directory /var/www/>
Options FollowSymLinks MultiViews
AddType application/x-httpd-php .php .jsp
Require all granted
AllowOverride FileInfo
</Directory>
아파치 서버 재시작
sudo /etc/init.d/apache2 restart
추가 보안 설정
vim /etc/apache2/conf-available/security.conf
주석의 내용을 참고해서 필요 옵션에 따라 주석(#)을 제거해서 설정을 활성화한다.
확장자보호
/etc/apache2/mods-available/php7.2.conf 파일 편집
<FilesMatch ".+\.ph(p3|p4|p5|p7|ar|t|tml)$">
Require all denied
</FilesMatch>
추가하여 php 제외 문자열을 해석하지 않도록 한다.
데이터베이스 초기화 진행
/usr/bin/mysql_secure_installation을 통해 초기화한다.
추가적으로 많은 보안 설정이 있지만 공격실습을 위해 이정도 적용하고 설정을 마무리한다.
모의해킹 실습을 위한 Apache, php, MariaDB의 설치및 설정을 완료하였다.
로그정보
웹페이지의 개발 및 공격 실습을 하다보면 아파치 로그가 필요한 경우가 발생한다. PHP 코드에 에러메시지를 나타나게 할 수도 있지만 직접 로그를 참고하는 것이 더 빠르다.
apache2의 경우 로그는 다음 파일로 볼 수 있다.
access 로그
/var/log/apache2/access.log
tail -f access.log
error 로그
/var/log/apache2/error.log
tail -f error.log
'Security > WEB' 카테고리의 다른 글
[모의해킹 실습] Stored XSS 취약 페이지 구현 및 공격 실습 2 (4) | 2021.07.13 |
---|---|
[모의해킹 실습] XSS 취약 페이지 구현 및 공격 실습 (0) | 2021.07.10 |
[모의해킹 실습] Blind SQL Injection 게시판 구현 및 공격실습 3 (0) | 2021.07.08 |
[모의해킹 실습] Union SQL Injection 게시판 구현 및 공격실습 2 (0) | 2021.05.25 |
[모의해킹 실습] SQL Injection 게시판 구현 및 공격실습 1 (2) | 2021.05.11 |