0

我尝试做一个简单的上传表单。

我正在使用 jQuery 上传(https://github.com/blueimp/jQuery-File-Upload/archive/master.zip

使用简单的形式 ( http://pastebin.com/wCUB2EkR ) (data-url="server/php/?index.php")

我将 index.html 和 .js 放入我的“www”目录,并将 server/php/[index.php,UploadHandler.php] 放入 csp 文件夹。我添加“退出(200);” 到“server/php/index.php”的末尾没有空响应

我将“entity_size”更改为没有 413 错误(请求实体太大)

当我尝试上传文件时,我遇到了几个问题:

在 G-WAN 控制台中,我有以下输出:

sh: 2: Content-Disposition:: not found sh: 3: Content-Type:: not found : not found

在 access.log 我有这个"[Mon Feb 25 10:29:53 2013 GMT] xxx "POST /server/php/?index.php" 127 828 "http://yy:8080/index.html"

我正在使用最新版本(4.2.19)

[更新] 安全问题?

我只是注意到一个可怕的行为(与我的 GWAN 输出结果的链接......)

我使用了一个简单的 Perl 脚本而不是“server/php/?index.php”,它获取 STDIN 并打印到文件(http://pastebin.com/SnXkjFya

为了测试,我尝试使用示例命令上传 .sh 脚本,并在 GWAN 控制台中注意到服务器实际上尝试在我的 .sh 文件中执行所有命令...

我尝试使用另一个包含“touch testgwan”的文件(名为 test.txt),在使用 POST 的表单上传中上传。

文件“testgwan”是在 GWAN 目录的根目录下创建的...

当然,我做错了什么,但 GWAN 不应该执行带有“post”的命令......


更新:

由于我们无法重复此问题,Geoffrey 将他在以下平台上的测试通过电子邮件发送给我们(他使用的是 AMD Phenom(tm) II X4 955 处理器和未命名的管理程序):

Ubuntu 12.04 32bits, G-WAN 4.2.19: problem
Ubuntu 12.04 32bits, G-WAN 4.2.27: OK

Ubuntu 10.04 32Bits, G-WAN 4.2.19: OK
Ubuntu 10.04 64Bits, G-WAN 4.2.19: OK

Ubuntu 10.04 32Bits, G-WAN 4.2.27: OK
Ubuntu 10.04 64Bits, G-WAN 4.2.27: OK

所以,对于 Geoffrey 来说,最新版本的 G-WAN 已经解决了他的问题,而之前版本的 G-WAN 仅在 Ubuntu 12.04 32bits 中出现了这个问题。

4

2 回答 2

0

如果您查看entity.cG-WAN 提供的示例(我们知道其源代码),那么您会发现 G-WAN 不可能“执行”一个 POST 实体。

当明确授权这样做时,G-WAN 会将 POST 实体上传到您定义的限制 - 这是它唯一做的事情。

现在,由于您没有提供您的源代码PHPPython脚本(两者都由 G-WAN盲目执行),因此任何人都没有机会告诉您您做错了什么。

鉴于您的英语水平,您可能会从与您一样会说法语的 G-WAN 支持团队联系中获益。

于 2013-02-26T15:51:02.107 回答
0

由于 G-WAN 不是开源的(我理解为什么并同意您的观点),我无法告诉您为什么 G-WAN 会那样做。

我正在提供源代码,甚至是“PHP”文件。

这些文件都在“master.zip”中的jQuery上传文件中,我的第一个链接。

忘记 php、perl 或 python 内容脚本。我对“hello world”perl 脚本有完全相同的行为。(打印“helloworld”;)

GWAN 有一个奇怪的行为,我猜是一个安全问题(因为 GWAN 执行输入文件中的所有命令)。

我的表单将输入文件发送到“helloworld”perl 脚本,但 GWAN 执行文件内的所有命令(如 GWAN 执行“sh test.txt”)。

我的问题可能会让其他尝试 GWAN 的人感兴趣,所以,即使我的英语不完美,我也会继续在这里回答。

ps:不要小看潜在客户。你的名声不是很好。在法语中,我们会说“Donner le bâton pour se faire battre”。

于 2013-02-26T20:21:28.667 回答