Wapiti - เครื่องสแกนช่องโหว่บนเว็บ
Wapiti เป็นเครื่องสแกนช่องโหว่บนเว็บที่เขียนด้วย Python
http://wapiti-scanner.github.io/
ความต้องการ
เพื่อให้ทำงานได้อย่างถูกต้อง Wapiti จำเป็นต้องมี Python 3.10 หรือ 3.11
การพึ่งพาโมดูล Python ทั้งหมดจะถูกติดตั้งโดยอัตโนมัติหากคุณใช้สคริปต์ setup.py หรือ pip install wapiti3
ดู INSTALL.md สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการติดตั้ง
การรัน Wapiti บน Windows สามารถทำได้ผ่านการใช้ WSL
มันทำงานอย่างไร
Wapiti ทำงานเป็นเครื่องสแกนช่องโหว่แบบ "กล่องดำ" ซึ่งหมายความว่าจะไม่ศึกษาซอร์สโค้ดของเว็บแอปพลิเคชัน แต่จะทำงานเหมือนเครื่องดักฟัง สแกนหน้าของเว็บแอปพลิเคชันที่ใช้งาน แยกลิงก์และแบบฟอร์ม และโจมตีสคริปต์ ส่งเพย์โหลดและค้นหาข้อความแสดงข้อผิดพลาด สตริงพิเศษ หรือพฤติกรรมที่ผิดปกติ
คุณสมบัติทั่วไป
- สร้างรายงานช่องโหว่ในรูปแบบต่างๆ (HTML, XML, JSON, TXT, CSV)
- สามารถระงับและดำเนินการสแกนหรือโจมตีต่อได้ (กลไกเซสชันที่ใช้ฐานข้อมูล sqlite3)
- สามารถให้สีแก่คุณในเทอร์มินัลเพื่อเน้นจุดอ่อน
- การใช้คำฟุ่มเฟือยในระดับต่างๆ
- วิธีที่ง่ายและรวดเร็วในการเปิดใช้งาน/ปิดใช้งานโมดูลการโจมตี
- การเพิ่มเพย์โหลดสามารถทำได้ง่ายเหมือนกับการเพิ่มบรรทัดลงในไฟล์ข้อความ
- จำนวนงานพร้อมกันที่กำหนดค่าได้เพื่อดำเนินการร้องขอ HTTP
คุณสมบัติการท่องเว็บ
- รองรับพร็อกซี HTTP, HTTPS และ SOCKS5
- การรับรองความถูกต้อง HTTP บนเป้าหมาย (Basic, Digest, NTLM)
- การรับรองความถูกต้องโดยการกรอกแบบฟอร์มเข้าสู่ระบบ
- ความสามารถในการจำกัดขอบเขตของการสแกน (โดเมน, โฟลเดอร์, หน้า, url)
- การลบพารามิเตอร์ตั้งแต่หนึ่งรายการขึ้นไปใน URL โดยอัตโนมัติ
- การป้องกันหลายประการจากการสแกนแบบวนซ้ำไม่รู้จบ (เช่น การจำกัดค่าสำหรับพารามิเตอร์)
- ความเป็นไปได้ที่จะตั้งค่า URL แรกที่จะสำรวจ (แม้ว่าจะไม่อยู่ในขอบเขตก็ตาม)
- สามารถยกเว้น URL บางส่วนของการสแกนและการโจมตีได้ (เช่น URL การออกจากระบบ)
- นำเข้าคุกกี้จากเบราว์เซอร์ Chrome หรือ Firefox ของคุณหรือใช้เครื่องมือ wapiti-getcookie
- สามารถเปิด/ปิดการตรวจสอบใบรับรอง SSL ได้
- แยก URL จากไฟล์ Flash SWF
- พยายามแยก URL จากจาวาสคริปต์ (ล่าม JS พื้นฐานมาก)
- ทราบ HTML5 (เข้าใจแท็ก HTML ล่าสุด)
- มีหลายตัวเลือกในการควบคุมพฤติกรรมและขีดจำกัดของโปรแกรมรวบรวมข้อมูล
- ข้ามชื่อพารามิเตอร์บางตัวระหว่างการโจมตี
- การตั้งเวลาสูงสุดสำหรับกระบวนการสแกน
- การเพิ่มส่วนหัว HTTP ที่กำหนดเองหรือการตั้งค่า User-Agent ที่กำหนดเอง
- การใช้เบราว์เซอร์ที่ไม่มีส่วนหัวของ Firefox สำหรับการรวบรวมข้อมูล
- กำลังโหลดโค้ด python ของคุณเองสำหรับกรณีการตรวจสอบสิทธิ์ที่ซับซ้อน (ดูตัวเลือก --form-script)
- การเพิ่ม URL หรือ PATH ที่กำหนดเองเพื่ออัปเดตฐานข้อมูล Wappalyzer
- สแกน REST API ด้วยไฟล์ OpenAPI (ผยอง)
การโจมตีที่รองรับ
- การฉีด SQL (ตามข้อผิดพลาด, อิงบูลีน, ตามเวลา) และการฉีด XPath
- การฉีด LDAP (ตามข้อผิดพลาดและตามบูลีน)
- Cross Site Scripting (XSS) สะท้อนให้เห็นและถาวร
- การตรวจจับการเปิดเผยไฟล์ (รวมภายในและระยะไกล, ต้องการ, fopen, readfile...)
- การตรวจจับการดำเนินการคำสั่ง (eval(), system(), passtru()...)
- การฉีด XXE (Xml eXternal Entity)
- การฉีด CRLF
- ค้นหาไฟล์ที่อาจเป็นอันตรายบนเซิร์ฟเวอร์ (ขอบคุณ Nikto db)
- ข้ามการกำหนดค่า htaccess ที่อ่อนแอ
- ค้นหาสำเนา (สำรอง) ของสคริปต์บนเซิร์ฟเวอร์
- เชลล์ช็อค
- การแจงนับโฟลเดอร์และไฟล์ (เช่น DirBuster)
- การปลอมแปลงคำขอฝั่งเซิร์ฟเวอร์ (ผ่านการใช้เว็บไซต์ Wapiti ภายนอก)
- เปิดการเปลี่ยนเส้นทาง
- การตรวจหาวิธี HTTP ที่ผิดปกติ (เช่น PUT)
- ผู้ประเมิน CSP ขั้นพื้นฐาน
- แบบฟอร์มเข้าสู่ระบบ Brute Force (ใช้รายการพจนานุกรม)
- กำลังตรวจสอบส่วนหัวความปลอดภัย HTTP
- การตรวจสอบการตั้งค่าสถานะความปลอดภัยของคุกกี้ (การตั้งค่าสถานะที่ปลอดภัยและ httponly)
- การตรวจจับขั้นพื้นฐานการปลอมแปลงคำขอข้ามไซต์ (CSRF)
- การพิมพ์ลายนิ้วมือของเว็บแอปพลิเคชันโดยใช้ฐานข้อมูล Wappalyzer ให้ข้อมูล CVE ที่เกี่ยวข้อง
- การแจงนับโมดูล CMS สำหรับ Wordpress, Drupal, Joomla, SPIP ฯลฯ
- การตรวจจับการครอบครองโดเมนย่อย
- การตรวจจับ Log4Shell (CVE-2021-44228)
- การตรวจจับ Spring4Shell (CVE-2020-5398)
- ตรวจสอบการเปลี่ยนเส้นทาง https
- ตรวจสอบช่องโหว่ในการอัพโหลดไฟล์
- การตรวจจับอุปกรณ์เครือข่าย
- ฉีดเพย์โหลดภายในเนื้อหา JSON ด้วย
Wapiti รองรับทั้งวิธี GET และ POST HTTP สำหรับการโจมตี นอกจากนี้ยังรองรับหลายส่วนและสามารถแทรกเพย์โหลดในชื่อไฟล์ (อัปโหลด) แสดงคำเตือนเมื่อพบความผิดปกติ (เช่น ข้อผิดพลาด 500 ข้อและการหมดเวลา) สร้างความแตกต่างระหว่างช่องโหว่ XSS แบบถาวรและแบบสะท้อน
ชื่อโมดูล
การโจมตีดังกล่าวเชื่อมโยงกับชื่อโมดูลต่อไปนี้:
- การสำรองข้อมูล (ค้นหาสำเนาของสคริปต์และไฟล์เก็บถาวรบนเว็บเซิร์ฟเวอร์)
- brute_login_form (แบบฟอร์มเข้าสู่ระบบ Brute Force โดยใช้รายการพจนานุกรม)
- บัสเตอร์ (เช่นโมดูล DirBuster)
- cms (สแกนเพื่อตรวจจับ CMS และเวอร์ชัน)
- cookieflags (ตรวจสอบ Secure และ HttpOnly flags)
- crlf (การฉีด CR-LF ในส่วนหัว HTTP)
- csp (ตรวจจับการขาด CSP หรือการกำหนดค่า CSP ที่อ่อนแอ)
- csrf (ตรวจจับแบบฟอร์มที่ไม่ได้รับการป้องกันจาก CSRF หรือใช้โทเค็นต่อต้าน CSRF ที่อ่อนแอ)
- exec (การเรียกใช้โค้ดหรือการฉีดคำสั่ง)
- ไฟล์ (การข้ามเส้นทาง การรวมไฟล์ ฯลฯ)
- htaccess (ข้อจำกัด htaccess ที่กำหนดค่าไม่ถูกต้อง)
- htp (ระบุเทคโนโลยีเว็บที่ใช้ฐานข้อมูล HashThePlanet)
- http_header (ตรวจสอบส่วนหัวความปลอดภัย HTTP)
- https_redirect (ตรวจสอบการเปลี่ยนเส้นทาง https)
- ldap (การตรวจจับการฉีด LDAP ตามข้อผิดพลาดและบูลีน)
- log4shell (ตรวจจับเว็บไซต์ที่เสี่ยงต่อ CVE-2021-44228)
- วิธีการ (ค้นหาวิธี HTTP ที่มีอยู่ทั่วไปเช่น PUT)
- network_device (ค้นหาไฟล์ทั่วไปเพื่อตรวจจับอุปกรณ์เครือข่าย)
- Nikto (ค้นหาช่องโหว่ที่ทราบโดยการทดสอบการมีอยู่ของ URL และตรวจสอบการตอบสนอง)
- Permanentxss (สแกนเป้าหมายทั้งหมดอีกครั้งหลังจากดำเนินการโมดูล xss โดยมองหาเพย์โหลดที่ไม่บริสุทธิ์ก่อนหน้านี้)
- เปลี่ยนเส้นทาง (เปิดการเปลี่ยนเส้นทาง)
- shellshock (ทดสอบการโจมตี Shellshock ดู Wikipedia)
- spring4shell (ตรวจจับเว็บไซต์ที่เสี่ยงต่อ CVE-2020-5398)
- sql (การตรวจจับการฉีด SQL แบบอิงข้อผิดพลาดและแบบบูลีน)
- ssl (ประเมินความปลอดภัยของการกำหนดค่าใบรับรอง SSL/TLS ต้องใช้ sslscan)
- ssrf (การปลอมแปลงคำขอฝั่งเซิร์ฟเวอร์)
- การเทคโอเวอร์ (การครอบครองโดเมนย่อย)
- timesql (ตรวจพบช่องโหว่การฉีด SQL ด้วยวิธีตามเวลา)
- อัพโหลด (ช่องโหว่ในการอัพโหลดไฟล์)
- wapp (ไม่ใช่โมดูลการโจมตี ดึงเทคโนโลยีเว็บด้วยเวอร์ชันและหมวดหมู่ที่ใช้งานบนเป้าหมาย ค้นหา CVE ที่เกี่ยวข้อง)
- wp_enum (ระบุปลั๊กอินและธีมบนเว็บไซต์ Wordpress)
- xss (โมดูลการฉีด XSS)
- xxe (การโจมตีเอนทิตี XML ภายนอก)
ชื่อโมดูลสามารถกำหนดให้เป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคโดยใช้ตัวเลือก "-m" หรือ "--module"
ทำอย่างไรจึงจะได้ผลดีที่สุด
หากต้องการค้นหาช่องโหว่เพิ่มเติม (เนื่องจากการโจมตีบางอย่างมีข้อผิดพลาด) คุณสามารถแก้ไขการกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณได้
ตัวอย่างเช่น คุณสามารถตั้งค่าต่อไปนี้ในการกำหนดค่า PHP ของคุณ:
safe_mode = ปิด
display_errors = เปิด (แนะนำ)
magic_quotes_gpc = ปิด
Allow_url_fopen = เปิด
mysql.trace_mode = เปิด
จะขอความช่วยเหลือได้ที่ไหน
ในพรอมต์ เพียงพิมพ์คำสั่งต่อไปนี้เพื่อรับการใช้งานพื้นฐาน:
วาปิติ -h
คุณยังสามารถดู manpage (wapiti.1 หรือ wapiti.1.html) เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละตัวเลือกได้
เรายังมีวิกิอย่างเป็นทางการซึ่งละเอียดถี่ถ้วนกว่า: https://github.com/wapiti-scanner/wapiti/wiki
หากคุณมีคำถามอื่น ให้ตรวจสอบคำถามที่พบบ่อยก่อน
หากคุณพบข้อบกพร่อง ให้กรอกปัญหา: https://github.com/wapiti-scanner/wapiti/issues
จะช่วยโครงการวาปิติได้อย่างไร
คุณสามารถ:
- สนับสนุนโครงการด้วยการบริจาค ( http://sf.net/donate/index.php?group_id=168625 )
- สร้างหรือปรับปรุงโมดูลการโจมตี
- สร้างหรือปรับปรุงตัวสร้างและเทมเพลตรายงาน
- ส่งการแก้ไขข้อบกพร่อง แพตช์...
- เขียน GUI บางส่วน
- สร้างเครื่องมือในการแปลงไฟล์ PCAP เป็นไฟล์เซสชัน Wapiti sqlite3
- พูดคุยเกี่ยวกับวาปิติรอบตัวคุณ
การออกใบอนุญาต
Wapiti ได้รับการเผยแพร่ภายใต้ GNU General Public License เวอร์ชัน 2 (GPL) ซอร์สโค้ดมีอยู่ใน Github
สร้างโดย Nicolas SURRIBAS
สปอนเซอร์
ไซเบอร์วอทช์ https://cyberwatch.fr/
ความปลอดภัยสำหรับทุกคน https://securityforeveryone.com/
ข้อสงวนสิทธิ์
Wapiti เป็นซอฟต์แวร์รักษาความปลอดภัยทางไซเบอร์ ดำเนินการประเมินความปลอดภัยบนเป้าหมายที่ให้มา ซึ่งอาจนำไปสู่การทำงานผิดปกติและการล่มที่เป้าหมาย รวมถึงข้อมูลที่อาจสูญหายได้
การใช้ Wapiti เพื่อโจมตีเป้าหมายโดยไม่ได้รับความยินยอมจากเจ้าของล่วงหน้าถือเป็นการกระทำที่ผิดกฎหมาย เป็นความรับผิดชอบของผู้ใช้ในการปฏิบัติตามกฎหมายท้องถิ่นที่เกี่ยวข้องทั้งหมด
นักพัฒนาและผู้ที่เกี่ยวข้องกับโครงการ Wapiti จะไม่รับผิดชอบ และไม่รับผิดชอบต่อการใช้งานในทางที่ผิดหรือความเสียหายที่เกิดจากโปรแกรมนี้