web漏洞基础之文件读取、上传、下载
页面跳转主要有两种方式
1.js前端跳转
2.php 后端header跳转
前者可以使用插件进行js禁用则可以直接跳转到后台而不会跳转到首页。
插件名称是这个web developer:
进入到后台以后能进行很多管理员级的操作。
百度搜索admin/main.html能看到类似的案例,形如结尾是.html的url地址都可能存在js跳转的漏洞。
文件读取
F12或者右键查看页面源代码即可以查看当前页面源代码
但是对于url形如dir1/1.php?file=1.php可以善用在url中使用…/进入上一级目录(dir1/1.php?file=…/0.php)然后进入到其他文件并查看源代码。
文件下载
使用一款程序:linux工社->华西人下载中心可以进行任意文件下载。
那这个下载中心的原理是什么呢?
可以看到当在下载中心下载一个文件的url形如:
download.php?file=一串url编码+base64编码解码后发现是要下载的文件的连接。
则可以下载download.php本身就可以讲这个任意文件下载的软件下载下来。
url输入file=download.php发现报错则猜测进入上层文件夹下:
url输入file=…/download.php即可下载
文件上传
对于可以上传任意文件的代码可以上传如图所示的一句话木马k2.php。
可以看到文件上传到了路径upload/k2.php:然后访问该上传文件k2.php并进行Post传参控制受害方的电脑:
甚至执行系统命令:除了post请求包传参以外想要执行完整的系统命令还可以用Cknife软件:
打开C刀填写想要访问的Url及传参的参数名
html上传
上传html可以构建一个存储型xss攻击。
服务端扩展名验证
查看1.php源代码可以看到设置了黑名单,以下四种后缀名的文件不允许上传:
黑名单比白名单好绕过因为可以通过修改上传文件的后缀名进行上传:
1. 抓包将上传文件名该为 k2.php->k2.php(空格)上传
2.抓包将上传文件名该为 k2.php->k2.phP 修改大小写上传
3.抓包将上传文件名该为 k2.php->k2.php%00 截断上传
MIME验证
该验证是对content-type文件类型进行验证,则可以抓包在请求包的此处content-type:php换为image/jpeg就可以上传,连原文件的后缀名都不需要修改。## JS验证
对于这种验证禁用所有JS即可使得这种验证失效:可以看看这个JS验证原理(定义允许上传的文件类型的白名单):
除了禁用以外也可以F12审查元素中将javasubmit字段删除也能达到同样允许删除的结果:注意不是将js代码删除而是将提交部分删除,因为js部分已经被加载了,再在f12删除没用的。
内容验证
有这样一种图片叫图片型一句话就是指一个图片类型但是结尾会有一段php代码。但是重命名成Php文件以后就可以执行该php代码。
则可以得到启发:
当你想上传一个Php文件的时候可以将该Php文件通过一些算法转化成一张图片型一句话的图片,这样她的内容格式就是图片格式所以即使后缀名还是Php也是可以上传的。
- 文件上传漏洞的维护:尽量使用白名单。