# ***Roadmap WebSec Warrior*** # 1. Kiến thức cần chuẩn bị (3-4 tháng) ![image](https://hackmd.io/_uploads/HJUHfUm-Jl.png) ### I. Am hiểu về các ngôn ngữ lập trình - Lập trình C/C++ (3 tháng) để làm quen với ngôn ngữ lập trình và xem bản thân có phù hợp với ngành CNTT không. - Java Core: Hiểu sâu về OOP - Spring Boot: Hiểu sâu về Spring Boot, sẽ phục vụ tốt nhất cho kĩ năng Review code - PHP Web cơ bản: Hiểu về cơ chế client - server - database - Python (obligatory): Phục vụ cho việc tự động hoá một số tác vụ như viết script khai thác. Đây là ngôn ngữ quan trọng nhất đối với những ai theo Websec (Learn Python the Hard Way). - Go(Optional): Phục vụ cho việc tự động hoá một số tác vụ, web server, tool fuzz vì multithread dễ. - JavaScript(Optional) - (and its families: NodeJS, ReactJS, AngularJS, VUEJS,...): Đôi khi trong việc pentest, sẽ có các sản phẩm dạng web view, sử dụng khá nhiều script - C#/.NET : Master Java Core, Java web rồi học cũng được. - SQL: Hiểu cơ bản nhất về DB, khuyến khích start với Mysql/MariaDB/MongoDB. Nâng cao đùi thì MSSQL/Postgresql/Oracle Học tất cả ở: - [geeksforgeek](https://www.geeksforgeeks.org/) - [w3schools](https://www.w3schools.com/) - Cú pháp thần chưởng: awesome + something you want +, https://asmcn.icopy.site/ (awesome list chinese) - Cần tìm source code: Thứ cần tìm bằng English -> dịch sang tiếng china simplified rồi tìm kiếm, có thể dùng hẳn 1 số trang của trung quốc như `baidu`,... - Ngoài ra, việc đi code web nhiều để hiểu biết web nó hoạt động như nào, các design pattern họ hay dùng là gì, quen với các lang và setup các component trong web system như server, proxy, load balancing. Chính những kiến thức nền này sẽ giúp ích rất nhiều khi đi review source code. ### II. Thành thạo sử dụng các hệ điều hành UNIX/LINUX - Lý thuyết thì [distro](https://github.com/hocchudong/thuctap012017/blob/master/TamNT/TimHieuLinux/T%C3%ACm%20hi%E1%BB%83u%20DISTRO%20v%C3%A0%20ph%C3%A2n%20bi%E1%BB%87t%20c%C3%A1c%20DISTRO%20ph%E1%BB%95%20bi%E1%BA%BFn.md), rcm Ubuntu, Kali khi mới bắt đầu. Sau này khi đã quen có thể tìm tới Fedora hoặc Arch. Luyện tập: - https://overthewire.org/wargames/bandit/bandit2.html - picoCTF mảng General Skills ### III. Networking - Đơn giản thì không hiểu được cấu trúc của một hệ thống thì khó mà đánh giá được mức độ ảnh hưởng và chọn bàn đạp tấn công sâu. Luyện tập cơ bản: - What is Networking? https://tryhackme.com/room/whatisnetworking - Introduction to Networking https://tryhackme.com/room/introtonetworking - https://viblo.asia/p/basic-networking-1VgZvVxMZAw - https://topdev.vn/blog/kien-thuc-ve-mang-may-tinh/ - https://topdev.vn/blog/kien-thuc-ve-mang-may-tinh-p2/?utm_source=google&utm_medium=cpc&utm_campaign=pmax-branding&utm_content=performance&gad_source=1&gclid=Cj0KCQjwm5e5BhCWARIsANwm06gRRj8lG6a0PED4TMy7AoUJkfNZGwUVlEYJOU_-n5-UyYTdaJJDZREaApFAEALw_wcB - Smag Grotto https://tryhackme.com/room/smaggrotto - Overpass 2 https://tryhackme.com/room/overpass2hacked - For Business Reasons https://tryhackme.com/room/forbusinessreasons - ContainMe https://tryhackme.com/room/containme1 Luyện tập chuyên sâu: - Tìm hiểu các kỹ thuật Port Forwarding, Tunneling ( icmp tunnel, ssh tunnel) and Privoting *Này trên mạng nhiều quá lười gắn link :D* # 2. Tiến cấp (2 năm) ### I. Học và phân tích các lỗ hổng Web cơ bản nhất Về cơ bản, các ứng dụng web hiện nay sẽ có các lỗ hổng bảo mật được chia thành 2 loại chính như sau Server-side và Client-side. Khi học và làm lab về websec có 3 loại: Black box, Grey box và White box - Black box là một cuộc tấn công giống như tin tặc, bạn phải tự mình xử lý mọi thứ - Grey box cũng là một cuộc tấn công, nhưng với sự trợ giúp của khách hàng, author như xóa tường lửa ứng dụng web trước khi tấn công - White box là cung cấp nguồn để đọc và tìm lỗ hổng thông qua việc review source. ***Funny fact**: Có khả năng rất cao là sẽ gặp Black box rất nhiều, nghĩa là bạn sẽ phải xử lý một thứ gọi là Web App Firewall (WAF), lúc này sẽ cần "BYPASS" skills và CTF sẽ dạy kỹ năng đó.* Luyện tập: - OWASP Top 10 for web - [PortSwigger](https://portswigger.net/web-security/all-topics) - [Penteslab](https://pentesterlab.com/my) - [RootMe](https://www.root-me.org/en/Challenges/) - HackTheBox Academy: CPTS CBBH CDSA CWEE *Searh tên lỗ hổng + hackthebox* ![image](https://hackmd.io/_uploads/ByvfytmW1g.png) - Tryhackme: OWASP top 10 https://tryhackme.com/room/owasptop10 Vulnversity https://tryhackme.com/room/vulnversity Juiceshop https://tryhackme.com/room/owaspjuiceshop Overpass https://tryhackme.com/room/overpass Year of the Rabbit https://tryhackme.com/room/yearoftherabbit Develpy https://tryhackme.com/room/bsidesgtdevelpy Jack of all trades https://tryhackme.com/room/jackofalltrades Bolt https://tryhackme.com/room/bolt - Biết dùng BurpSuite: +, Intercept requests +, Repeater +, Intruder +, Extensions Tham khảo: [Nghiệp Burp](https://www.facebook.com/groups/490627898299119) hoặc các platform như TryHackMe, HackTheBox, Youtube... - Biết dùng Postman (API, microservice Pentesting) - (Optional): Tiện hơn rất nhiều so với ngồi gõ CURL, thường khi pentest, đặc biệt nhất là trong nội bộ, người ta sẽ đưa 1 file Postman cho mà test, Postman cũng có option proxy, ném qua Burp Suite mà chiến thì tiện quá rồi. Ngoài ra, tìm hiểu thêm về Swagger nữa nhé, cũng tương tự Postman thôi. https://api.anhtester.com/swagger/index.html https://demo.ctfd.io/api/v1/swagger.json https://drugbank.vn/services/drugbank/api/public/thuoc Kết quả cần đạt: triển khai một project nhỏ có sử dụng API & Microservices, khuyến khích sử dụng Java Spring Boot, áp dụng cả Authorization và Authentication thì càng tốt. - Biết dùng các tools recon, exploit, fuzz,...phần này khá dài vì nó rất quan trọng nên mình sẽ update dần dần. Để luyện tập dùng tool đúng cách chứ phải script kiddie cần hiểu rõ tool hoạt động như thế nào khi sử dùng, sense và exp được mài rũa qua các bài lab, CTF,... *Update chi tiết sau* - Biết dùng Dockerizing (Optional) +, Docker - Docker là gì? Các thao tác với images, containers như start, stop, port binding, ... +, Dockerfile - Triển khai một project nhỏ bằng Dockerfile +, Docker-Compose - Triển khai một project bao gồm nhiều component bằng Dockerfile & docker-compose ### III. Học Leo thang đặc quyền Leo thang đặc quyền là nơi bạn có tài khoản người dùng và nhận quyền quản trị root/domain. Nó rất cần thiết đối với CTF và hack. Sudo Security Bypass https://tryhackme.com/room/sudovulnsbypass Sudo Buffer Overflow https://tryhackme.com/room/sudovulnsbof Linux Privesc Arena https://tryhackme.com/room/linuxprivescarena Windows Privesc Arena https://tryhackme.com/room/windowsprivescarena Windows Privesc https://tryhackme.com/room/windows10privesc Blaster https://tryhackme.com/room/blaster Ignite https://tryhackme.com/room/ignite Kenobi https://tryhackme.com/room/kenobi Pickle Rick https://tryhackme.com/room/picklerick **Window** Blue https://tryhackme.com/room/blue Ice https://tryhackme.com/room/ice Attacktive Directory https://tryhackme.com/room/attacktivedirectory Retro https://tryhackme.com/room/retro Blue Print https://tryhackme.com/room/blueprint Anthem https://tryhackme.com/room/anthem Relevant https://tryhackme.com/room/relevant ### IV. Học lỗ hổng nâng cao - Sau khi đã có kiến thức về lập trình + lỗ hổng để nâng cao và hiểu sâu hơn chúng ta sẽ đi tự dựng lại code bị dính lỗ hổng và tự patch nó. Đây là một cách học khá hay và rất nhanh lên tay. Việc dựng lại các lab về các lỗ hổng bảo mật web, tự vọc vạch, khai thác nó. Thay vì CTF, tác giả đã tạo sẵn challenge cho bạn, mình chỉ việc chơi thôi, thì khi làm lab, phải tự setup lại tất cả mọi thứ, từ network, config firewall, vhost, docker, setup env … Khi dựng lab, mình sẽ có thêm kha khá skill về debug, troubleshooting, network, system, database, điều này sẽ rất có lợi cho mình về giai đoạn sau, khi thực chiến trên các production thật sự. - Ngoài ra, biệc biết được các biện pháp mitigation vừa giúp ích cho bạn rất nhiều trong việc nhận biết, phán đoán ứng dụng web hiện tại sẽ có khả năng tồn tại lỗ hổng bảo mật nào, cũng như có ích rất nhiều khi bạn thực hiện audit / secure code review. - **Audit / Secure Code Review**: Về cơ bản, khi tiếp cận một vấn đề liên quan tới WebSec, bạn sẽ có được các thông tin của target đó được chia thành 3 loại (đã nói ở trên): Black box, White box và Gray box đúng như tên gọi của nó theo nghĩa bóng. Mình sẽ nói về White box trong context này. Đối với White box, bạn sẽ có được tất cả thông tin về đối tượng đó, source code front-end, back-end. Mọi thứ đều tường minh và rõ ràng, khi chơi CTF cũng vậy, các bài mà tác giả cung cấp đầy đủ source code đều là các bài khá hay và hấp dẫn (theo ý kiến cá nhân). Khi bạn đọc source code, debug để giải quyết các vấn đề của một thử thách, kỹ năng về audit, secure code review của bạn sẽ tăng lên rất đáng kể. Sau này khi tiếp các các target thực tế, bạn sẽ không bị bỡ ngỡ hoặc bị ngợp dưới số lượng dòng code hoàn toàn lên đến hơn 4 triệu dòng (Magento Framework). - **Osint github, blog, X, Facebook, Discord,... của các cao thủ**: Muốn đi nhanh thì phải tìm thầy :P P/s: sẽ cập nhật thêm sau Luyện tập: - [DVWA](https://github.com/digininja/DVWA) - [MAWC lab](https://github.com/tsug0d/MyAwesomeWebChallenge/) - [bWAPP](http://itsecgames.com/) - [WebGoat](https://github.com/WebGoat/WebGoat) - https://github.com/Anugrahsr/Awesome-web3-Security - JavaSecLearning: https://github.com/Drun1baby/JavaSecurityLearning https://github.com/Y4tacker/JavaSec https://github.com/HackJava/HackJava https://github.com/c0ny1/java-object-searcher https://github.com/tsug0d/LearnJavaVulnerability https://github.com/tsug0d?tab=repositories - PHPSecLearning: https://github.com/hongriSec/PHP-Audit-Labs - *Update sau* ### V. Bổ sung kiến thức của các mảng khác Khái niệm mảng chỉ dành cho CTF thôi nha, còn thật sự là kiến thức nền tảng về tất cả các lĩnh vực trong security rất quan trọng và bạn phải hiểu được cơ bản đối với các mảng khác. Bạn phải có kiến thức tổng quát về system, database, network, crypto, RE thậm chí là pwnable / exploit, nó sẽ giúp ích cho bạn ít nhất là ngay từ ban đầu và giúp bạn đi được xa hơn nếu muốn theo đuổi web hacking. Ví dụ: +, WebAssembly: https://docs.google.com/presentation/d/1Al9_FroUjOoM2QryCtQUL_uyJ8xXszxxUbH9k9nCXhc/edit?usp=sharing +, WebPWN: Router, các thiết bị IOT. ### VI. Đọc sách, CTF WarGame và CTF Competitions #### 1. Sách: - Web Hacking 101 của Peter Yaworski - The Web Application hacker's handbook: Discovering and Exploiting Security Flaws ![image](https://hackmd.io/_uploads/Byh0uvQWJg.png) - The Web Application Hacker's Handbook - Finding and Exploiting Security Flaw https://drive.google.com/file/d/1am-rh7bDHTRyGzboQ03NKKY-dFpd1ZNo/view?usp=sharing ![image](https://hackmd.io/_uploads/HJgR_DQZkg.png) - Cuốn này sếp cũ mình viết: https://drive.google.com/file/d/1YnuQgmi11ZXV1d8Y2-511mZHwmy5elz5/view?usp=sharing - The Basics of Web Hacking: Tools and Techniques to Attack the Web của Josh Pauli - The Tangled Web: A Guide to Securing Modern Web Applications của Michał Zalewski #### 2. CTF một cách nghiêm túc, CTF có tham vọng - Nếu tuần nào bạn cũng clear hết Web CTF trên mọi platform CTF thì không vô địch do bạn đen :D *Sẽ update chi tiết sau* # 3. Build Profile (3 năm) #### 1. Chọn con đường muốn theo *dài vlon viết sau =))* #### 2. Pentester / Red Teamer / Bug bounty hunter / Researcher là làm gì? Tổng hợp những thứ sẽ có trong Pentest - Website - Web Application - web API - Cloud sec - System - Web infra - Mobile Học ở: https://github.com/tsug0d/AndroidMobilePentest101 Cần nắm bắt được: | ADB | Thành thạo về cách sử dụng adb | | Frida | Cách sử dụng frida, frida-ps để áp dụng các JS script cho mục đích exploit & bypass | | Hooking | Học cách đọc source code, thâm nhập & sửa đổi một số input parameter ở runtime code level | | SSL Cert Pinning & Bypass | Tìm hiểu các phương pháp SSL Cert Pinning hiện tại & các cách bypass tương ứng | | Root & VM detection & Bypass | Tìm hiểu các cơ chế Root & VM detection hiện tại & các cách bypass tương ứng | | SharedPreferences | SharedPref là gì? Có những gì có thể khai thác từ đó? | Ngoài ra: - Pentest IOT - Pentest Firware ... #### 3. CVE, Certificate, BugBounty - Cái này thì nên đọc thêm các bài của Hack em all vì họ đã làm rất tốt về các vấn đề này. Nếu chưa thể tự đi kiếm CVE hay Bugbounty chúng ta có thể đi reproduce lại 1day, n-day,...để quen tay từ đó phát triển kỹ năng cho các target lớn hơn. https://hackemall.live/index.php/2020/04/26/web-application-security-roadmap/ https://hackemall.live/index.php/2020/08/08/pentester-roadmap/ - Về target thì có thể tìm kiếm các framework thịnh hành như: **Java** - Confluence - Jira - Zimbra - Liferay **C#/.Net** - dotnetnuke - Umbraco - SharePoint - Kentico - Orchard Core # 4. Expert (4-5 năm) - Tìm 0-day, CVE của các vendor nổi tiếng - Bug bounty hunter trên các nền tảng HackerOne, Bugcrowd, DevHunt, intigriti, yeswehack,... - Tự viết tool để xài và chia sẻ cho anh em, bạn bè nếu muốn :v Refer: https://hackemall.live/index.php/2020/04/26/web-application-security-roadmap/ https://hackemall.live/index.php/2020/08/08/pentester-roadmap/ # 5. Lời cuối ![image](https://hackmd.io/_uploads/SkyXodm-Jx.png) ==Hack to learn, not learn to hack!==