手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

linux filename xss攻击

首页 > Linux >

看到这篇文章的时候是在晚上,然后就觉得好郁闷,不过也挺佩服淘宝QA那些人的奇思怪想,看看他们是怎么说的吧。

一、关于文件名
大家都知道在 windows 下面文件名是有规则,定义了一些保留的字符,他们分别是:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

而linux下面是没有对这些大部分字符进行限制的,可以随意定义的,那么,我们就可以将 XSS Pyload 存储在文件名中,如图所示:
大小: 13.74 K
尺寸: 318 x 231
浏览: 942 次
点击打开新窗口浏览全图
我们可以看到可以成功将 xss pyload 存储在文件名当中了。
二、利用攻击
很多时候,由于代码的各种环境,让我们的攻击成为可能,查看以下PHP上传文件代码:

PHP代码
  1. <?php  
  2. if ($_FILES["file"]["error"] > 0)  
  3.   {  
  4.   echo "Error: " . $_FILES["file"]["error"] . "<br />";  
  5.   }  
  6. else  
  7.   {  
  8.   echo "Upload: " . $_FILES["file"]["name"] . "<br />";  
  9.   echo "Type: " . $_FILES["file"]["type"] . "<br />";  
  10.   echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  
  11.   echo "Stored in: " . $_FILES["file"]["tmp_name"];  
  12.   }  
  13. ?>  
  14. <html>  
  15. <body>  
  16. <form action="" method="post" enctype="multipart/form-data">  
  17. <label for="file">Filename:</label>  
  18. <input type="file" name="file" id="file" />  
  19. <br />  
  20. <input type="submit" name="submit" value="Submit" />  
  21. </form>  
  22. </body>  
  23. </html>  
当文件上传成功,程序将文件信息进行输出。而此时没有对文件名进行任何处理,那么,如果将我们定义好的特殊字符的文件名进行上传,然后经过程序输出,就可以攻击了,如图所示:

大小: 39.65 K
尺寸: 500 x 226
浏览: 956 次
点击打开新窗口浏览全图

可以看到,我们确实可以攻击成功了!那么,并不是所有的上传地方都存在,要满足以下条件才可以:
1、文件上传后保存前进行了一次原样输出。
2、直接按原文件名进行存储。
3、其他特定环境,看程序逻辑。
4、web server 为 linux。
5、上传攻击机器为 linux。
示例代码:http://code.google.com/p/madal-example-project/source/browse/trunk/controllers/image_uploader.php?r=2
更多的:http://code.google.com/query/#q=$_FILES[%22file%22][%22name%22]
线上攻击测试:http://www.woyigui.cn/fileupload.php

三、防范
1、存储时以随机文件名保存。
2、任意时候对文件名进行处理后输出,可以进行 html 编码后输出。

参考:

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

--EOF——

原文来自:http://qa.taobao.com/?p=10139,虽然这个条件很苛刻,但毕竟还是存在被注入的可能啊,而且这种注入真的很妖。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: linux, xss, php

« 上一篇 | 下一篇 »

只显示10条记录相关文章

使用PHP得到所有的HTTP请求头 (浏览: 57672, 评论: 3)
如何mount Smb服务共享目录 (浏览: 49276, 评论: 1)
我为什么会选用phpstorm (浏览: 48455, 评论: 5)
通过file_get_contents来Post数据的实例 (浏览: 41169, 评论: 5)
PHP导入导出Excel方法 (浏览: 40398, 评论: 3)
快速生成目录树 (浏览: 40074, 评论: 7)
PHP的XSS攻击过滤函数 (浏览: 37542, 评论: 2)
PHP中Eval的作用 (浏览: 36421, 评论: 4)
PHP常见错误(二) (浏览: 34834, 评论: 1)
超详细:在Mac OS X中配置Apache + PHP + MySQL (浏览: 34094, 评论: 1)

发表评论

评论内容 (必填):