ฉันจะทราบได้อย่างไรว่ามีรหัสของเว็บไซต์อยู่ที่ไหน


28

ข้อเท็จจริง:

  • มีเว็บไซต์
  • เว็บไซต์นี้สามารถเข้าถึงได้ผ่าน www.example.org
  • มีอินสแตนซ์ EC2 ซึ่งมีแนวโน้มมากที่จะทำให้เว็บไซต์เป็น
  • เซิร์ฟเวอร์คือ Apache
  • ระบบปฏิบัติการเซิร์ฟเวอร์คือ Ubuntu
  • ฉันเข้าถึงเซิร์ฟเวอร์ได้อย่างเต็มที่ (และสิทธิ์ sudo)
  • เซิร์ฟเวอร์เป็นระเบียบมาก

ปัญหาคือฉันไม่มีความคิดที่จะ - เพียงแค่วาง - หา index.html / index.php ซึ่งได้รับการโหลด

ฉันจะทราบได้อย่างไรว่าจะหารหัส PHP และ HTML ของเว็บไซต์ได้อย่างไร มีแนวทางที่เป็นระบบสำหรับปัญหานี้หรือไม่?


คุณรู้จักชื่อโดเมนหรือไม่
the_velour_fog

9
ใช่ฉันระบุไว้ในสัญลักษณ์แสดงหัวข้อย่อยที่สอง
Raffael

find / -name nameofsomefileonthewebsite.html?
user253751

คำตอบ:


53

ก่อนอื่นคุณควรตรวจสอบว่าเว็บไซต์ใดโฮสต์บนเซิร์ฟเวอร์

# apachectl -t -D DUMP_VHOSTS

จากนั้นเมื่อคุณจะพบเว็บไซต์ตรวจสอบไฟล์การกำหนดค่าที่สอดคล้องกันสำหรับตัวเลือก DocumentRoot ตัวอย่างเช่น

# 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

คุณต้องการทราบว่าเว็บไซต์นั้นอยู่ที่ไหน 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

ควรมองหาชื่อแทนและเปลี่ยนเส้นทาง / เขียนใหม่

คุณควรให้ความสนใจกับคำสั่งนามแฝงใด ๆ ตัวอย่างเช่นด้วยการตั้งค่าต่อไปนี้

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

เมื่อคุณจะเข้าถึงhttp://example.net/some.file.html - apache จะดูไฟล์ที่ / vhosts / default / public_html / ในเวลาเดียวกันด้วยhttp://example.net/api/some.file .htmlไฟล์จะถูกดูที่ / vhosts / default / public_api /

สิ่งที่เกี่ยวกับการเขียน / เปลี่ยนเส้นทางโดยเฉพาะอย่างยิ่งการเขียนโปรแกรม (เมื่อการเปลี่ยนเส้นทางถูกทริกเกอร์ด้วยรหัส php บางอย่าง) ฉันคิดว่าไม่มีวิธีที่ง่ายในการค้นหากรณีดังกล่าว


3
ควรมองหาชื่อแทนและเปลี่ยนเส้นทาง / เขียนใหม่
บ๊อบ

3

ลองใช้การค้นหา

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

มิฉะนั้นสมมติว่า Apache ได้รับการติดตั้งจากที่เก็บของ Ubuntu ให้ดู/etc/apache2/sites-availableเช่น

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

หากเว็บไซต์มี apache VHOST ที่กำหนดไว้ซึ่งอาจหาไฟล์ปรับแต่งแล้วให้มองหาไฟล์"documentroot"นี้เพื่อบอกตำแหน่งของซอร์สโค้ดให้คุณทราบ


1
ดี ... ฉัน "ทำ" - ใช้เวลา 2 ชั่วโมงเซิร์ฟเวอร์เกือบหยุดตอบสนองและฉันพบ 67 index.html และเกือบจะมากเท่ากับ index.php ดังนั้นวิธีการที่ไม่ได้ทำเพื่อฉัน
Raffael

2
เป็นความคิดที่ดีที่จะใช้ find ในกรณีเช่นนี้
ALex_hha

1
และอาจเป็นไปได้ว่าคุณควรใช้ไซต์ที่เปิดใช้งานแทน
ALex_hha

1
index.html ไม่ใช่ไฟล์ที่ยอดเยี่ยมสำหรับการค้นหา มี CMSs อยู่สองสามตัวที่วางไว้ในแต่ละไดเรกทอรีในกรณีที่รายชื่อไดเรกทอรีไม่ได้ถูกปิดใน Apache ดังนั้นมันจะโหลดหน้าว่างแทนที่จะแสดงเนื้อหาของไดเรกทอรี
gabe3886

@the_velour_fog ไม่ว่ามันสำคัญสุด ๆ ที่นี่ แต่สิ่ง-type fนี้ใช้ได้เฉพาะกับ-iname "*index.html*"คำสั่งของคุณเท่านั้น ควรเป็น-type f \( -iname "*index.html*" -o -name "*index.php*" \)

2

วิธีอื่นซึ่งอาจมีประโยชน์สำหรับการดีบักเว็บไซต์ (หรือกระบวนการใด ๆ สำหรับเรื่องนั้น) คือการใช้lsof(ซึ่งอาจไม่ได้อยู่ในเส้นทางที่พบโดยทั่วไปใน/sbin/lsof)

