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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
phithon
October 19, 2019
Technology
3.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
XRay旅行记 - 从内部项目到社区项目的蜕变
XRay是一款Web应用漏洞检测工具:
https://github.com/chaitin/xray
phithon
October 19, 2019
More Decks by phithon
See All by phithon
CTF比赛总是输?你还差点Tricks!
phith0n
3
4.4k
小密圈里的那些奇技淫巧
phith0n
3
14k
Some Tricks From My Secret Group
phith0n
0
11k
Other Decks in Technology
See All in Technology
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
31
24k
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
JSAI2026 オーガナイズドセッションOS-27「不動産とAI」趣旨説明 / JSAI2026 Organized Session OS-27 “Real Estate and AI”: Statement of Purpose
ykiyota
0
230
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
4
4.5k
EventBridge Connection
_kensh
5
690
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.9k
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
780
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.6k
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
440
自律型AIエージェントは何を破壊するのか
kojira
0
150
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
How to Talk to Developers About Accessibility
jct
2
230
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Docker and Python
trallard
47
3.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
210
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Six Lessons from altMBA
skipperchong
29
4.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
The Spectacular Lies of Maps
axbom
PRO
1
800
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