一、客户端检测
文件上传 功能:发布图片,修改头像,发布附件
一句话木马,只要目标站点上存在这个木马,我们就能控制这个站点。
原理:eval函数会把字符串当做代码执行。
<?php eval($_REQUEST[8]); ?>
webshell:网站权限
getshell:获取权限,得到webshell的过程
cmdshell:可以执行系统命令
小马:需要用额外工具连接的木马
大马:不需要额外工具连接
如果文件上传功能制作的时候不考虑安全性,那么就默认存在文件上传漏洞。
文件-> 目标存放地址-> 存放
二、前端验证绕过
任何前端验证都是扯淡,约等于没有检测
特征:上传一个php文件,点击上传,页面弹框,但无法抓到数据包。
后端检测:可以抓到数据包。
首先先在本地验证木马是否能生效,减少失误。
ps:添加@,不会报错,别人不知道request后你的面是多少
本地实验成功
查看靶场源码,上传的必须是jpg,png,gif文件
文件上传漏洞主要防御手段:控制后缀。
我们把一句话木马1.php修改后缀名为1.jpg,然后上传,抓包,修改Burp中数据包的后缀名为php。然后放包。
上传复制图片地址,然后查看这个地址已经生效。
一句话木马生效
用菜刀夺取后台,得到flag。好吧最后才知道这个靶场是没有flag的,这是个假的。
三、Content-Type方式绕过
特征:Content-Type的意思是后端检测,可以抓包,但不看后缀,只要看数据包中的Content-Type。
查看源代码,这里限制了文件类型为image文件。
上传一个php文件,我们可以看到content-type是 application/octet-stream,这是不被允许的。这里上传错误类型文件可以抓包,说明是后端检测。
我们这里可以把applicaiton/stream修改成image/jpeg,或者直接把1.php文件修改后缀名为jpeg后上传再修改filename为1.php。然后放包,可以得到图片文件的地址,复制后打开,可以查看我们的木马上传成功了。
四、黑名单绕过
白名单:名单上的可以通过
黑名单:名单上的不可以通过
正常情况下,文件上传时,白名单比黑名单更安全。
意思就是,除开黑名单上的,其他后缀都可以上传。