没有搭建教程,懂的自行下载研究。

文件:590m.com/f/25127180-486121419-fbf84f (访问密码:551685)

安装环境
宝塔面板
tomcat8
nginx1.17
mysql5.6(不知道最高支持到多少)
打开服务器的安全组,放行三个端口8088 8085 8083


以下内容无关:

-------------------------------------------分割线---------------------------------------------

文件上传的场景真的随处可见,不加防范小心,容易造成漏洞,造成信息泄露,甚至更为严重的灾难。

比如某博客网站评论编辑模块,右上角就有支持上传图片的功能,提交带有恶意字符串的图片后,就直接可以显示在评论中了,如图:

再次声明:大家在自己的搭建的环境里面测试,不要给别人造成麻烦哈。

文件上传漏洞是进行渗透是比较常见好利用的漏洞,利用它能够直接上传webshell,进行连接,是比较常见的攻击方式。针对文件上传场景检测和绕过进行了全面姿势总结。

0x01 渗透姿势全面分析
针对一个文件上传场景,首先判断是客户端JS校验还是服务器校验,判断依据:上传非法文件,返回结果是否很快?

1.客户端JavaScript检测
如果上传非法文件,返回结果很快,或者F12打开开发者模式,上传非法文件,发现没有网络请求,但是被拦截了,很有可能就是客户端进行了JS校验检测。这种前端采用JS限制上传类型和大小的方式:

复制代码

复制代码
很是鸡肋,绕过思路:1.直接本地禁用JS,不让其做检测 2.抓包,修改文件后缀名类型,绕过检测限制

2.服务器后端检测
服务器后端检测有较多方式,普遍分为文件类型检测,文件头类型,文件扩展名名单检测,文件内容检测,接下来进行简要分析。

a.文件类型检测
此类检测防护主要是从content-type进行检测,检验请求中content-type是否符合可接受的上传类型(如"image/gif",“image/png”,“image/jpeg”)

