1 d" |; E" q# \) G: e
最近,作者通过HackerOne的美国国防部漏洞众测项目(Hack The Pentagon),发现了美国海军某网站的敏感信息泄露和SQL注入两个高危严重漏洞,漏洞非常容易发现且安全风险极高,以下是相关分享。
: @0 n, |4 O: G6 E7 u #519418 - 敏感信息泄露#519631 - SQL注入发现漏洞由于我将在2020年底上大学,因此最近我打算申请美国海军后备军官训练队的奖学金(Naval ROTC),出于这个原因,在访问海军部队申请奖学金的教育培训网站时,我也顺便做了一些安全测试。
# k$ z0 `) P9 G/ ^ L/ q# G7 g7 \ 当然,该海军相关网站也在HackerOne的美国国防部漏洞众测项目范围之内令我惊讶的是,我竟然在这个网站中发现了多个高危和严重级别漏洞,其中两个尤为特别敏感信息泄露漏洞我在对网站应用的侦察识别过程中,执行了对其子目录/nrotc的未授权Web路径猜解扫描,之后,发现了一个名为Trace.axd的页面,该页面的状态响应码为302,访问它时会跳转到一个登录页面。 ; }, u) V! M2 \! C' q/ R& _
Trace.axd:跟踪查看器,ASP.NET架构中的调试器,可用来配置代码跟踪服务以控制如何收集、存储和显示跟踪结果在网站应用启用该跟踪功能后,可以使用Trace.axd来查看 ASP.NET 收集并缓存的跟踪信息。 9 Q9 v, Z' u5 ]( H9 z6 S
然后,我换Firefox打开/nrotc/Trace.axd页面,在其跳转的登录页面中,我输入了一些测试用的常用用户名密码提交,想想它会做何响应碰巧一对用户名密码登录成功,/nrotc/Trace.axd页面状态响应码为200,最后进入的是一个标题名为“Application Trace”(应用跟踪)的页面。
9 x8 r/ j+ I4 w1 Z 该页面与网站其它页面不同,我猜想它是Web服务或应用程序的内置调试页面果然谷歌了一番,我才知道,Trace.axd是ASP.NET中的调试功能,可以保存一些HTTP请求的应用缓存信息默认情况下,该调试功能只能通过localhost的本机才能访问。
8 H) w3 j4 p1 s1 c* a; B$ m( \4 \ 我都能远程访问了,这也就是说,该功能可能被人为错误配置远程开启了综合来看,值得注意的是:如果我们在使用ASP.NET架构的目标网站上发现一个SSRF漏洞,那么,最简单的提权方法就是,看看我们能否有对Trace.axd的访问权限。
& J: X5 @4 r6 t! g2 B2 v9 I 接下来,我想看看这个调试功能页面具体会返回什么,通过一些请求后,我发现其响应返回了一些敏感信息,包括网站注册人员的社会安全号码、用户名、邮箱地址、明文密码、会话token、CSRF token,以及如软件、文件系统和HTTP头等其它一些应用程序特定信息。
) e& n' S! k! K6 I 打开凤凰新闻,查看更多高清图片这就说明问题了,这绝对是一个严重漏洞(Critical),如此简单且无需提权,但却极具威胁影响由于任何人都可到该网站上注册账号,所以任何人都可能发现该漏洞SQL注入漏洞与此同时,我决定再利用上述的调试器功能来对网站做一些深入的测试分析,果不其然,我通过/nrotc/Trace.axd页面,又发现了另外一些我用工具dirsearch无法探测到的网页。
" `/ C, u& s) o1 U) L/ d( z 但这些发现的大多数应用页面需要一定的权限才能有效正常响应,但我在该网站注册的账号只属于普通账号,所以我也无法对这些页面深入分析了某种程度上来说,虽然可以用上述Trace.axd调试器页面的响应信息去劫持一些高权限用户的会话Session,但我觉得那种构造利用太过于复杂了。
4 z2 p, l9 s& A; V 穷途末路之时,我发现在一个子目录下,除一个特殊页面之外,其它所有页面都需要更高权限才能访问于是,我就反回来在Trace.axd中寻找针对这个特殊页面的请求,发现了其POST的请求主体内容,紧接着,我重放了这个请求,但我的会话token就被包含进去了,我捣鼓着尝试把POST中的参数,更改为一些测试SQL注入或XSS的Payload - ’”> 。
" D: ]- Q5 v5 T( O V U- y$ Z; b 这下,让我惊讶的是,其中的一个参数竟然存在SQL注入!这种军方系统,还是不敢太过深入,所以我没做进一步的SQL注入代码执行,验证了就行,就点到为止吧赶紧上报漏洞由于我发现上报的以上两个漏洞,我被美国国防部网络犯罪中心(Department of Defense Cyber Crime Center ,DC3)评为当月最佳安全研究员。
7 G0 d$ V. Y* l 经验总结此外,我对多个美国海军网站进行安全测试后,我得到的一点经验就是:在做前期踩点侦察时对 JavaScript 的逆向分析也很重要,通常,很多Web开发人员会在 JavaScript中留下一些未做明显标记但却可以实现的API功能,而且,这些隐藏功能漏洞百出且很少会被人发现,因此,非常值得对它们进行深入测试。
1 A) L5 o4 Z9 x; q 漏洞上报和处理进程2019年3月31日: 上报敏感信息泄露漏洞2019年4月1日: 上报SQL注入漏洞2019年4月10日: 敏感信息泄露漏洞被修复2019年4月11日: SQL注入漏洞被修复
6 x: V5 W2 i+ ]+ t 2019年5月6日: 美国国防部评定为当月最佳安全研究员 2019年8月19日: 在HackerOne上披露以上两个漏洞来源:Freebuf本文来自大风号,仅代表大风号自媒体观点。
. a) ~8 R9 e6 x) x# ^
' S: C8 h7 d1 q# u, I' P% h7 J% Z. f) l6 n7 k. C: @
& z; Y" u" \3 D' y+ h3 e9 g* ^. P
* F( W. q. V9 v& G |