Bagaimana cara mengetahui di mana kode situs web berada?

28

Fakta:

  • ada situs web
  • situs web ini dapat diakses melalui www.example.org
  • ada contoh EC2 yang sangat mungkin menyimpan situs web
  • servernya adalah Apache
  • OS server adalah Ubuntu
  • Saya memiliki akses penuh ke server (dan hak sudo)
  • server berantakan besar

Masalahnya adalah saya tidak tahu di mana - cukup cantumkan - cari index.html / index.php yang akan dimuat.

Bagaimana cara mencari tahu di mana menemukan kode PHP dan HTML situs web? Apakah ada pendekatan sistematis untuk masalah ini?

Raffael
sumber
Anda tahu nama domainnya?
the_velour_fog
9
ya, saya nyatakan di poin kedua
Raffael
find / -name nameofsomefileonthewebsite.html?
user253751

Jawaban:

53

Pertama-tama Anda harus memeriksa situs web apa saja yang dihosting di server

# apachectl -t -D DUMP_VHOSTS

Kemudian ketika Anda akan menemukan situs memeriksa file konfigurasi yang sesuai untuk opsi DocumentRoot. Sebagai contoh

# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost gl-hooks.example.net (/etc/httpd/conf.d/hooks.conf:1)
                 alias example.net
                 alias www.example.net

Anda ingin tahu di mana berada situs web example.net

# grep DocumentRoot /etc/httpd/conf.d/hooks.conf
    DocumentRoot /vhosts/gl-hooks.example.net/

# cd /vhosts/gl-hooks.example.net/
# ls -la
total 4484
drwxr-xr-x  6 apache apache    4096 Feb 10 11:59 .
drwxr-xr-x 14 root   root      4096 Feb 23 08:54 ..
-rw-r--r--  1 root   root      1078 Dec 19 09:31 favicon.ico
-rw-r--r--  1 apache apache     195 Dec 25 14:51 .htaccess
-rw-r--r--  1 apache apache      98 Dec  7 10:52 index.html

Juga harus mencari alias dan pengalihan / penulisan ulang

Anda juga harus memperhatikan arahan alias apa pun. Misalnya dengan pengaturan berikut

<VirtualHost *:80>
   ServerName example.net
   ServerAlias www.example.net
   ...
   DocumentRoot /vhosts/default/public_html/
   Alias /api/ /vhosts/default/public_api/
   ...
</VirtualHost>

Ketika Anda akan mengakses http://example.net/some.file.html - apache akan melihat file di / vhosts / default / public_html /, pada saat yang sama dengan http://example.net/api/some.file .html file tersebut akan dilihat di / vhosts / default / public_api /.

Bagaimana dengan penulisan ulang / pengalihan, terutama yang terprogram (ketika pengalihan dipicu oleh beberapa kode php), saya pikir tidak ada cara mudah untuk menemukan kasus seperti itu.

ALex_hha
sumber
3
Juga harus mencari alias dan pengalihan / penulisan ulang.
Bob
3

Coba gunakan find

find / -type f \( -iname "*index.html*" -o -iname "*index.php*" \) 2> /dev/null

Kalau tidak dengan asumsi Apache telah diinstal dari repositori Ubuntu, lihat /etc/apache2/sites-available, yaitu

grep -niR "thedomainname" /etc/apache2/sites-available

Jika situs web memiliki apache VHOST yang ditentukan, yang mungkin menemukan file konfigurasi, maka cari di file itu karena "documentroot"ini akan memberi tahu Anda lokasi kode sumber

the_velour_fog
sumber
1
baik ... Saya "melakukan" itu - butuh 2 jam, server hampir berhenti merespons dan saya menemukan 67 index.html dan index.php hampir sebanyak itu. Jadi pendekatan itu tidak melakukannya untuk saya.
Raffael
2
Itu ide yang sangat buruk untuk menggunakan find dalam kasus seperti itu
ALex_hha
1
Dan mungkin Anda harus menggunakan situs yang diaktifkan sebagai gantinya
ALex_hha
1
index.html bukan file yang bagus untuk berburu. Ada beberapa CMS di luar sana yang menempatkan satu di setiap direktori jika daftar direktori tidak dimatikan di Apache sehingga akan selalu memuat halaman kosong alih-alih menunjukkan isi direktori.
gabe3886
@the_velour_fog Tidak, ini sangat kritis di sini, tetapi -type fhanya berlaku -iname "*index.html*"pada perintah Anda. Seharusnya-type f \( -iname "*index.html*" -o -name "*index.php*" \)
2

