WebSocket劫持(CSWSH)
WebSocket劫持(CSWSH)在了解WebSocket劫持之前,首先需要了解一下什么是WebSocket
WebSocket介绍在传统的HTTP协议中,因为HTTP协议是一个请求-响应协议,他是不支持长连接的,请求必须先由浏览器发给服务器,服务器才能响应这个请求,所以有一个缺点,就是通信请求只能由客户端发起,服务器只能被动响应,这样如果需要多人聊天,联机游戏的话,就非常的麻烦,需要使用轮询,即浏览器定时发送请求进行询问,但这样就会造成很大的带宽浪费,也会给服务器造成压力
Web Socket是HTML5新增的协议,他与HTTP有一定的交集,但是却是一个新的协议,是一个持久化的协议,是一个基于TCP的应用层通信协议,它的目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,建立无限制的全双工通信,在Web即时通信中,WebSocket可以提高网络吞吐量,减少延迟,减轻服务器负担
简单的举个例子,HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,服务端返回一个响应后,这个HTTP请求事务就已经完成了。即使这个HTTP连接处于keep-al ...
一些Java的基础知识
一些Java的基础知识对Java安全入门所需要的一些Java基础知识进行一些补充
Java程序基本结构
运行已编译的程序时,Java虚拟机总是从指定类的main方法开始执行
Java用双引号界定字符串
用(.)进行类底下的方法调用
在声明一个变量后,必须对其进行初始化,否则无法使用
用final指示常量,final表示这个常量只能被赋值一次
Java的注释:
//
/**/
/** */ 文档注释
对象和类Java是一种面向对象进行编程的语言(object-oriented programming,OOP)
由类构造对象的过程称为创建类的实例
对象中的数据称为该实例中的字段
操作数据的过程(或者可以理解为一个类中的操作函数)称为方法
所有的类都默认继承Object类
Java总是采用按值调用,并且只支持按值调用,也就是说,方法得到的是所有参数值的一个拷贝,具体来讲,在某个方法内对参数值进行修改是不会改变参数原值的,因为在推出方法后会对修改的参数进行销毁
即对象引用是按值传递的
方法不能修改基本数据类型的参数。
方法可以改变对象参数的状态。
方法不能让一个对象参数引用一个新的对象 ...
HTTP请求走私
HTTP请求走私简介HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式,用以绕过安全控制并获得未经授权的访问,执行恶意活动,最早在 2005 年被提出
成因在正常情况下用户发出的 HTTP 请求的流动如下图:
可以看到在长度标记正常的情况下,蓝色和绿色的数据包被正确的区分,不同用户的数据在后端被正确还原
在整个过程中,最关键的是前置服务器和后端服务器应当在 HTTP 请求的边界划分上达成一致,否则就会导致下图所示的异常:
(图中橙色的部分为走私的内容)
当我们向代理服务器发送一个比较模糊(接收到的实际长度和报文中标的长度不同)的 HTTP 请求时,由于两者服务器的实现方式不同,可能代理服务器认为这是一个 HTTP 请求
即前端服务器和后端服务器对客户端传入的数据理解不一致的情况,即 Content-Length 和 Transfer-Encoding 标头。然后将其转发给了后端的源站服务器,但源站服务器经过解析处理后,只认为其中的一部分为正常请求,剩下的那一部分,就算是走私的请求,当该部分对正常用户的请求造成了影响之后,就实现了 HTTP 走私攻击
Co ...
正则表达式
正则表达式字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
所以我们判断一个字符串是否是合法的Email的方法是:
创建一个匹配Email的正则表达式;
用该正则表达式去匹配用户的输入来判断是否合法。
因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。
在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:
'00\d'可以匹配'007',但无法匹配'00A';
'\d\d\d'可以匹配'010';
'\w\w\d'可以匹配'py3';
.可以匹配任 ...
NepCTF Just Kidding复现
NepCTF Just Kidding复现首先,访问容器地址,逛了一圈没看到啥东西,扫描发现存在源码泄露,访问www.zip得到源码
审计源码,找到反序列化的注入入口
同时题目说了是Laravel的反序列化,然后就是上网找poc的过程了
在Illuminate/Broadcasting/PendingBroadcast.php中的__destruct方法中$this->events和$this->event均为可控
并且,Illuminate/Bus/Dispatcher.php中的dispatch方法, 这里的$command和$this->queueResolver均是可控的
参考:https://github.com/1nhann/vulns/issues
用第一条链子就可以打通
对Linux|SUID提权的一些总结
对Linux|SUID提权的一些总结SUID简介通常来说,Linux运行一个程序,是使用当前运行这个程序的用户权限,这当然是合理的。但是有一些程序比较特殊,比如我们常用的ping命令
suid即set user id,是一种授予文件的权限类型,它允许用户使用者以文件所有者的权限来执行文件
普通用户之所以也可以使用ping命令,原因就在我们给ping这个可执行文件设置了suid权限
设置SUID
12chmod u+s filename 设置SUID位chmod u-s filename 去掉SUID设置
以下命令可以找出正在系统上运行的所有SUID可执行文件
123find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} ;
以下所有的二进制文件都将以root权限运行 我们随便找一个
可以看到其设置了suid权限,并且主权限为root
...
NepCTF Challenger Thymeleaf模板注入学习
NepCTF Challenger Thymeleaf模板注入学习这道题是Thymeleaf模板注入的题目,以前没遇到过,现场学习了一波
Thymeleaf模板注入学习参考:https://paper.seebug.org/1332/
https://xz.aliyun.com/t/9826
环境搭建环境地址:https://github.com/veracode-research/spring-view-manipulation/
我们以Springboot + Thymeleaf模板创建一个带有漏洞的项目
核心代码如下:
1234@GetMapping("/path")//用户请求的url为pathpublic String path(@RequestParam String lang)//参数名称为lang { return "user/" + lang + "/welcome"; //template path is tainted}
服务器通过Thymeleaf模板,然后去查找相关的模板 ...
校赛 白给的shell复现
校赛 白给的shell复现参考该文章进行学习:https://www.freebuf.com/articles/web/192052.html
考察的是如何进行disable functions的绕过
源码是这样的,但是拿到shell却无法执行任何命令
然后看一下phpinfo
属于是把能用的函数都给禁用了
所以需要我们进行disable_funtions的绕过
这道题主要使用LD_PRELOAD的方法进行绕过
LD_PRELOAD是linux下的一个环境变量,我们可以上传自己的恶意so文件,也就是动态链接库,让该变量指向它,然后再进行库的调用的时候优先调用我们上传的so文件,达到触发并利用的效果
大致的步骤如下
生成一个我们的恶意动态链接库文件
利用putenv设置LD_PRELOAD为我们的恶意动态链接库文件的路径
配合php的某个函数去触发我们的恶意动态链接库文件
可以利用gcc的__attribute__ ((constructor))
该函数会在main()函数执行前被执行,利用这个机制即可在执行正常的函数前先执行我们的命令
写一个恶意的c文件,并进行编译
12345 ...
JavaScript学习
GoAhead漏洞分析GoAhead简介GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的Web Server,多用于嵌入式系统、智能设备。其支持运行ASP、Javascript和标准的CGI程序,这个漏洞就出现在运行CGI程序的时候。
CVE-2017-17562 GoAhead远程代码执行漏洞分析漏洞简介CVE-2017-17562是一个远程命令执行漏洞
影响的版本若启用了CGI并动态链接了CGI程序的话,则可导致远程代码执行
漏洞的原因在于cgi.c的cgiHandler函数使用了不可信任的HTTP请求参数初始化CGI脚本的环境
可使用环境变量(LD_PRELOAD),利用glibc动态链接器加载任意程序实现远程代码执行
影响版本受影响的GoAhead版本为2.5.0到3.6.4之间
漏洞分析漏洞点存在于cgiHandler中
漏洞的原因在于cgi.c的cgiHandler函数使用了不可信任的HTTP请求参数初始化CGI脚本的环境
没有对传入的数据进行检查,使得最终execve启动新进程执行cgi程序时的环境变量envp数组可控
漏洞利用首先是如何利 ...
蓝帽杯2021 One Pointer PHP
[蓝帽杯 2021]One Pointer PHP在BUU上对这道题进行复现
打开环境,题目给了两个源码
add_api.php
12345678910111213141516<?phpinclude "user.php";if($user=unserialize($_COOKIE["data"])){ $count[++$user->count]=1; if($count[]=1){ $user->count+=1; setcookie("data",serialize($user)); }else{ eval($_GET["backdoor"]); }}else{ $user=new User; $user->count=1; setcookie("data",serialize($user));}?>
user.php
12345<?phpclass User ...