Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง
ในที่สุด статье เราพูดคุยเกี่ยวกับ เนเมซิดา WAF ฟรี - เครื่องมือฟรีสำหรับการปกป้องเว็บไซต์และ API จากการโจมตีของแฮกเกอร์ และในเครื่องมือนี้ เราตัดสินใจตรวจสอบเครื่องสแกนช่องโหว่ยอดนิยม วาปิติ.

การสแกนเว็บไซต์เพื่อหาช่องโหว่เป็นมาตรการที่จำเป็น ซึ่งเมื่อประกอบกับการวิเคราะห์ซอร์สโค้ด จะช่วยให้คุณสามารถประเมินระดับความปลอดภัยจากภัยคุกคามจากการประนีประนอมได้ คุณสามารถสแกนทรัพยากรบนเว็บโดยใช้เครื่องมือพิเศษ

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

ในขณะที่ทำงานแบบโต้ตอบ เราจะตอบคำถามและระบุข้อมูลที่จำเป็น เช่น การเข้าสู่ระบบ รหัสผ่าน ฯลฯ:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

ผลลัพธ์จะเป็นไฟล์ในรูปแบบ JSON อีกทางเลือกหนึ่งคือการเพิ่มข้อมูลที่จำเป็นทั้งหมดผ่านพารามิเตอร์ -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

ผลลัพธ์จะคล้ายกัน:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

เมื่อพิจารณาถึงฟังก์ชันการทำงานหลักของสแกนเนอร์ คำขอสุดท้ายสำหรับการทดสอบเว็บแอปพลิเคชันในกรณีของเราคือ:

# 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 ในรูปแบบที่ชัดเจนและอ่านง่าย รายงานจะระบุหมวดหมู่และจำนวนช่องโหว่ที่พบ คำอธิบาย คำขอ และคำสั่ง โค้ง และเคล็ดลับในการปิด เพื่อความสะดวกในการนำทาง จะมีการเพิ่มลิงก์ลงในชื่อหมวดหมู่ โดยคลิกเพื่อไปที่:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

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

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

บางทีโมดูลการทำงานที่ไม่ถูกต้องอาจได้รับการแก้ไขเมื่อเวลาผ่านไป ข้อเสียเปรียบอีกประการหนึ่งของรายงานคือการขาดการระบายสีของช่องโหว่ที่พบ (ขึ้นอยู่กับความสำคัญ) หรืออย่างน้อยก็แบ่งออกเป็นหมวดหมู่ วิธีเดียวที่เราจะเข้าใจถึงความสำคัญของช่องโหว่ที่พบได้โดยอ้อมคือการใช้พารามิเตอร์ --สี ในระหว่างการสแกน จากนั้นช่องโหว่ที่พบจะมีสีต่างกัน:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

แต่รายงานไม่ได้ให้สีดังกล่าว

ช่องโหว่

SQLi

เครื่องสแกนจัดการกับการค้นหา SQLi ได้บางส่วน เมื่อค้นหาช่องโหว่ SQL บนหน้าที่ไม่จำเป็นต้องมีการตรวจสอบสิทธิ์ จะไม่มีปัญหาเกิดขึ้น:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

ไม่สามารถค้นหาช่องโหว่บนหน้าที่เข้าถึงได้หลังจากการตรวจสอบสิทธิ์เท่านั้น แม้จะใช้งานอย่างถูกต้องก็ตาม คุกกี้เนื่องจากมีแนวโน้มมากที่สุดหลังจากการรับรองความถูกต้องสำเร็จ เซสชันของพวกเขาจะถูก "ออกจากระบบ" และ คุกกี้ จะกลายเป็นโมฆะ หากมีการใช้ฟังก์ชันการยกเลิกการอนุญาตเป็นสคริปต์แยกต่างหากที่รับผิดชอบในการประมวลผลขั้นตอนนี้ จะสามารถแยกฟังก์ชันดังกล่าวออกได้อย่างสมบูรณ์ผ่านพารามิเตอร์ -x และด้วยเหตุนี้จึงป้องกันไม่ให้ทริกเกอร์ มิฉะนั้นจะไม่สามารถยกเว้นการประมวลผลได้ นี่ไม่ใช่ปัญหากับโมดูลเฉพาะ แต่กับเครื่องมือโดยรวม แต่เนื่องจากความแตกต่างกันนิดหน่อยนี้ จึงไม่สามารถตรวจพบการฉีดหลายครั้งในพื้นที่ทรัพยากรที่ปิดได้

XSS

เครื่องสแกนรับมือกับงานที่กำหนดได้อย่างสมบูรณ์แบบและพบช่องโหว่ที่เตรียมไว้ทั้งหมด:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

แอลเอฟไอ/อาร์เอฟไอ

เครื่องสแกนพบช่องโหว่ที่ซ่อนอยู่ทั้งหมด:

Wapiti - ตรวจสอบไซต์เพื่อหาช่องโหว่ด้วยตัวเอง

โดยทั่วไป แม้ว่าจะมีผลบวกลวงและช่องโหว่ที่หายไป แต่ Wapiti ซึ่งเป็นเครื่องมือฟรีก็แสดงผลลัพธ์ด้านประสิทธิภาพที่ค่อนข้างดี ไม่ว่าในกรณีใด ควรตระหนักว่าสแกนเนอร์นั้นค่อนข้างทรงพลัง ยืดหยุ่น และใช้งานได้หลากหลาย และที่สำคัญที่สุดคือมันฟรี ดังนั้นจึงมีสิทธิ์ที่จะใช้ในการช่วยให้ผู้ดูแลระบบและนักพัฒนาได้รับข้อมูลพื้นฐานเกี่ยวกับสถานะความปลอดภัยของเว็บ แอปพลิเคชัน.

รักษาสุขภาพให้แข็งแรงและได้รับการปกป้อง!

ที่มา: will.com

เพิ่มความคิดเห็น