Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
XRay旅行记 - 从内部项目到社区项目的蜕变
Search
phithon
October 19, 2019
Technology
0
3.7k
XRay旅行记 - 从内部项目到社区项目的蜕变
XRay是一款Web应用漏洞检测工具:
https://github.com/chaitin/xray
phithon
October 19, 2019
Tweet
Share
More Decks by phithon
See All by phithon
CTF比赛总是输?你还差点Tricks!
phith0n
3
4.3k
小密圈里的那些奇技淫巧
phith0n
3
14k
Some Tricks From My Secret Group
phith0n
0
11k
Other Decks in Technology
See All in Technology
なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか
yagisanreports
0
140
Dart and Flutter MCP serverで実現する AI駆動E2Eテスト整備と自動操作
yukisakai1225
0
560
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
350
ソフトウェア開発現代史: 55%が変化に備えていない現実 ─ AI支援型開発時代のReboot Japan #agilejapan
takabow
7
4.4k
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
55
19k
2ヶ月で新規事業のシステムを0から立ち上げるスタートアップの舞台裏
shmokmt
0
220
Redux → Recoil → Zustand → useSyncExternalStore: 状態管理の10年とReact本来の姿
zozotech
PRO
18
8.7k
Javaコミュニティの歩き方 ~参加から貢献まで、すべて教えます~
tabatad
0
130
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
AIを前提に、業務を”再構築”せよ IVRyの9ヶ月にわたる挑戦と未来の働き方 (BTCONJP2025)
yueda256
1
770
What's the recommended Flutter architecture
aakira
3
2k
JAWS-UG SRE支部 #14 LT
okaru
0
110
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
For a Future-Friendly Web
brad_frost
180
10k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
980
Embracing the Ebb and Flow
colly
88
4.9k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Balancing Empowerment & Direction
lara
5
750
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
How GitHub (no longer) Works
holman
315
140k
Transcript
XRay旅⾏记 从内部项⽬到社区项⽬的蜕变
XRay诞⽣记 做XRay前,我们是怎么考虑的 2 1.
“ 在大部分厂商的扫描器只给商业用户使用 的情况下, 为什么我们要做XRay社区版? 3
为什么要做XRay社区版 » 在大部分厂商的扫描器只给商业用户使用的情况下,为什么我们要做XRay社区版? » 扫描器社区版的优势 » 更多的功能建议 » 更多的Bug反馈 »
经营洞鉴的口碑 » 创造与分享 » 同时,社区版的开发也是老版本洞鉴升级的动力和契机 4
Python版⼤型扫描器在实践中的问题 XRay的前身是洞鉴的Python版引擎 » 弱类型问题 » 弱类型导致多人协作过程中时常出现各种bug » 大部分第三方库没有普及type hinting,不同写法掺杂在一起很难推广 »
效率问题 » 立项时就考虑使用异步框架(asyncio)解决效率问题 » 大型项目很难保证asyncio的事件循环能健康稳定地运行,一处卡住,所有地 方都卡住 5
Python版⼤型扫描器在实践中的问题 » 技术难题 » Python实现线/协程间通信的方法过于底层(队列、锁、事件),对开发者要 求过高,很难写出非常完美的方案 » 社区版源代码保护难题 » 社区问题
» 社区中Python的POC很多,但大部分代码质量是没法直接拿来使用的 » Python社区人数更多,但水平参差不齐 » Python语法过于灵活,更加放大了很多人代码中的缺陷 6
为什么选择使⽤Go开发社区版 » 为什么Go比Python更好? » 为什么Go更适合做新版XRay的开发? » 语法规范,入门容易 » 强类型检查,大部分错误在编译阶段已经解决,适合团队大型项目 »
效率非常高,十分适合网络扫描器场景 » 内置的goroutine、channel让并发编程变得无比简单 » 保护源码,适合社区发布 » 部署分发方便,一个二进制文件即可使用 7
说⼲就⼲! 8
XRay诞⽣记 快速诞生的XRay,不停打磨的XRay 9 2.
⼀个完整的Web漏洞扫描器 基础库 » HTTP请求库 » 代理算法 » 去重算法 » 反连平台
» 指纹识别 » 爬⾍ » 漏洞测试靶场 » 命令⾏接⼝ » …… 漏洞检测 » SQL注⼊ » XSS » 命令与代码执⾏ » ⽂件上传 » 弱⼝令爆破 » ⽬录穿越 » 敏感信息泄露 » 任意链接跳转 » …… 架构设计 » 异步任务流程 » 通⽤插件框架 » POC框架 » 单元测试与持续集成框 架 » 检测报告框架 » …… 10
⽤Python开发扫描器 » SQL注⼊:Sqlmap » XSS:XSStrike » 模板注⼊扫描:tplscan » ⽬录扫描:BBScan »
⼦域名扫描:subDomainsBrute » 漏洞框架:Pocsuite、xunfeng » ... 我们遇到过的那些难点 ⽤Go开发扫描器 » SQL注⼊:⾃⼰开发 » XSS:⾃⼰开发 » 模板注⼊扫描:⾃⼰开发 » ⽬录扫描:⾃⼰开发 » ⼦域名扫描:⾃⼰开发 » 漏洞框架:⾃⼰开发 » ... 11 难点:⼀切轮⼦都需要⾃⼰造
我们遇到过的那些难点 难点:一切轮子都需要自己造 » SQL注入模块 » 参考SQLMap » 难点:请求数量、准确率、召回率之间的平衡 » XSS模块
» 全自研算法 » 对前端HTML、JS、CSS代码进行语义分析,减少大量误报 » 难点:DOM型XSS检测 12
我们遇到过的那些难点 » 目录枚举模块 » 全自研算法 » 字典引入表达式机制,对HTTP返回进行动态匹配,减少误报 » 难点:渗透测试经验的积累 »
弱口令爆破模块 » 全自研算法 » 对大量常见服务、Web弱口令进行自动化爆破 » 难点:识别登录请求、字典的优化 13
我们遇到过的那些难点 难点:不开源的XRay,如何让社区参与编写POC? 结构化漏洞检测框架:Phantasm » 以类似于构造HTTP数据包的方式编写POC » 最适合人类阅读的结构化格式 è YAML »
以表达式的形式判断漏洞存在与否 è 解决其他JSON格式漏洞框架不灵活的问题 问题:服务型非HTTP协议漏洞如何检测? 14
传统Python开发POC框架 XRay POC框架Phantasm 灵活性 ⾮常灵活 灵活性较低,但满⾜⼤多数场景 编写难度 需要⼀定Python基础 ⽆需代码基础 POC质量
社区POC代码质量不⼀ 格式简单,统⼀规范,质量⾼ 理解难度 ⾼,理解代码后才能看懂漏洞 低,类似数据包的形式展⽰漏洞 我们遇到过的那些难点 一个结构化漏洞检测框架 è Phantasm 15
我们遇到过的那些难点 难点:相比于Burpsuite,XRay因为没有界面,无法主动选择待检测的数据包…… passive-scan-client - https://github.com/c0ny1/passive-scan-client 16
⼭⾼⽽路远,还有更多难点需要克服…… 17
XRay诞⽣记 XRay发展与展望…… 18 3.
平时挂着XRay上⽹ 19
也可以专⻔⽤来刷SRC 20
也可以给客⼾做服务 21
XRay发展计划 更加精细化的漏洞检测模块: » 大型CMS相关检测:Wordpress/Discuz/Joomla/Drupal…… » 常见框架漏洞检测:ThinkPHP/Struts2/Spring/Django/Laravel/Flask…… » Java反序列化漏洞检测 » 特殊漏洞检测(Cache
Deception、Cache Poisoning、HTTP Desync) » …… 22
XRay发展计划 更加贴近社区 » 提交POC奖励机制 » 学生激励(面试机会、实习offer) » 安全从业者交流平台 » 资源共享
» …… 23
加⼊我们 » 加⼊我们 » 安全⼯程师(安全研究⽅向) » 安全开发⼯程师(⼯程转化⽅向) » 后端开发⼯程师 »
系统研发⼯程师 » 策略产品经理 » 业务产品经理 » 详情:https://mp.weixin.qq.com/s/oUZ9rUJxDfGQk_VTp59tRw 24