ในที่สุด
การสแกนเว็บไซต์เพื่อหาช่องโหว่เป็นมาตรการที่จำเป็น ซึ่งเมื่อประกอบกับการวิเคราะห์ซอร์สโค้ด จะช่วยให้คุณสามารถประเมินระดับความปลอดภัยจากภัยคุกคามจากการประนีประนอมได้ คุณสามารถสแกนทรัพยากรบนเว็บโดยใช้เครื่องมือพิเศษ
Nikto, W3af (เขียนด้วย Python 2.7 ซึ่งไม่รองรับอีกต่อไป) หรือ Arachni (ไม่รองรับอีกต่อไปตั้งแต่เดือนกุมภาพันธ์) เป็นโซลูชันที่ได้รับความนิยมสูงสุดที่นำเสนอในกลุ่มฟรี แน่นอนว่ายังมีอย่างอื่นอีก เช่น วาปิติ ที่เราตัดสินใจเน้นไป
Wapiti ทำงานร่วมกับช่องโหว่ประเภทต่อไปนี้:
- การขยายไฟล์ (ภายในและระยะไกล, fopen, readfile);
- การฉีด (การฉีด PHP / JSP / ASP / SQL และการฉีด XPath);
- XSS (การเขียนสคริปต์ข้ามไซต์) (แบบสะท้อนและแบบถาวร);
- การตรวจจับและการดำเนินการคำสั่ง (eval(), system(), passtru());
- การฉีด CRLF (การแยกการตอบสนอง HTTP, การตรึงเซสชัน);
- การฝัง XXE (เอนทิตีภายนอก XML)
- SSRF (การปลอมแปลงคำขอฝั่งเซิร์ฟเวอร์);
- การใช้ไฟล์ที่ทราบว่าอาจเป็นอันตราย (ขอบคุณฐานข้อมูล Nikto)
- การกำหนดค่า .htaccess ที่อ่อนแอซึ่งสามารถข้ามได้
- การมีไฟล์สำรองที่เปิดเผยข้อมูลที่เป็นความลับ (การเปิดเผยซอร์สโค้ด)
- เชลล์ช็อค;
- เปิดการเปลี่ยนเส้นทาง
- วิธี HTTP ที่ไม่ได้มาตรฐานที่สามารถแก้ไขได้ (PUT)
คุณสมบัติ:
- รองรับพร็อกซี HTTP, HTTPS และ SOCKS5;
- การรับรองความถูกต้องโดยใช้หลายวิธี: Basic, Digest, Kerberos หรือ NTLM;
- ความสามารถในการจำกัดพื้นที่การสแกน (โดเมน, โฟลเดอร์, หน้า, URL)
- การลบพารามิเตอร์ตัวใดตัวหนึ่งใน URL โดยอัตโนมัติ
- ข้อควรระวังหลายประการต่อการวนซ้ำการสแกนที่ไม่มีที่สิ้นสุด (ตัวอย่าง: ifor การจำกัดค่าสำหรับพารามิเตอร์)
- ความสามารถในการกำหนดลำดับความสำคัญในการตรวจสอบ URL (แม้ว่าจะไม่อยู่ในพื้นที่สแกนก็ตาม)
- ความสามารถในการยกเว้น URL บางส่วนจากการสแกนและการโจมตี (เช่น การออกจากระบบ URL)
- นำเข้าคุกกี้ (รับโดยใช้เครื่องมือ wapiti-getcookie)
- ความสามารถในการเปิดใช้งาน/ปิดใช้งานการตรวจสอบใบรับรอง SSL;
- ความสามารถในการแยก URL จาก JavaScript (ล่าม JS ที่ง่ายมาก);
- การโต้ตอบกับ HTML5;
- หลายทางเลือกสำหรับการจัดการพฤติกรรมและข้อจำกัดของโปรแกรมรวบรวมข้อมูล
- การตั้งเวลาสูงสุดสำหรับกระบวนการสแกน
- เพิ่มส่วนหัว HTTP ที่กำหนดเองหรือตั้งค่า User-Agent ที่กำหนดเอง
คุณลักษณะเพิ่มเติม:
- การสร้างรายงานช่องโหว่ในรูปแบบต่าง ๆ (HTML, XML, JSON, TXT)
- การหยุดชั่วคราวและดำเนินการสแกนหรือโจมตีต่อ (กลไกเซสชันโดยใช้ฐานข้อมูล SQLite3)
- ไฟแบ็คไลท์ในเทอร์มินัลเพื่อเน้นช่องโหว่
- ระดับต่างๆ ของการตัดไม้
- วิธีที่ง่ายและรวดเร็วในการเปิดใช้งาน/ปิดใช้งานโมดูลการโจมตี
การติดตั้ง
Wapiti เวอร์ชันปัจจุบันสามารถติดตั้งได้ 2 วิธี:
- ดาวน์โหลดแหล่งที่มาจากทางการ
сайта และรันสคริปต์การติดตั้งโดยติดตั้ง Python3 ไว้ก่อนหน้านี้ - ใช้คำสั่ง pip3 ติดตั้ง wapiti3
หลังจากนี้วาปิติก็พร้อมลุย
การทำงานกับเครื่องมือ
เพื่อสาธิตการทำงานของ Wapiti เราจะใช้ไซต์ vulns.pentestit.ru ที่จัดเตรียมไว้เป็นพิเศษ (แหล่งข้อมูลภายใน) ซึ่งมีช่องโหว่ต่างๆ (Injection, XSS, LFI/RFI) และข้อบกพร่องอื่นๆ ของเว็บแอปพลิเคชัน
ข้อมูลนี้จัดทำขึ้นเพื่อวัตถุประสงค์ในการให้ข้อมูลเท่านั้น อย่าฝ่าฝืนกฎหมาย!
คำสั่งพื้นฐานในการเปิดเครื่องสแกน:
# wapiti -u <target> <options>
ในขณะเดียวกันก็มีความช่วยเหลือโดยละเอียดเกี่ยวกับตัวเลือกการเปิดตัวจำนวนมากเช่น:
--ขอบเขต - พื้นที่ใช้งาน
หากคุณระบุพารามิเตอร์ขอบเขตพร้อมกับ URL การรวบรวมข้อมูล คุณสามารถปรับพื้นที่การรวบรวมข้อมูลของไซต์ได้โดยการระบุทั้งหน้าเดียวและทุกหน้าที่พบในไซต์
-s и -x — ตัวเลือกในการเพิ่มหรือลบ URL ที่ต้องการ ตัวเลือกเหล่านี้มีประโยชน์เมื่อคุณต้องการเพิ่มหรือลบ URL ที่ระบุในระหว่างกระบวนการรวบรวมข้อมูล
--ข้าม — พารามิเตอร์ที่ระบุด้วยคีย์นี้จะถูกสแกน แต่จะไม่ถูกโจมตี มีประโยชน์หากมีพารามิเตอร์ที่เป็นอันตรายใดๆ ที่ได้รับการยกเว้นระหว่างการสแกนอย่างดีที่สุด
--ยืนยัน-ssl — เปิดหรือปิดการตรวจสอบใบรับรอง
เครื่องสแกน Wapiti เป็นแบบโมดูลาร์ อย่างไรก็ตาม หากต้องการเปิดโมดูลเฉพาะ รวมถึงโมดูลที่เชื่อมต่อโดยอัตโนมัติในขณะที่เครื่องสแกนกำลังทำงาน คุณต้องใช้สวิตช์ -m และแสดงรายการโมดูลที่คุณต้องการ โดยคั่นด้วยเครื่องหมายจุลภาค หากไม่ได้ใช้คีย์ โมดูลทั้งหมดจะทำงานตามค่าเริ่มต้น ในเวอร์ชันที่ง่ายที่สุดจะมีลักษณะดังนี้:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe
ตัวอย่างการใช้งานนี้หมายความว่าเราจะใช้โมดูล SQL, XSS และ XXE เท่านั้นเมื่อสแกนเป้าหมาย นอกจากนี้ คุณยังสามารถกรองการทำงานของโมดูลได้ตามวิธีการที่ต้องการ ตัวอย่างเช่น -m “xss: รับ, blindsql: โพสต์, xxe: โพสต์”. ในกรณีนี้คือโมดูล xss จะนำไปใช้กับคำขอที่ส่งโดยใช้วิธี GET และโมดูล blibdsql - ไปยังคำขอ POST ฯลฯ อย่างไรก็ตาม หากไม่จำเป็นต้องใช้โมดูลบางตัวที่รวมอยู่ในรายการในระหว่างการสแกนหรือใช้เวลานานมาก เมื่อกด Ctrl+C ร่วมกัน คุณสามารถข้ามการใช้โมดูลปัจจุบันได้โดยเลือกรายการที่เกี่ยวข้องในเมนูโต้ตอบ
Wapiti รองรับการส่งคำขอผ่านพร็อกซีโดยใช้คีย์ -p และการรับรองความถูกต้องบนไซต์เป้าหมายผ่านพารามิเตอร์ -a. คุณยังสามารถระบุประเภทการรับรองความถูกต้องได้: ขั้นพื้นฐาน, ย่อยอาหาร, Kerberos и NTLM. สองอันสุดท้ายอาจต้องมีการติดตั้งโมดูลเพิ่มเติม นอกจากนี้ คุณยังสามารถแทรกส่วนหัวใดๆ ลงในคำขอได้ (รวมถึงไฟล์ที่ต้องการ) User-Agent) และอีกมากมาย
หากต้องการใช้การรับรองความถูกต้องคุณสามารถใช้เครื่องมือนี้ได้ wapiti-getcookie. ด้วยความช่วยเหลือที่เราสร้าง คุกกี้ซึ่ง Wapiti จะใช้ในการสแกน รูปแบบ คุกกี้ เสร็จสิ้นด้วยคำสั่ง:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json
ในขณะที่ทำงานแบบโต้ตอบ เราจะตอบคำถามและระบุข้อมูลที่จำเป็น เช่น การเข้าสู่ระบบ รหัสผ่าน ฯลฯ:
ผลลัพธ์จะเป็นไฟล์ในรูปแบบ JSON อีกทางเลือกหนึ่งคือการเพิ่มข้อมูลที่จำเป็นทั้งหมดผ่านพารามิเตอร์ -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"
ผลลัพธ์จะคล้ายกัน:
เมื่อพิจารณาถึงฟังก์ชันการทำงานหลักของสแกนเนอร์ คำขอสุดท้ายสำหรับการทดสอบเว็บแอปพลิเคชันในกรณีของเราคือ:
# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128
โดยที่ท่ามกลางพารามิเตอร์อื่น ๆ :
-f и -o — รูปแบบและเส้นทางสำหรับการบันทึกรายงาน
-m — ไม่แนะนำให้เชื่อมต่อโมดูลทั้งหมดเพราะว่า จะส่งผลต่อเวลาในการทดสอบและขนาดรายงาน
--สี — เน้นช่องโหว่ที่พบขึ้นอยู่กับความวิพากษ์วิจารณ์ตาม Wapiti เอง
-c - การใช้ไฟล์ที่มี คุกกี้สร้างขึ้นโดยใช้ wapiti-getcookie;
--ขอบเขต — การเลือกเป้าหมายที่จะโจมตี การเลือกตัวเลือก โฟลเดอร์ ทุก URL จะถูกรวบรวมข้อมูลและโจมตี โดยเริ่มจาก URL ฐาน URL พื้นฐานต้องมีเครื่องหมายทับ (ไม่มีชื่อไฟล์)
--ฟลัชเซสชัน — ช่วยให้สามารถสแกนซ้ำได้ โดยจะไม่คำนึงถึงผลลัพธ์ก่อนหน้านี้
-A - เป็นเจ้าของ User-Agent;
-p — ที่อยู่พร็อกซีเซิร์ฟเวอร์ หากจำเป็น
เล็กน้อยเกี่ยวกับรายงาน
ผลลัพธ์การสแกนจะแสดงในรูปแบบรายงานโดยละเอียดเกี่ยวกับช่องโหว่ที่พบทั้งหมดในรูปแบบหน้า HTML ในรูปแบบที่ชัดเจนและอ่านง่าย รายงานจะระบุหมวดหมู่และจำนวนช่องโหว่ที่พบ คำอธิบาย คำขอ และคำสั่ง โค้ง และเคล็ดลับในการปิด เพื่อความสะดวกในการนำทาง จะมีการเพิ่มลิงก์ลงในชื่อหมวดหมู่ โดยคลิกเพื่อไปที่:
ข้อเสียเปรียบที่สำคัญของรายงานคือการไม่มีแผนที่แอปพลิเคชันเว็บ หากไม่มีสิ่งนี้จะไม่ชัดเจนว่ามีการวิเคราะห์ที่อยู่และพารามิเตอร์ทั้งหมดหรือไม่ นอกจากนี้ยังมีความเป็นไปได้ที่จะเกิดผลบวกลวงอีกด้วย ในกรณีของเรา รายงานประกอบด้วย "ไฟล์สำรอง" และ "ไฟล์ที่อาจเป็นอันตราย" หมายเลขของพวกเขาไม่สอดคล้องกับความเป็นจริงเนื่องจากไม่มีไฟล์ดังกล่าวบนเซิร์ฟเวอร์:
บางทีโมดูลการทำงานที่ไม่ถูกต้องอาจได้รับการแก้ไขเมื่อเวลาผ่านไป ข้อเสียเปรียบอีกประการหนึ่งของรายงานคือการขาดการระบายสีของช่องโหว่ที่พบ (ขึ้นอยู่กับความสำคัญ) หรืออย่างน้อยก็แบ่งออกเป็นหมวดหมู่ วิธีเดียวที่เราจะเข้าใจถึงความสำคัญของช่องโหว่ที่พบได้โดยอ้อมคือการใช้พารามิเตอร์ --สี ในระหว่างการสแกน จากนั้นช่องโหว่ที่พบจะมีสีต่างกัน:
แต่รายงานไม่ได้ให้สีดังกล่าว
ช่องโหว่
SQLi
เครื่องสแกนจัดการกับการค้นหา SQLi ได้บางส่วน เมื่อค้นหาช่องโหว่ SQL บนหน้าที่ไม่จำเป็นต้องมีการตรวจสอบสิทธิ์ จะไม่มีปัญหาเกิดขึ้น:
ไม่สามารถค้นหาช่องโหว่บนหน้าที่เข้าถึงได้หลังจากการตรวจสอบสิทธิ์เท่านั้น แม้จะใช้งานอย่างถูกต้องก็ตาม คุกกี้เนื่องจากมีแนวโน้มมากที่สุดหลังจากการรับรองความถูกต้องสำเร็จ เซสชันของพวกเขาจะถูก "ออกจากระบบ" และ คุกกี้ จะกลายเป็นโมฆะ หากมีการใช้ฟังก์ชันการยกเลิกการอนุญาตเป็นสคริปต์แยกต่างหากที่รับผิดชอบในการประมวลผลขั้นตอนนี้ จะสามารถแยกฟังก์ชันดังกล่าวออกได้อย่างสมบูรณ์ผ่านพารามิเตอร์ -x และด้วยเหตุนี้จึงป้องกันไม่ให้ทริกเกอร์ มิฉะนั้นจะไม่สามารถยกเว้นการประมวลผลได้ นี่ไม่ใช่ปัญหากับโมดูลเฉพาะ แต่กับเครื่องมือโดยรวม แต่เนื่องจากความแตกต่างกันนิดหน่อยนี้ จึงไม่สามารถตรวจพบการฉีดหลายครั้งในพื้นที่ทรัพยากรที่ปิดได้
XSS
เครื่องสแกนรับมือกับงานที่กำหนดได้อย่างสมบูรณ์แบบและพบช่องโหว่ที่เตรียมไว้ทั้งหมด:
แอลเอฟไอ/อาร์เอฟไอ
เครื่องสแกนพบช่องโหว่ที่ซ่อนอยู่ทั้งหมด:
โดยทั่วไป แม้ว่าจะมีผลบวกลวงและช่องโหว่ที่หายไป แต่ Wapiti ซึ่งเป็นเครื่องมือฟรีก็แสดงผลลัพธ์ด้านประสิทธิภาพที่ค่อนข้างดี ไม่ว่าในกรณีใด ควรตระหนักว่าสแกนเนอร์นั้นค่อนข้างทรงพลัง ยืดหยุ่น และใช้งานได้หลากหลาย และที่สำคัญที่สุดคือมันฟรี ดังนั้นจึงมีสิทธิ์ที่จะใช้ในการช่วยให้ผู้ดูแลระบบและนักพัฒนาได้รับข้อมูลพื้นฐานเกี่ยวกับสถานะความปลอดภัยของเว็บ แอปพลิเคชัน.
รักษาสุขภาพให้แข็งแรงและได้รับการปกป้อง!
ที่มา: will.com