文件上传漏洞笔记
教程看的https://www.bilibili.com/video/BV1K741147FY里面的有很多没有说直接绕过了就很烦,但是这个教程内容很丰富。教程里面修改东西的我也不知道什么意思他也不说就很烦,我就自己百度找然后都写到笔记里面了
文件上传绕过思路在这个地方找到https://www.bilibili.com/read/cv6978946/
PUT 方法文件上发
判断目标开没有开启PUT 方法
向指定资源位置上传其最新内容
开启PUT
打开Apache配置文件httpd.conf,在上面添加
找到下面的然后叫注释去掉,加载modules/mod_dav.so
和modules/mod_dav_fs.so
模块
LoadModule
加载特定的DSO模块
1 | #LoadModule dav_module modules/mod_dav.so |
添加DAV On
在配置文件的最上面添加,注意一点要最上面
1 | DavLockDB C:\phpStudy\PHPTutorial\WWW\a |
然后重启服务
查看有没有开启PUT请求
下面查看有什么方法里面是没有写PUT的请求的
在终端输入
1 | telnet 服务器ip 端口 |
然后在输入
1 | OPTIONS / HTTP/1.1 |
用nc也可以
用PUT请求上发文件
用burp发起PUT请求上发webshell到/a/a.php
1 | PUT /a/a.php HTTP/1.1 |
可以看见返回的是201
我们访问执行命令
可以看见执行了命令
前端检查绕过
有web服务器,文件上发检查只在前端js来检查,如检查文件后缀名来判断上发的文件
比如upload-labs的第一关
下面是他的源代码
1 | function checkFile() { |
我们直接发送.php文件
看一下页面源代码
他会调用 checkFile()函数
我们只需要叫html的调用的标签删除就可以了
我把他删除
然后我们发照片
上传成功
修改文件名绕过
比如upload-labs的第一关
上发一个phpinfo.php文件里面内容
1 |
|
我们叫.php文件改成.png格式
改成png
用burp抓一下
叫文件名改.php
可以看见文件上传成功
访问地址
文件类型绕过
下面这个照片的括住的就是文件的类型
1 | Content-Type: image/png |
Content-Type:字段就是指定文件类型的
image/png就是png类型的
文件类型可以用mimetype
命令来查看
格式
1 | mimetype 要查看的文件名 |
咧
1 | mimetype phpinfo.php |
如果我们叫php文件名改成png用mimetype
命令检查还是显示php类型
列
下面我叫phpinfo.php文件改成phpinfo.png文件
用mimetype
来检查
可以看见还是php类型
下面是在百度上找到文件类型
1 | *.php application/x-php |
演示在比如upload-labs的第二关
上发一个phpinfo.php文件里面内容
1 |
|
他就会报文件类型不正确
用burp抓包叫文件名改成png
发现还是文件上传不正确
在选择一个php文件上传
用burp抓包,然后我们叫修改文件的类型改成image/png 就是png类型
然后文件上传成功
修改数据包的内容绕过
有的过滤会检查文件内容每一个照片里面都有一个前面这个字段来代表文件类型
我们抓一个普通的照片上传文件的数据包
可以看见前面有一个PNG的字符串
比如upload-labs的第十四关
上发一个phpinfo.php文件里面内容
1 |
|
上发的时候用burp抓包如果叫文件名,和类型给修改成png格式的发现还是发不上去
然后我们发一个png文件叫里面的文件给文件内容全部给改成webshell只留下照片的内容头的部分
上传一个普通照片文件
用burp进行抓包
然后我们叫里面改成webshell只留下照片的内容头的部分
放包就上发上去了
但是是执行不了的应为他是png文件,可以通过其他的漏洞进行执行比如解析漏洞
将照片和webshell合成绕过
他会吧一个webshell的木马复制到照片里面,但是这个有一个问题就是当服务器解析照片的时候可能会受到照片的源码的内容应为webshell的运行
用copy
命令
我们准备一个文件名叫phpinfo.php
内容
1 |
|
还有一个普通的照片名字zm9kpy.jpg
命令copy /a zm9kpy.jpg + /b phpinfo.php = a.jpg
照片顺序不要搞错了不然就叫webshell代码插到最前面了
可以看见生成出来一个a.jpg文件
编辑出来的照片有的可能查看不了
教程上是这样写的不容易看懂
照片还是可以打开的
查看照片文件的源代码
可以看见已经插入上面了
演示在比如upload-labs的第十四关
用这个照片进行上传可以上传上去
复制照片的链接照片应为是jpg类型的所以执行不了,可以借用其他的漏洞来实现
我在服务器里面叫这个文件名手动改成php文件看看能不能执行
可以执行
文件幻术头绕过
同照片的文件内容前几个自己都是相同的下面的16进制是在一个博客上https://blog.csdn.net/Kevinhanser/article/details/81613003找的
1 | jpg=FF D8 FF E0 00 10 4A 46 49 46 |
我用burp抓一个jpg的数据包看一下16进行的头
可以看见是相通的
演示在比如upload-labs的第十四关
看看文件是否能上传上去