复制代码
if (isset($_POST[‘submit’])) {

if (file_exists(UPLOAD_PATH)) {
if ((FILES[′uploadfile′][′type′]==′image/jpeg′)∣∣(_FILES['upload_file']['type'] == 'image/jpeg') || (F​ILES[′uploadf​ile′][′type′]==′image/jpeg′)∣∣(_FILES[‘upload_file’][‘type’] == ‘image/png’) || ($_FILES[‘upload_file’][‘type’] == ‘image/gif’)) {
$temp_file = $_FILES[‘upload_file’][‘tmp_name’];
$img_path = UPLOAD_PATH . ‘/’ . FILES[′uploadfile′][′name′];if(moveuploadedfile(_FILES['upload_file']['name']; if (move_uploaded_file(F​ILES[′uploadf​ile′][′name′];if(moveu​ploadedf​ile(temp_file, $img_path)) {
$is_upload = true;
复制代码
绕过思路:抓包将content-type改为可接受图片形式,即可绕过

b.文件头类型检测
上个文件类型是检测content-type,比较好伪造,这个则是使用getimagesize()函数来获取文件的MIME类型,通过文件头进行判断文件类型

if(file_exists($filename)){
info=getimagesize(info = getimagesize(info=getimagesize(filename);
文件头就是文件特定的标志,如二进制PE文件的4D5A,bmp文件的424D,zip文件的504B0304,各种常见文件的文件头类型大家可以查找了解一下,常见图片文件头如下:

gif: GIF89a

jpg,jpeg: FF D8 FF

png: 89 50 4E 47 0D 0A

绕过思路:针对这种,上传木马恶意文件时,先使用编辑工具在数据最前面添加图片的文件头进行伪造,即可绕过

c.文件扩展名检测
这种类型有基于黑名单检测和白名单检测。通常基于黑名单是很不安全的,黑名单机制:只拦截名单中出现的扩展后缀名,其余默认放行。这就取决于名单中的扩展后缀名覆盖能力范围了,很难把所有的考虑全面,就很容易造成漏洞。

黑名单绕过思路:可以从服务器的解析特性进行分析,如特殊可解析后缀php3,php7,phtml,jspx等 如特殊的解析方式陌生后缀名,带换行后缀名,双后缀名等解析差异造成的漏洞。 还可以从混淆方面出发,后缀名大小写,点绕过,空格绕过,以及上传.htaccess配置控制文件权限和::$DATA数据流的使用

基于白名单相对于黑名单就安全很多了,要求只能是特定扩展名的文件才能够上传。

白名单绕过思路:MIME绕过,修改文件类型为白名单可接受的类型,以及%00,0x00截断绕过,这种场景针对save_path可控。

00截断原理其实很巧妙,利用场景是文件保存路径可控,这样一来我们上传的文件符合白名单就行,真正动手的地方在文件保存路径出,可以放上自己的webshell文件,然后在webshell文件后面添加%00,或0x00,再加一些字符,这样一来,系统在解析碰到00就会截断,后面字符就不起作用,只剩下前面的webshell文件名,就可以在url中进行访问了。%00和0x00的使用区别在于提交get请求时,是%00,会进行url自动解码动作,然后进入验证函数。0x00则是post请求直接进入验证函数。

d.文件内容检测

比较厉害的防护检测,就是针对内容做检测,这种防护能力比较强,但也不是不能绕过。自始至终,攻防都是在对抗中螺旋演进的。

这种检测防护基本都是从webshell具有的代表性敏感字符?或者危险敏感函数。

绕过思路:从特殊敏感字符开始进行Fuzz测试,探测webshell中有多少必要的字符存在被替换,如果构成webshell执行的字符

被替换得较多,剩下未过滤的字符的难以支撑webshell执行,可以换个角度利用系统,调用脚本语言,如

还有一种更强的基于内容检测机制,对上传的图片进行二次渲染,参考代码如下

复制代码
//判断文件后缀与类型,合法才进行上传操作
if((KaTeX parse error: Expected 'EOF', got '&' at position 19: …eext == "jpg") &̲& (filetype==“image/jpeg”)){
if(move_uploaded_file(tmpname,tmpname,tmpname,target_path)){
//使用上传的图片生成新的图片
im=imagecreatefromjpeg(im = imagecreatefromjpeg(im=imagecreatefromjpeg(target_path);

        if($im == false){$msg = "该文件不是jpg格式的图片!";@unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename = strval(rand()).".jpg";//显示二次渲染后的图片(使用用户上传图片生成的新图片)$img_path = UPLOAD_PATH.'/'.$newfilename;imagejpeg($im,$img_path);@unlink($target_path);$is_upload = true;}} else {$msg = "上传出错!";}

复制代码
主要就是后端调用了php的GD库,利用imagecreatefromjpeg()函数提取了文件中的图片数据,然后再重新渲染,这样图片中插入的恶意代码就会被过滤掉了,经过测试发现,不管是直接修改文件头制作图片马,还是利用copy命令制作的图片马,都无法避免其中的一句话被过滤掉。

绕过思路:借鉴二进制中钩子的思想,其实就是想在上传图片中找一块"地方",存储webshell,这块"地方"要求在后端处理后没有被过滤掉。那就上传一个正常的文件,然后下载下来,diff一下,查看哪些位置没有被改动过,然后添加webshell进行尝试。

0x02 安全小思考
以上防护和绕过姿势基本上都是从业务实战和CTF比赛中总结而来的,更多的时候需要各种信息进行综合利用,安全中攻击和防范永远是在对抗中相互成就的。敬畏前辈先验知识,展露后辈探索精神。

java橙色风格小说精品屋小说网站源码相关推荐

  1. PHP绿茶小说站群网站源码 自适应pc+手机端

    介绍: PHP绿茶小说站群网站源码 自适应电脑+手机端+秒收隔天速出权重 绿茶小说站群2.x-秒收隔天速出权重-小说流量稳定收割机-精品轻量级PHP站群系统站群系统,小说行业专用引流精品站群,绿茶小说 ...

  2. PHP绿茶小说站群网站源码 自适应电脑+手机端

    介绍: PHP绿茶小说站群网站源码 自适应电脑+手机端+秒收隔天速出权重 绿茶小说站群2.x-秒收隔天速出权重-小说流量稳定收割机-精品轻量级PHP站群系统站群系统,小说行业专用引流精品站群,绿茶小说 ...

  3. java计算机毕业设计学术会议信息网站源码+mysql数据库+lw文档+系统+调试部署

    java计算机毕业设计学术会议信息网站源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计学术会议信息网站源码+mysql数据库+lw文档+系统+调试部署 本源码技术栈: 项目架构 ...

  4. java计算机毕业设计英语课程学习网站源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计英语课程学习网站源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计英语课程学习网站源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈 ...

  5. java计算机毕业设计HTML5运河古城网站源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计HTML5运河古城网站源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计HTML5运河古城网站源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目 ...

  6. java毕业设计跨境电商网站源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计跨境电商网站源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计跨境电商网站源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

  7. java计算机毕业设计校园闲置物品交易网站源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计校园闲置物品交易网站源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计校园闲置物品交易网站源码+数据库+系统+lw文档+mybatis+运行部署 本源 ...

  8. java计算机毕业设计留守儿童帮扶网站源码+系统+mysql数据库+lw文档+部署

    java计算机毕业设计留守儿童帮扶网站源码+系统+mysql数据库+lw文档+部署 java计算机毕业设计留守儿童帮扶网站源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  9. java计算机毕业设计网上鲜花店网站源码+数据库+lw文档+系统+部署

    java计算机毕业设计网上鲜花店网站源码+数据库+lw文档+系统+部署 java计算机毕业设计网上鲜花店网站源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  10. HTML绿色风格农业科技公司网站源码

    简介: HTML绿色风格农业科技公司网站源码采用DIV+CSS布局设计,全套模板,包括首页.公司简介.产品介绍.招商加盟.人才招聘.在线留言.联系我们等企业模板页面源代码. 下载地址: http:// ...

最新文章

  1. python游戏创新大赛
  2. postgresql导入mysql的备份_PostgreSQL数据备份、导入转
  3. getReadableDatabase() 和 getWritableDatabase()的区别
  4. 数据库设计注意事项和原则
  5. leetcode105. 从前序与中序遍历序列构造二叉树(递归)
  6. long mode 分页_在Spring Boot中使用Spring-data-jpa实现分页查询(转)
  7. 【C++ STL学习之六】STL算法之for_each
  8. register关键字-1
  9. [置顶]       cocos2d-x2.2.5走四棋儿源码“开源”
  10. Linux系统面试常问问题,Linux面试常见问题集锦
  11. art-记一次提取mmd模型到max和unity
  12. 利用泰勒展开式实现sin(x),cos(x)函数
  13. 数据中台全面分析总结
  14. uni-app实现小程序身份证取景框
  15. docker-compose实现滚动更新
  16. javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)
  17. Scala中过滤操作filter与filterNot函数
  18. 错误 '80020009',写入文件失败
  19. 利用vue实现树表格分页
  20. 单片机高手是这样炼成的!这样学习单片机事半功倍

热门文章

  1. “仿宋_GB2312、楷体_GB2312、方正小标宋简体”的下载和安装方式【实操】
  2. griddata三维空间插值
  3. 经典CNN图像分类网络汇总
  4. matlab编程绘制直方图,matlab绘制直方图程序
  5. 【转载】嵌入式自学经历和体会
  6. c语言万年历编写程序分析,C语言 万年历程序
  7. CleanMyMac X最新2022如何激活许可证解决教程
  8. 火热升级:360Safe VS 雅虎助手
  9. C++MFC画图工具
  10. logo语言是计算机语言吗,什么是LOGO语言?