upload-labs笔记 less 1
上传漏洞的方法有很多。
本地配置好upload-labs之后,利用burpsuite无法抓包问题: 原理有可能是本地代理设置成了默认不抓包127.0.0.1。也有可能是无法抓本地回环数据包。具体原因不清楚,解决方式是将127.0.0.1改为自己的ip地址,ip地址可以用cmd ipconfig中查询。
方法一
本题用的是js函数,白名单模式过滤文件,所有在前端的校验都是不安全的。前端只适用于对用户的数据进行问题修改。那么有关修改js函数的方式,都可以实现文件上传。
修改js函数的方法,把elements中的js函数复制到console。提交就更新了当前函数。summit会更新页面,每次修改都需要提交。
- 修改allow_ext的值为.jpg|.png|.gif|.php
- 修改函数结果return ture
- 删掉js函数
- 浏览器禁用js
方法二
利用Burpsuite抓包,先上传1.jpg在修改为1.php即可
upload-labs笔记 less 2
查看源码,是后端检验,只检查upload_file.type。抓包修改content-type即可
move_uploaded_file()为将上传的文件移动到新位置。
upload-labs笔记 less 3
修改apache配置文件httpd.conf文件中修改语句AddType application/x-httpd-php .php .html .phtml
这样phtml文件就可以正常被php解析了。
本题是后端黑名单检验,过滤了.php .asp .aspx .jsp文件。
改成上传phtml文件即可。
upload-labs笔记 less 4
还是后端黑名单检验,过滤了".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文件即可。
upload-labs笔记 less 5
查看源码,发现仍然为后端黑名单检验,但是并没有检查大小写。
上传.pHP文件即可
upload-labs笔记 less 6
后端黑名单检验,没有检验文件名后面的空格。
window创建文件会自动删去空格,用Burp抓包后添加空格。
upload-labs笔记 less 7
后端黑名单检验,没有删除文件名后面的小数点
而window会自动去掉文件最后的小数点.
用Burp抓包后添加小数点。
upload-labs笔记 less 8
没有检查::$DATA
php在window的时候如果文件名+"::$DATA“会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持”::$DATA"之前的文件名
要求必须是windows,必须是php
upload-labs笔记 less 9
查看源码,后端对于小数点,空格等过滤只进行了一遍。
那么我们构造 xxx.php. .即可上传
upload-labs笔记 less 10
str_ireplace()为替换函数,将后缀名中的关键字替换为空。
利用双写绕过。构造xxx.pphphp
检测函数是从前向后检验,注意如果构造xxx.phphpp,则会生成 xxx.hpp
upload-labs笔记 less 11
参考博客: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是不区分大小写。
upload-labs笔记 less 12
post方式的00截断。post不会像get一样自动解码%00。需要burp抓包后,在hex中修改。
总结:
参考博客: https://www.cnblogs.com/cyjaysun/p/4439058.html
上传验证绕过包括
- 客户端验证绕过(javascript 扩展名检测)
- 服务端验证绕过(http request 包检测)
- Content-type (Mime type) 检测
- 服务端验证绕过(扩展名检测)
- 黑名单检测
- 白名单检测
- .htaccess 文件攻击
- 服务端验证绕过(文件完整性检测)
- 文件头检测
- 图像大小及相关信息检测
- 文件加载检测