上传漏洞的方法有很多。
本地配置好upload-labs之后,利用burpsuite无法抓包问题: 原理有可能是本地代理设置成了默认不抓包127.0.0.1。也有可能是无法抓本地回环数据包。具体原因不清楚,解决方式是将127.0.0.1改为自己的ip地址,ip地址可以用cmd ipconfig中查询。
方法一
本题用的是js函数,白名单模式过滤文件,所有在前端的校验都是不安全的。前端只适用于对用户的数据进行问题修改。那么有关修改js函数的方式,都可以实现文件上传。
修改js函数的方法,把elements中的js函数复制到console。提交就更新了当前函数。summit会更新页面,每次修改都需要提交。
方法二
利用Burpsuite抓包,先上传1.jpg在修改为1.php即可
查看源码,是后端检验,只检查upload_file.type。抓包修改content-type即可
move_uploaded_file()为将上传的文件移动到新位置。
修改apache配置文件httpd.conf文件中修改语句AddType application/x-httpd-php .php .html .phtml
这样phtml文件就可以正常被php解析了。
本题是后端黑名单检验,过滤了.php .asp .aspx .jsp
文件。
改成上传phtml文件即可。
还是后端黑名单检验,过滤了".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"
这么多。也算是把我不知道的也纳入进来了
这时候创建一个文件名为 .htaccess
内容是SetHandler application/x-httpd-php
文件的作用是将这个目录下所有文件用Php来解析。
然后上传一个含有php代码的jpg文件即可。
查看源码,发现仍然为后端黑名单检验,但是并没有检查大小写。
上传.pHP
文件即可
后端黑名单检验,没有检验文件名后面的空格。
window创建文件会自动删去空格,用Burp抓包后添加空格。
后端黑名单检验,没有删除文件名后面的小数点
而window会自动去掉文件最后的小数点.
用Burp抓包后添加小数点。
没有检查::$DATA
php在window的时候如果文件名+"::$DATA
“会把::$DATA
之后的数据当成文件流处理,不会检测后缀名.且保持”::$DATA
"之前的文件名
要求必须是windows,必须是php
查看源码,后端对于小数点,空格等过滤只进行了一遍。
那么我们构造 xxx.php. .
即可上传
str_ireplace()为替换函数,将后缀名中的关键字替换为空。
利用双写绕过。构造xxx.pphphp
检测函数是从前向后检验,注意如果构造xxx.phphpp
,则会生成 xxx.hpp
参考博客:https://blog.csdn.net/qq_29647709/article/details/81264120
查看源码为路径拼接而成,没有经过其他处理。可以使用00截断。
00截断有两个触发条件。php版本小于5.3.4——>CVE-2006-7243。 php的magic_quotes_gpc为OFF状态。
用Burp抓包,修改文件目录为/1.php%00即可。
php函数积累:查找字符串在另一个字符串中的位置
strpos()/stripos()/strrpos()/strripos()。一个r是第一次出现,两个r是最后一次出现,有i是不区分大小写。
post方式的00截断。post不会像get一样自动解码%00。需要burp抓包后,在hex中修改。
参考博客: https://www.cnblogs.com/cyjaysun/p/4439058.html
上传验证绕过包括