bilibili 2021 1024程序员节安全攻防挑战赛
bilibili 2021 1024程序员节安全攻防挑战赛
记一次tp5的艰难getshell
起因遇到一个站可能存在thinkphp的rce,遂进一步检测,但此过程中碰到诸多限制。通过各种折腾最终艰难地拿下,在此记录一波。
尝试首先得到了thinkphp的版本 V5.0.11
然后搜罗了一些针对此版本的exp进行尝试,一番测试下来发现大部分方法都行不通,不过phpinfo可以得到
12?s=captcha_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
搜索disable_functions,果然有很多命令执行的函数都被禁止了
看了一遍发现还有一个漏网之鱼assert函数不在disable_function中,但换用它去结合call_user_func()执行系统命令时仍然失败。
后来查阅资料得知,在php7.0之后,assert()作为一种语言构造器,而不是一个函数。
故不满足call_user_func的第一个参数是被调用的回调函数,无法利用。
注意,eval()也是如此,无法作为call_user_fun ...
UEditor.net版本任意文件上传到getshell
漏洞介绍
UEditor在抓取远程数据源的时,会进入”catchimage”分支。在该方法使用的CrawlerHandler类中,并未对文件类型进行验证,从而导致了任意文件上传漏洞。
漏洞利用漏洞检测
访问如下链接 : http://xxxxxxxxx/ueditor/net/controller.ashx?action=catchimage&encode=utf-8如出现
则可尝试漏洞利用
漏洞POC
1234<form action="www.XXXX.com.cn/controller.ashx?action=catchimage" enctype="application/x-www-form-urlencoded" method="POST"><p>shell addr:<input type="text" name="source[]"/></p><input type="submit" va ...
ThinkPHP5.x远程代码执行漏洞分析
漏洞描述Thinkphp5.x版本中没有对路由中的控制器进行严格过滤,在存在admin、index模块、没有开启强制路由的条件下(默认不开启),导致可以注入恶意代码利用反射类调用命名空间其他任意内置类,完成远程代码执行。
影响版本:ThinkPHP v5.0.x < 5.0.23,ThinkPHP v5.1.x < 5.1.31
漏洞分析首先在/thinkphp/library/think/App.php的run()主函数中,url传入后需要经过路由检查
123456$dispatch = self::$dispatch; // 未设置调度信息则进行 URL 路由检测 if (empty($dispatch)) { $dispatch = self::routeCheck($request, $config); }......
跟进self::routeCheck函数
12345public static function routeCheck($request, a ...
ThinkPHPv5.1反序列链分析
回顾先来回顾下反序列化中常用到的几个魔法函数
__construct():创建对象时会自动调用
__destruct():对象销毁时自动调用
__sleep():执行serialize()时自动调用
__wake():执行unserialize()时自动调用
__toString():对象被作为字符串处理时自动调用
__get():从不可访问的属性中读取数据时自动调用
__call():调用类中不存在的或不可访问的方法时自动调用
反序列化链分析寻找入口点,全局搜索__destruct()
前三处都是执行$this->stop();,关闭连接,无法利用
第四个是think/process/pipes下Windows类的__destruct() ,除了stop()方法,还有一个removeFiles()方法
12345public function __destruct(){ $this->close(); $this->removeFiles();}
全文追踪此函数
123456789101112/** * 删除临时文件 */pri ...
bluecms v1.6审计
环境搭建
bluecms v1.6源码
https://github.com/source-trace/bluecms
Seay源代码审计系统
链接:http://pan.baidu.com/s/1dENS4KT 密码:rszt
phpStudy2018 PHP-5.4.45
按理说访问网站主目录下的/install就能进入安装页面,但我访问后却显示空白,无法进行安装。经过搜索,找到了解决办法:在phpstudy设置中打开允许目录列表,并且在 \install\compile 目录下删掉%%37^37A^37A968E3%%step1.htm.php文件,再访问一次安装地址就可以了。接下来按照提示进行数据库配置即可成功搭建。
漏洞发现Seay源代码审计系统自动审计结果
SQL注入union注入ad_js.php
定位到这里,发现$_GET['ad_id']参数除了trim去掉两边空格外没有其他的过滤,而包含的common.inc.php中对$_GET进行了addslashes过滤,但由于SQL语句中的变量没有使用单引号保护,addslashes 也就失去了 ...
Java反序列化
简介
序列化:将对象写入到IO流中
反序列化:从IO流中恢复对象
意义:序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。
使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个JavaBean类都实现Serializeable接口。
实现方式序列化
创建一个ObjectOutputStream输出流
调用ObjectOutputStream对象的writeObject输出可序列化对象
1234567891011121314151617181920212223242526272829303132import java.io.*;public class Person implements Serializable {//实现Serializable接口 ...
Java反射机制
什么是Java反射?Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类所有的属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制。
反射就是把Java类中的各种成分映射成一个个的Java对象。
在Java中,每个类都对应一个Class对象,其反射机制是通过获取该类的Class对象,然后获取到其类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,同时可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等来体现的。
反射机制获取Class对象
通过Class类中的静态方法forName()
1Class.forName("全类名") // 包名.类名
通过任何数据类型都有的class属性
1类名.class属性
通过Object类的getClass()方法
1对象.getClass()方法
例子:获取Person类对应的Class对象
12345678910111213141516import domain.Pers ...
Java环境配置与基础语法
Java简介Java 体系
Java SE(标准版)
Java EE(企业版)
Java ME(精简版)
Java 特性
结构严谨,面向对象
跨平台(Java源代码默认编译结果为平台通用的字节码)
安全性优越(提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题)
多线程
分布式
完善的应用程序接口
大量的第三方类库
jdk?jre?jvm?
jdk(Java development kit):java开发工具包,支持Java程序开发的最小环境,即如果你要进行Java开发,你至少要在你的开发机器上安装JDK。
JDK = Java程序设计语言+Java虚拟机+Java API类库
jre(Java Runtime Environment):java运行环境,支持Java程序运行的标准环境,如果你不需要进行Java程序开发,只是要运行Java程序,例如运行Jar文件,那么你可以在你的运行机器上只安装JRE。
**JRE = Java虚拟机 +Java API类库中的Java SE API子集 **
jvm(Java Virtual Machine):j ...
ms17_010-永恒之蓝复现
介绍
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
ms17_010是一个安全类型的补丁,用来修补Windows操作系统中存在的一个基于SMB服务展现出来的一个漏洞,此漏洞利用445端口执行,原本是作为局域网共享使用的一个端口,但恶意人员可以利用此端口偷偷的执行共享服务或者其他命令执行操作。此ms17_010漏洞主要是针对于Windows7及以前的操作系统暴露出来的安全问题。
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。
SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请 ...