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.6k
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.2k
小密圈里的那些奇技淫巧
phith0n
3
13k
Some Tricks From My Secret Group
phith0n
0
11k
Other Decks in Technology
See All in Technology
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
190
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.6k
RAID6 を楔形文字で組んで現代人を怖がらせましょう(実装編)
mimifuwa
0
300
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
130
トヨタ生産方式(TPS)入門
recruitengineers
PRO
2
220
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
170
GitHub Copilot coding agent を推したい / AIDD Nagoya #1
tnir
2
4.5k
モダンフロントエンド 開発研修
recruitengineers
PRO
2
310
Goss: New Production-Ready Go Binding for Faiss #coefl_go_jp
bengo4com
0
1.1k
[CV勉強会@関東 CVPR2025 読み会] MegaSaM: Accurate, Fast, and Robust Structure and Motion from Casual Dynamic Videos (Li+, CVPR2025)
abemii
0
190
DeNA での思い出 / Memories at DeNA
orgachem
PRO
3
1.6k
現場が抱える様々な問題は “組織設計上” の問題によって生じていることがある / Team-oriented Organization Design 20250827
mtx2s
3
840
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Building Adaptive Systems
keathley
43
2.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Done Done
chrislema
185
16k
What's in a price? How to price your products and services
michaelherold
246
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The World Runs on Bad Software
bkeepers
PRO
70
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
The Invisible Side of Design
smashingmag
301
51k
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