百度知道XSS漏洞
该漏洞是在傍晚时发现的,大概在晚上12点的时候被修复了。
事情的起因是我一同学在百度知道上看到一个很奇怪的,正文带有连接的提问(这里),正常来说,这种情况是不可能出现的。
我条件反射的想到了:XSS漏洞。出于好奇,我决定探究这个漏洞。
通过查看源代码,我马上发现了问题的根源:未结束的<a>标签。
<pre class="line q-content mt-10" accuse="qContent">帮我写一个能提取<a href="http:// " 引号中超连接的表达式(只需要http打头的即可,谢谢</pre>
我姑且猜测可以插入<a>标签,于是尝试插入<a href="http://www.baidu.com">a</a>,结果和我预想的差不多,被过滤了。
如果标签不完整呢?没用的,会被转义。
到这里,回头仔细想想,为什么之前的标签没被过滤,而后来写的却被过滤了?对比之前的和第二次尝试,区别在于,第二次提交的<a>标签href属性的url地址是完整的,而之前的只有http://。
至此,我大概能猜到这个漏洞是怎么触发的了:一个不完整的标签 + href="http://"。
既然已经确定了怎么触发漏洞,接下来就利用漏洞做一些出格的事看看。既然标签可以被保留下来,就可以在属性上做文章。于此同时,我的那个同学已经在尝试使用style了。链接(已失效)
利用style="color:red"改变字体颜色
这时我不禁邪恶了下,打算做个出格点的,链接(已失效)
<div style="background-color: blue; color: red; font-size: 64px; font-weight: bold; width: 1024px; height: 1024px; position: fixed; left: 0; top: 0;" onclick="alert(1);" href="http://" 哈</pre>
如此,页面已经面目全非了,并且添加了onclick事件。
好了,到此为止,如果别有用心,继续探究的话,完全可以由此对整个百度知道页面实施大规模的XSS攻击。我很想向百度知道的后台开发组反馈这一漏洞,但却没能在百度知道的页面上找到相应的渠道。是有那么个意见反馈区,但只是个贴吧,估计我在里面反馈只会被认为是疯子。
最后,对漏洞的成因进行猜想。事实上已经很显然了,只是一些逻辑错误。百度知道后台涉及有两次过滤(在当前讨论的问题中),第一次对url用<a>标签包含起来,第二次将html特殊字符进行html实体化。百度知道的奇葩之处在于不是先进行html实体化,而是先处理url,当url处理出错时,html实体化也相连出错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库