Metode lain, yang dapat berguna untuk men-debug situs web (atau proses apa pun dalam hal ini) adalah menggunakan lsof(yang mungkin tidak ada di jalur, biasanya ditemukan di /sbin/lsof)

lsof -s [PID] akan mencantumkan semua file yang telah ditangani prosesnya, dan dapat bermanfaat untuk melihat apa yang sedang digunakan (ini termasuk file html / php, serta file log dan pustaka yang dibutuhkan situs)

Centimane
sumber
1

Saya tidak tahu harus ke mana ... menemukan index.html / index.php yang dimuat.

Cari file sumber halaman

Salah satu pendekatan adalah menelusuri situs untuk menemukan halaman yang lebih unik - katakanlah newcontactform.php - idealnya yang tidak mungkin muncul di situs lain yang dihosting oleh server yang sama.

Anda kemudian dapat mencoba

locate newcontactform.php

jika gagal, ikuti

find / -name newcontactform.php

ini harus menghasilkan daftar kandidat yang dikelola secara kecil.

Anda kemudian dapat memeriksa file, melakukan diff dan jika perlu coba perubahan kecil (misalnya memasukkan komentar HTML) untuk memverifikasi bahwa file tersebut memang menghasilkan halaman.

Temukan konfigurasi

Terkadang file config terlihat jelas di output psperintah. Kasus terburuk adalah ps -ef | grep -e 'apache|httpd'tetapi penggunaan psopsi yang lebih kreatif mungkin perlu ditelusuri.

Anda dapat mencari httpd.confdi lokasi khas untuk Ubuntu dan untuk proyek Apache httpd (yang mungkin berbeda) atau cukup gunakan locatedan findseperti di atas.

Terkadang file konfigurasi utama merujuk ke file konfigurasi lain untuk vhosts. Anda dapat mengatasi ini dengan mengidentifikasi file konfigurasi utama.

Kasus kronis

Terkadang, server lama menjalankan berbagai daemon server web. Dalam hal ini, perlu beberapa saat untuk menemukan semuanya dan mencari tahu di mana file konfigurasi mereka. Kombinasi teknik di atas pada akhirnya harus berhasil.

Anda dapat menemukan program apa yang sedang didengarkan di port 80 dll netstat -lntp. Seringkali, menemukan binari adalah pointer yang berguna ke pohon direktori yang berisi file konfigurasi.

RedGrittyBrick
sumber
1

Anda dapat memeriksa Vhost untuk domain yang Anda cari di file konfigurasi (apache) server web - httpd.conf (kemungkinan besar terletak di / etc /) Cukup buka file dan gulir melalui itu sampai Anda menemukan petunjuk VirtulaHost untuk domain Anda dan di sana Anda akan melihat arahan DocumentRoot - yang merupakan direktori root dokumen situs web Anda, tempat di mana Anda akan menemukan file aplikasi.

Georgi Tsvetanov Tsenov
sumber
1

Silakan pergi ke

cd / etc / apache2 / situs-tersedia /

Di sini Anda akan menemukan file konfigurasi Anda (mis .: 000-default.conf)

Silakan buka file ini / buka file konfigurasi Anda menggunakan

vi 000-default.conf

Di sana Anda akan menemukan DocumentRoot. Itu adalah kode situs web Anda

Ini adalah file conf Default juga Anda akan beberapa detail conf silakan periksa juga.

krishna chandra
sumber
3
Ini tergantung pada sistem.
Lightness Races dengan Monica
Selain komentar oleh @PreferenceBean, ini hanya akan menampilkan konfigurasi untuk vhosts default. Mungkin ada banyak vhosts di sana dengan nama-nama yang tidak berguna yang mungkin juga perlu diperiksa
gabe3886