访问被拒绝:我的姓氏作为php命令被读入


Access Denied: My last name is being read in as a php command

所以几个月前我开始遇到这个问题,当我试图访问一些网站时,我会随机得到一个拒绝访问的页面。起初我没有多想,只是继续我的生活。快进到现在。我试着报名参加三月疯狂的比赛,结果被阻止了。我不能在Kohls或其他网上购物网站上查看。我买不到灰狗或amtrack的票。我无法访问我的银行账户。从本质上讲,它变得有点不方便了。

在尝试了一些随机的东西之后,我试着用不同的方式拼写我的姓氏(Fread)。我换上了Frea,结尾没有"d"。神奇的是,事情会再次发生。在与一些朋友交谈后,他们帮我排除了故障,我们了解到Fread是一个php命令fread,我们意识到如果我们输入其他php命令,即fwrite,我们也会得到一个拒绝访问的页面。

问题解决了,但不是真的解决了。我不知道如何解决这个问题。在众多屏蔽我的网站上,我甚至不知道该和谁交谈或联系谁。我的银行已经处理这个问题两个月了,两周内还没有向我更新他们正在做什么来解决这个问题。

不幸的是,我不能使用拼写错误的信用卡,也不能登录我的银行账户,因为fread是我用户名的一部分。我将感谢任何能帮助我再次在这些网站上使用姓氏的反馈!!

我该联系谁?如何让人们足够关心并修复它?为什么?想帮忙吗?

为了让每个人都能看到我没有撒谎,这里有一个发生这种情况的网站示例。本演练将链接到footlocker网站以创建帐户。一旦到了那里,你只需要在姓氏字段中输入Fread,然后点击提交。砰!访问被拒绝。返回并将其更改为Fwrite,然后点击submit。砰!访问被拒绝。现在就输入您的名字,或者输入任何非php命令。现在它工作了,没有拒绝访问的情况。

  1. 转到:https://www.footlocker.com/account/?action=accountCreate
  2. 在姓氏字段中:Fread(无需填写任何其他字段)
  3. 点击继续
  4. 访问被拒绝
  5. 重复使用不同的php命令,您将被拒绝访问
  6. 使用非php命令重复此操作,您将不会被拒绝访问

请帮忙!

*****注意:我在不同的IP地址、不同的计算机、不同的操作系统上尝试过这个,让我的朋友在不同的城镇尝试过,错误无处不在。同样发生在我姓氏相同的家人身上。

全面披露:我是为Fread女士测试和验证此错误的人之一。

考虑到这个问题出现的突然性和广泛性,它显然不仅仅是一两家公司的疏忽开发人员,也显然不仅仅是旧网站。如果美国国税局、你的银行、美铁、灰狗、Footlocker和其他大公司几乎在同一时间开始为你倒闭,那一定与更新的共享代码有关,这很难追踪。然而

我抓到虫子了

出乎意料的是,我在做一些有趣的网络开发时遇到了同样的错误。我正试图将字符串";测试事件;将在这里进行描述";,以及接收403错误。经过一番撕扯和反复试验,结果发现分号是罪魁祸首,删除分号后,POST就起了作用。

显然,不是每个分号实例都对服务器构成威胁,所以我觉得这个规则有点傻。这让我想起了这个问题,所以我尝试用"提交相同的字符串(减去分号);fread";最后。瞧,403又回来了。

跨站点脚本(XSS)

在安全性较差的网站上,黑客可以将代码注入输入字段,这样服务器就可以运行代码而不是存储数据。这被称为跨站点脚本,或XSS。当然,网站管理员和网络开发人员希望阻止这种情况的发生。

在这种情况下,服务器似乎看到了一个看起来像命令的东西(这让它怀疑是XSS尝试),并惊慌失措。在我的例子中,它看到了一个分号,它是一个命令终止符。在你的文件中,它看到了它认为的文件读取命令。在这两种情况下,服务器都认为我们是";"威胁";并选择拒绝我们访问我们通过403错误请求的资源。

ModSecurity

罪魁祸首似乎是ModSecurity,这是Apache和其他web服务器的一个模块,它(除其他外)屏蔽可疑XSS攻击的POST输入。当我在我的网站上禁用它时,我可以发布我想要的任何东西,就像(我觉得)我应该做的那样。

ModSecurity于2016年3月9日更新至2.9.1版本,在此之前有相对稳定的候选版本,可能使用范围很窄,因此时间安排合理。它在今天得到了相当广泛的使用,所以考虑到问题的相似性和时间,美铁/灰狗/Footlocker很可能都使用了这个模块。

总结:

好消息:我有90%的把握是ModSecurity,他们可能是解决这个问题的最佳单一联系点。你可以考虑在他们的GitHub页面上发布一个问题,或者直接联系一两个开发者提出问题。

坏消息:他们可能仍然认为你是边缘人。此外,实际的最终产品修复可能取决于各个网站的管理员决定在ModSecurity发布更新时更新他们的内容。但是,作为一个起点,与开发团队讨论这个问题当然还是值得的。

祝你好运!!

这真的很不幸,我所能建议的就是联系你试图访问的任何网站的技术部门。他们应该不难意识到自己试图过滤这样的名字犯了多大的错误。如果他们不同意,你最好不要相信他们提供的信息。。。

听到这个消息很抱歉。。有这类bug的网站通常都是过时的,他们这样做是出于安全考虑。。

你可以试着使用这些(只适用于不重要的网站,不适用于信用卡等),从下面复制粘贴,看看它是否有效

Frеad(此处为数学符号)

Freаd(а是俄语字符)

F r e a d(字符间加空格)

_Fread(带下划线的前缀)

Fread(使第一个字符成为宽字符)

如果以上各项都不起作用,则应联系管理员。

从技术上讲,他们可以绕过PHP检查,直接在数据库中将您的帐户姓氏设置为Fread。但我知道,这些人往往很难联系到。

好消息是,现代网站很少有这种问题,我相信有这些问题的网站会在不久的将来更新。