上传文件时,目标服务器对上传的文件内容及后缀没做严格的过滤,对文件存储的路径没做限制。
文件上传漏洞的条件1、木马文件(php、jsp、asp、exe)--eval system exec assert2、可以绕过目标服务器检测成功上传3、可以获取到上传路径,上传路径具备可执行权限一句话木马:
注释:$_POST 是 PHP 中的超全局变量,在浏览器中POST方式提交的所有变量,都会保存在此数组中,变量名即键名eval() 函数在 PHP 中用于执行字符串中的代码并返回执行结果。该函数接受一个字符串作为参数,该字符串包含要执行的 PHP 代码(在此代码中为$_POST[cmd]),然后执行该代码,并且可以返回结果,该函数对php语法要求严格,所传入语句必须以";"结尾"@"的作用是屏蔽报错信息。 Pass-01首先上传a.php文件,发现弹窗给出了白名单文件类型.jpg|.png|.gif 利用Burp抓包发现无法获取数据包,猜测是前端验证,禁用前端JavaScript,尝试上传
禁用js后发现上传成功且返回图片
访问图片尝试用HackBar构造post传参,返回phpinfo界面即为成功。如下图:
第二种方法: 上传白名单后缀名文件,这里以b.png为例,上传时用Burp抓包 右键将数据包发送到Repeater模块,并将数据包改成一句话木马,filename修改为b.php如下: 重发数据包后,发现响应包存在文件路径 拼接文件路径,发现返回参数,尝试用HackBar构造传参返回phpinfo界面即为成功。
Pass-02上传a.php,用Burp抓包并将数据包发送至Repeater模块,发包后提示文件类型不正确 分析数据包,猜测可能是对Content-Type类型有限制
修改Content-Type: image/jpeg、image/png、image/gif(上述三种任选其一),重新发包
拼接路径,并用HackBar构造参数,出现phpinfo界面即为成功。
Pass-03尝试上传3.php,发现黑名单提示:不允许上传.asp,.aspx,.php,.jsp后缀文件!
在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。
这里用.ptml试一下,直接上传一个名为3.phtml的文件,可以发现直接上传成功,使用HackBar构造传参后成功访问phpinfo。
Pass-04这题本地环境存在问题,就从网上找了两个可以用的
http://175.178.67.176:8084http://62.234.193.176:8084尝试上传4.php、4.php5、4.phtml以及各种大小写后缀均绕过失败,查看提示
发现有一个文件是没有过滤的,即上传中常用到的 .htaccess文件
.htaccess是一个纯文