上传文件  -----作者:ssLong  
由于种种原因,开始学习web安全,初来乍到,所以是个不能再菜的菜鸟,但是看到看雪有这个模块,手也是很痒,所以想写点东西,与大家探讨学习...希望高人们指教,感激不尽!

上传文件漏洞,对于一个安全爱好者来说都不会陌生,一般指网站中有上传功能的地方,没有对上传文件的格式进行限制,(更准确点说,没有采用允许上传文件类型的策略,而是采用禁止上传文件类型的方法,让攻击者有机可乘)然而我说的这个可以上传文件的方法主要不是指这个,而是http put方法上传文件。

大家都知道,web使用的是应用层的http协议,然而http协议有很多方法,比如常用的get、post等常用的提交表单方法,然而http还有很多不常用的方法,put就是其中之一,可以实现上传文件功能。但是需要服务器开启该功能。这里我拿IIS服务器为例。


首先开启IIS使用put方法上传文件的功能:选中  IIS下 网站 右键 属性 主目录 本地路径下的 写入 选项 即 如图所示:
 
这样这个web服务器就可以使用http put方法进行上传文件了!

直接使用C#下的WebClient 可以很方便的实现 http put方法,具体代码如下
/// <summary>
 
        /// PUT 方法只要开启写入就可以上传文件txt/html/gif /php等图片(不能asp/aspx/shtm/cer/asa/stm/
        /// 因此当网站提供IIS写入功能可以上传gif等文件然后替换原来的图片达到修改页面的目的
        /// </summary>
        /// <param name="url"></param>
        /// <param name="local"></param>
        /// <returns></returns>
        public static bool UpLoadFile(String url, String local)
        {
            try
            {
                System.Net.WebClient myWebClient = new System.Net.WebClient();
                byte[] ret = myWebClient.UploadFile(url, "PUT", local);
                String strMessage = Encoding.ASCII.GetString(ret,0,ret.Length);
                MessageBox.Show(strMessage);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);

                return false;
            }
            return true;

        }


具体程序见附近

上传的附件 CheckWeb.rar