다른 사람이 설정한 서버를 사용하고 있습니다. 서버는 Apache/2.0.59(httpd)를 실행하는 CentOS 4.6입니다. 포트 8443에 업데이트 서비스가 설정되어 있습니다. 작동하고 있다는 것을 알고 있지만 누군가 해당 포트에 액세스할 때 Apache가 어떤 파일을 제공하는지 알아내야 합니다.
httpd.conf 파일에 내용이 있는지 살펴봤지만 아무것도 없었습니다. 을 사용해 보았지만 nmap
현재 열려 있는 포트만 표시됩니다. 출력은 nmap
다음과 같습니다
8443/tcp open https-alt
그렇다면 누군가가 해당 포트에 연결할 때 어떤 파일이 제공되었는지 어떻게 알 수 있습니까?
답변1
스위치를 사용 하면 httpd
구성 위치를 보고 해당 구성 파일을 찾을 수 있습니다 -V
.
$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
이 명령을 사용하여 lsof
Unix 프로세스에서 어떤 파일에 액세스하고 있는지 확인할 수도 있습니다. 내 버전은 httpd
스톡 포트 80을 사용하고 있었으므로 귀하의 경우에는 80을 8443으로 변경하십시오!
$ netstat -tapn|grep ::80
tcp 0 0 :::80 :::* LISTEN 5338/httpd
이제 lsof
다음을 실행하여 로그 파일이 기록된 위치를 확인할 수 있습니다.
$ lsof -p 5338|grep log
httpd 5338 root mem REG 253,0 10440 3141 /usr/lib64/httpd/modules/mod_logio.so
httpd 5338 root mem REG 253,0 27200 3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd 5338 root 2w REG 253,0 2014 395029 /var/log/httpd/error_log
httpd 5338 root 7w REG 253,0 4140 394789 /var/log/httpd/access_log
access_log
구성 파일의 위치를 확인하고 이를 확인하여 "디렉토리" 및 "위치" 지시문을 확인할 수 있어야 합니다 . 이러한 사양은 어떤 파일을 제공할 때 사용할 로컬 디렉터리를 Apache에 알려줍니다.
무엇을 해야 할까요?
access_log
그런 다음 서버 액세스에 해당하는 항목이 있는지 다시 확인 합니다. 즉, 서버를 탐색하면 다음과 같은 파일 http://www.somedom.com/somefile
에 기록된 이 액세스를 볼 수 있습니다 .access_log
192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
파일은 어디에 있나요?
우리가 얻은 위의 지식을 가지고 다음과 같이 적용을 시작할 수 있습니다.
이 비트는 httpd -V
Apache의 뿌리에 대해 알려줍니다.
-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
따라서 우리는 기본 구성 파일이 여기에 있다는 것을 알고 있습니다. /etc/httpd/conf/httpd.conf
따라서 해당 파일에서 다음 줄을 살펴보십시오.
$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
<Directory "/var/www/error">
이제 이것이 우리가 있는 디렉토리라는 것을 알았습니다 access_log
. 그런 다음 해당 파일을 찾고, DocumentRoot
이 위치에 없으면 다음으로 출력에서 위에서 언급한 디렉토리에 집중하겠습니다.Directories
somefile
Include
grep
/etc/httpd/conf.d/*.conf
이러한 파일은 Apache에서 사용하는 추가 구성이므로 이러한 파일을 보려면 이러한 단계를 반복해야 합니다 grep
.
답변2
당신은 시도 할 수 있습니다
# netstat -ntaupe | grep 8443