# Proxy
- proxy를 통해 웹 서버에 접근
# yum -y install squid // proxy 설치
# systemctl restart mariadb // db 재시작
- proxy 설정 파일 수정
# cd /etc/squid
# vi squid.conf // 웹 서버의 환경설정 파일
safe_ports만 허용하고 있음
다음과 같이 사용하는 ip를 추가하여 접근 제어 목록에 추가
변경 내용(centos7)의 접근 통제를 허용해 줌(적용하는 과정)
- Client에서 web proxy를 찾아가도록 설정
firefox 설정에서 network proxy 찾기
수동으로 설정
port는 설정 파일에서 찾아보면 "http_port 3128"이라는 부분에서 알 수 있음
(아까 설정파일에서 localhost도 allow되어 있었기 때문에 위와 같이 작성해도 됨)
이전에 접속되던 웹 페이지가 접속이 되지 않는 것을 확인할 수 있음
proxy server를 시작하지 않아서 뜨는 오류임
# systemctl restart squid // proxy server 재시작
proxy server 재시작 후 페이지가 잘 로드되는 것을 확인할 수 있음
이제 web proxy가 대리자 역할을 하게 되었음
1. 보안성이 강화됨
2. 캐싱 기능
캐싱한 정보를 다음 경로에 저장
(현재는 주석처리 되어있음)
# WhatWeb
1. WhatWeb이란?
- 웹 서비스 정보를 수집할 수 있는 도구
- 웹사이트를 식별하고, 콘텐츠 관리 시스템, 블로그 플랫폼, 통계 분석 패키지, 자바 스크립트 라이브러리, 웹서버와 임베디드 장치 등의 웹 기술을 인식
- 웹 앱/서버에서 사용하는 기본 기술에 대한 정보를 공개하는 오래된 서버 버전이나 헤더 등을 탐색
2. Function
- 1000개 이상의 플러그인
- 속도, 스텔스와 안정성 간의 상충관계(trade off)를 제어
- 성능 튜닝, 동시에 스캔하는 방법을 많은 웹사이트에서 제어
- 사용자 정의 HTTP 헤더
- 기본 HTTP 인증
- 웹 페이지에 리디렉션 이상 제어
- NMAP 스타일의 IP 범위 지정
- 퍼지(fuzzy) 검색
- 결과 확실한 인식
- 사용자 정의 플러그인을 명령 줄에 정의
- 여러 개의 로그 형식
3. Usage
보통 -v(verbose) 옵션을 많이 사용
공백을 기준으로 나열도 가능
-a: 깊이
4. 실습
- Kali-Linux에 다음과 같이 명령어 작성
# whatweb 192.168.56.131 // centos ip address
- http protocol 사용 확인 가능
- 응답했으므로 200 OK
- Apache version 확인 가능
- CentOS 운영체제 사용 확인 가능
- 웹 어플리케이션으로 xe를 사용하고 있는 것 확인 가능
- php version 확인 가능
# whatweb 192.168.56.131 -v // -v: 더 자세하게 보여줌
더 자세하게 확인 가능
-v 옵션을 주지 않았을 때 확인할 수 없었던 sessionid 확인 가능
→ sessionid를 통해 서버에 직접 접근이 가능해지기 때문에 이것이 노출되면 위험함
- Pragma: no-cache // 캐시를 사용하고 있지 않음
- HTTP header의 자세한 내용을 볼 수 있음
# whatweb 192.168.56.0/24 // c클래스 전체
# whatweb --no-error 192.168.56.0/24 // --no-error option
--no-error 옵션을 주지 않을 때는 error opening도 모두 표시
옵션을 주게되면 다음과 같이 error가 아닌 것만 출력
현재 metasploitable2와 centos7(Server)를 확인할 수 있음
# whatweb --no-error 192.168.56.0/24 --log-brief brief.txt // 실행결과(요약)를 txt 파일로 변환하여 저장
brief.txt에 동일한 내용이 저장된 것을 확인할 수 있음
# whatweb --no-error 192.168.56.0/24 --log-verbose verbose.txt // 실행결과(상세)를 txt 파일로 변환하여 저장
verbose.txt에 상세 내용들이 저장된 것을 확인 가능
# wafw00f
- 웹 방화벽에게 쉬운 내용을 전송해서 웹 방화벽이 되고 있는지 판단할 수 있음
# DIRBUSTER
1. DirBuster이란?
- 일종의 디렉터리와 파일 정보 수집 도구
- 웹/애플리케이션에서 숨겨진 파일이나 디렉터리들을 브루트포스(brute force) 방식으로 검출해 공격 팩터를 찾는 멀티스레드(multi thread) 애플리케이션
2. Fuction
- 에러가 연속으로 20개 발생할 때 자동으로 일시중지
- 멀티스레드 능력 향상
- 맞춤법 실수 수정
- 프록시 설정
- jbrofuzz 디렉터리 목록 추가
- 보고서 형식 추가 지원
① port 번호까지 잘 기입해야 함 그러지 않은 경우 에러 발생
③ 스레드가 많으면 많을 수록 스캐닝을 빠르게 할 수 있음
3. 실습
# dirbuster
dirbuster는 GUI 기반임
미리 구축해둔 CentOS(Server)의 ip주소 및 dirs/files의 리스트를 선택해준 후 start를 누름
* /usr/share/dirbuster/wordlists 안에는 많은 wordlist들이 있음
스캐닝 되는 것을 확인할 수 있음
스캐닝 결과는 report로 저장 가능
# Nikto
1. Nikto란?
- a Practical Website Vunlerability Scanner
- 오픈 소스로, 웹 서버와 애플리케이션에 대한 취약성을 자동으로 점검해주는 도구
- 6500 이상의 CGI(common gateway interface) 파일을 포함하여, 여러 방법에 대한 테스트를 진행하여 타겟에 취약점이 존재하는지 확인하는 오픈 소스 웹 스캐너
2. Testing Item
- 서버의 버전을 확인하고 여러 항목에 대하여 포괄적인 테스트를 진행
- 설치 시 기본으로 설치되는 파일이나 스크립트 존재 유무
- 추측 가능한 기본 디렉터리 사용 여부
- 안전하지 못한 파일이나 스크립트의 유무
- 웹 서버의 각종 설정 파일이나 구성 항목에 대한 검사
- 버전 정보 등 불필요한 정보 제공 여부
- 불필요하게 허용되어있는 메소드 등을 검사
3. Usage
command line interface
clickjacking: 링크를 클릭했을 때 악의적 의도가 담긴 페이지로 이동하게 하는 것
허용되는 메소드의 종류를 알 수 있음
OSVDB: Open Source Vunlerability DataBase
Directory indexing: Directory listing과 같은 것
4. Options
5. 실습
# nikto -h 192.168.56.131 -C all
실제로는 버전, 운영체제 등은 숨길 수 있다면 최대한 숨겨야 함
(반대로 공격자는 찾을 수 있다면 정보를 최대한 찾아야 함)
그렇다면 스캐닝 결과로 나온 맨 위의 줄에 대한(버전, 운영체제 등) 정보는 어떻게 숨길까?
# cd /etc/httpd/conf
# vi httpd.conf
# systemctl restart httpd
다음과 같이 ServerTokens를 추가
현재 default 값이 Full이기 때문에 Scanning을 할 때 모든 정보가 다 출력된 것
Prod로 옵션을 주게 되면 패키지명만 출력됨
Major로 옵션을 주면 주 버전까지 출력
Minor는 보조 버전까지 출력
Min은 패치 버전까지 출력
OS는 운영체제까지 출력
다시 스캐닝을 해보면 아까와 다르게 Apache만 출력되는 것을 확인할 수 있음
(whatweb에서도 노출값이 달라지는 것을 확인할 수 있음)
그 외에도 OSVDB-3268에 나와있는 취약점처럼
실제로 directory indexing이 되는 것을 확인할 수 있음
OSVDB-3268에 나와있는 취약점처럼 실제로 directory indexing이 되는 것을 확인할 수 있음
# nikto -h 192.168.56.131 -C all -Format txt -o nikto.txt // 텍스트 파일로 결과 저장
nikto.txt 로 파일이 생성된 것을 확인할 수 있음
저장된 파일 내용도 확인할 수 있음
+) 추가적으로 txt는 가독성이 떨어질 수 있는데 확장자를 .html로 저장하게 되면 가독성이 높아짐
'Hacking Tech > Web hacking' 카테고리의 다른 글
[웹보안] msfconsole로 DB 침투 및 brute force 공격 실습 (0) | 2022.03.31 |
---|---|
[웹보안] Web/DB Server (0) | 2022.03.27 |
[웹보안] 웹 보안 기초 이론 정리 (0) | 2022.03.27 |
[Dreamhack] Background: Non-Relational DBMS (0) | 2022.03.11 |
[Dreamhack] ServerSide: SQL Injection (0) | 2022.03.08 |