做头像网站,网络品牌是什么,黄骅市属于哪个省,潍坊网站建设方案书目录
代码审计-学前须知
Bluecms-CNVD-1Day-常规注入审计分析
emlog-CNVD-1Day-常规注入审计分析
emlog-CNVD-1Day-2次注入审计分析 知识点#xff1a; 1、PHP审计-原生态开发-SQL注入语句监控 2、PHP审计-原生态开发-SQL注入正则搜索 3、PHP审计-原生态开发-SQ…目录
代码审计-学前须知
Bluecms-CNVD-1Day-常规注入审计分析
emlog-CNVD-1Day-常规注入审计分析
emlog-CNVD-1Day-2次注入审计分析 知识点 1、PHP审计-原生态开发-SQL注入语句监控 2、PHP审计-原生态开发-SQL注入正则搜索 3、PHP审计-原生态开发-SQL注入功能追踪 原生态开发的项目一般不安全经常会爆出常见的漏洞如SQL注入文件上传等 代码审计-学前须知
挖 0day 需要技术积淀运气但挖 1Day 则是单纯的学技术。
代码审计必备知识点环境搭建使用工具插件安装使用掌握各种漏洞原理及利用,代码开发类知识点。代码审计开始前准备审计目标的程序名版本当前环境(系统,中间件,脚本语言等信息),各种插件等。代码审计挖掘漏洞根本可控变量及特定函数不存在过滤或过滤不严谨存在绕过导致的安全漏洞。代码审计教学计划审计项目漏洞原理-审计思路-完整源码-应用框架-验证并利用漏洞。代码审计教学内容PHP,Java,NET,JS,Python等网站应用引入框架类源码相关审计工具插件使用。 审计思路 审计出发点
1、正则搜索函数名或者敏感词 2、通过网站功能点确定访问文件审计功能点的代码 挖掘技巧
语句监控-数据库SQL监控排查可利用语句定向分析功能追踪-功能点文件SQL执行代码函数调用链追踪正则搜索-(update|select|insert|delete|).*?where.* 如何快速的在多个文件代码里面找脆弱点
看文件路径看代码里面的变量可控看变量前后的过滤 Bluecms-CNVD-1Day-常规注入审计分析 审计流程(update|select|insert|delete|).*?where.*\ 正则-ad_js.php-getone()-无过滤-有输出payload注入 Poc: ad_js.php?ad_id1 union select 1,2,3,4,5,6,database() 搭建参考https://wiki.bafangwy.com/doc/379/ 项目环境搭建PHPStudy 搭建使用 Apache MySQL 搭建环境 PHPStorm 打开项目源代码使用正则表达式搜索代码 (update|select|insert|delete|).*?where.*这个正则表达式可以匹配包含特定数据库操作和where子句的字符串。具体解释如下
(update|select|insert|delete|)这是一个捕获组使用|表示“或”的关系。它匹配update、select、insert、delete中的任何一个词。这个捕获组是用来匹配数据库操作的关键字。.*?这部分使用了非贪婪模式由?指定匹配任意数量的任意字符由.指定但尽可能少地匹配字符。这意味着正则表达式会寻找最短的满足整个表达式的匹配。where这部分直接匹配字符串where。.*这部分匹配任意数量的任意字符由.指定直到遇到等号。这意味着它会匹配where之后的任何内容直到出现一个等号。
综合以上部分这个正则表达式可以匹配以update、select、insert、delete之一开始之后是任意字符但尽量少接着是where关键字最后是任意字符直到等号的字符串。这种模式经常用于匹配包含特定数据库操作和where子句的语句例如SQL查询语句中的条件部分。
在正则表达式中.*是一个常见的模式表示匹配任意数量的任意字符除了换行符。具体解释如下
.表示匹配任意一个字符除了换行符。*表示匹配前面的元素零次或多次也就是指定前面的元素可以出现任意次数包括零次。
因此.*表示匹配任意长度的任意字符序列包括空序列。它是一个非常灵活的模式可以用来匹配任意文本内容。在正则表达式中.*通常用于表示不关心具体字符内容的部分只关心匹配的长度和位置。
需要注意的是.*使用贪婪模式即它会尽可能多地匹配字符。如果需要非贪婪匹配可以使用.*?来指定非贪婪模式尽可能少地匹配字符。
正则的结果 脆弱性验证
思路快速找到最脆弱的位置
看文件路径看代码里面的变量可控看变量前后的过滤 1、结合代码所在文件夹/文件名判断
要知道常见的目录的作用通过代码所在的目录大致会知道代码所扮演的角色。一段SQL语句在HTML里怎么可能会有漏洞。 代码所在文件是在后台的界面里 2、要有基本的开发知识辅助判断
.intval() 转为数字类型就不会产生漏洞 3、看变量(用户可控的)是否有过滤 这里有对变量进行绕过 但也可以尝试绕过 找到脆弱点进行分析
红框部分是(1)验证是否有值 (2)过滤空格 getone() 函数应该是开发者自定义看看它的实现声明。
声明函数的定义的定法函数的逻辑实现函数在哪里被使用
可能函数的实现位置有多个可以结合包含的文件进行判断 getone()函数逻辑
调用query()函数应该是开发者自定义的接下来是原生的代码
进入到query()函数进行分析 可以看到没有过滤可以判断存在SQL注入漏洞
还要再看看有没有数据输出没有输出的话就只能盲注了 开始测试漏洞
可以输出SQL语句辅助分析 构造Payload emlog-CNVD-1Day-常规注入审计分析 https://www.cnvd.org.cn/flaw/show/CNVD-2018-26200 审计流程 comment.php-delCommentByIp($ip)-无过滤-构造触发 Poc: /admin/comment.php?actiondelbyipip127.0.0.1%27and(extractvalue(1,concat(0x7e,(select%20user()),0x7e)))%20--token11f3f9cb7e78e3f88e39ea5678939b7d 环境搭建 初步判断漏洞在这个文件里 未对参数 ip 进行过滤 首先对cookie进行验证 然后会通过Cookie里的值验证是否是 admin 用户 通过 Get 方式接收参数 ip 值 然后查询数据并删除数据最后重定向网页
总的来说就是 admin 用户后台存在SQL注入漏洞没有回显需要盲注
构造payload并测试 网页重定向 盲注 emlog-CNVD-1Day-2次注入审计分析 https://www.cnvd.org.cn/flaw/show/CNVD-2023-65138 审计流程 数据库监控-user.php无可控-nickname-添加不可控-data.php可控-导出修改导入-触发二次注入 /admin/data.php 导入文件时执行SQL文件中语句带入Payload INSERT INTO emlog_user VALUES(110,,$P$BnTaZnToynOoAVP6T/MiTsZc9ZAQNg.,(select version()),writer,n,,123qq.com , ,,0,1687261845,1687261845); /admin/user.php select查询nickname条件数据访问触发二次注入 搭建环境 数据库监控文件放到网站的根目录 访问地址 输入数据库账号密码并连接 这个工具的意义在于可以监控数据库执行的SQL语句从中分析SQL注入漏洞
通过CNVD的漏洞提示登录 admin 账户SQL注入漏洞是在后台中 访问对应的话后天页面对比数据库执行监控 使用正则表达式在项目中搜索
经验一般情况下emlog_ 往往是拼接的方式需要重新构造正则表达式
通过数据库监控的可能存在漏洞SQL语句匹配到
这个SQL语句中user 是登录的账号带入数据进行查询。思路二次注入如果可以把SQL语句写入到 user 中那么就可以SQL注入漏洞执行 对这个函数转到-声明或实例 定位有漏洞的文件 filter_var 是过滤器可能用来过滤一些脏字等 调用 getUser() 函数时参数 condition 不可控其值是 and nickname like %% 是一个空的模式字符串表示匹配任意长度的任意字符序列。会匹配所有的用户名即登录的账号 调用 getUserNum() 函数时参数 condition 不可控 思路二次注入如果可以把SQL语句写入到 user 中那么就可以SQL注入漏洞执行
注意到 导入备份执行SQL语句建立一个新的用户用户名是SQL语句 再次查询 备份的数据SQL文件会被数据执行写入在访问用户管理界面就会被显示出来。恶意的SQL语句被执行写入到数据库再被查出来。
另外报错时间盲注都不行因为备份操作时没有数据包回显的无法判断。
而且直接创建用户也是不可以的因为直接创建的用户名是随机的。