lsof -s [PID] จะแสดงรายการไฟล์ทั้งหมดที่กระบวนการที่กำหนดมีหมายเลขอ้างอิงและสามารถเป็นประโยชน์เพื่อดูว่ามีการใช้งานอะไรบ้าง (ซึ่งรวมถึงไฟล์ html / php ของคุณเช่นเดียวกับไฟล์บันทึกและไลบรารีที่ไซต์ต้องการ)


1

ฉันไม่มีความคิดว่าจะหา ... index.html / index.php ที่ได้รับการโหลด

ค้นหาไฟล์ต้นฉบับของหน้า

วิธีหนึ่งคือการเรียกดูไซต์เพื่อค้นหาหน้าเว็บที่มีเอกลักษณ์มากขึ้น - สมมติว่า newcontactform.php - เป็นแนวคิดที่ไม่น่าจะปรากฏในไซต์อื่นที่โฮสต์โดยเซิร์ฟเวอร์เดียวกัน

จากนั้นคุณสามารถลอง

locate newcontactform.php

หากล้มเหลวให้ทำตาม

find / -name newcontactform.php

สิ่งนี้จะสร้างรายชื่อผู้สมัครที่สามารถจัดการได้

จากนั้นคุณสามารถตรวจสอบไฟล์ต่าง ๆ และหากจำเป็นให้ลองเปลี่ยนแปลงเล็ก ๆ น้อย ๆ (เช่นใส่ความคิดเห็น HTML) เพื่อตรวจสอบว่าไฟล์นั้นสร้างหน้าจริง ๆ หรือไม่

ค้นหาการกำหนดค่า

บางครั้งไฟล์กำหนดค่าจะปรากฏในผลลัพธ์ของpsคำสั่ง กรณีที่เลวร้ายที่สุดคือps -ef | grep -e 'apache|httpd'การใช้psตัวเลือกที่สร้างสรรค์มากขึ้นอาจคุ้มค่าที่จะสำรวจ

คุณสามารถค้นหาhttpd.confในตำแหน่งทั่วไปสำหรับ Ubuntu และโครงการ Apache httpd (ซึ่งอาจแตกต่างกัน) หรือเพียงแค่ใช้locateและfindตามข้างต้น

บางครั้งไฟล์กำหนดค่าหลักหมายถึงไฟล์กำหนดค่าอื่น ๆ สำหรับ vhosts คุณสามารถทำสิ่งนี้ได้โดยการระบุไฟล์กำหนดค่าหลัก

กรณีเรื้อรัง

บางครั้งเซิร์ฟเวอร์เก่าจะใช้เว็บเซิร์ฟเวอร์ daemons ที่หลากหลาย ในกรณีนั้นอาจใช้เวลาสักครู่เพื่อค้นหาพวกเขาทั้งหมดและหาว่าไฟล์ config ของพวกเขาอยู่ที่ใด การรวมกันของเทคนิคข้างต้นในที่สุดควรจะประสบความสำเร็จ

คุณสามารถค้นหาสิ่งที่โปรแกรมจะฟังในพอร์ต 80 ฯลฯ netstat -lntpโดยใช้ บ่อยครั้งที่การหาไบนารีเป็นตัวชี้ที่มีประโยชน์กับโครงสร้างไดเรกทอรีที่มีไฟล์กำหนดค่า


1

คุณสามารถตรวจสอบ Vhost สำหรับโดเมนที่คุณกำลังมองหาในไฟล์การกำหนดค่า (apache) ของเว็บเซิร์ฟเวอร์ - httpd.conf (ส่วนใหญ่อยู่ใน / etc /) เพียงแค่เปิดไฟล์และเลื่อนผ่านจนกว่าคุณจะพบคำสั่งVirtulaHostโดเมนของคุณและที่นั่นคุณจะเห็นคำสั่งDocumentRoot - ซึ่งเป็นไดเรกทอรีรากของเว็บไซต์ของคุณสถานที่ที่คุณจะพบไฟล์แอปพลิเคชัน


1

กรุณาไปที่

cd / etc / apache2 / site-avaliable /

ที่นี่คุณจะพบไฟล์กำหนดค่าของคุณ (เช่น: 000-default.conf)

กรุณาเปิดไฟล์นี้ / เปิดไฟล์การกำหนดค่าของคุณโดยใช้

vi 000-default.conf

คุณจะพบ DocumentRoot นั่นคือรหัสของเว็บไซต์ของคุณ

นี่เป็นไฟล์ conf เริ่มต้นเช่นเดียวกันคุณจะได้รับรายละเอียด conf บางส่วนโปรดตรวจสอบไฟล์เหล่านั้นด้วย


3
สิ่งนี้ขึ้นอยู่กับระบบ
การแข่งขัน Lightness กับโมนิก้า

นอกจากความคิดเห็นโดย @PreferenceBean สิ่งนี้จะแสดงการกำหนดค่าสำหรับ vhosts เริ่มต้นเท่านั้น อาจมีหลาย vhosts ที่นั่นด้วยชื่อไร้ประโยชน์ซึ่งอาจต้องตรวจสอบ
gabe3886
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.