您的位置:首页 > 文旅 > 旅游 > 网站制作有哪些方面_最靠谱的购物平台_引流推广怎么做_seo网站关键词优化快速官网

网站制作有哪些方面_最靠谱的购物平台_引流推广怎么做_seo网站关键词优化快速官网

2024/12/22 11:28:37 来源:https://blog.csdn.net/m0_74402888/article/details/143577439  浏览:    关键词:网站制作有哪些方面_最靠谱的购物平台_引流推广怎么做_seo网站关键词优化快速官网
网站制作有哪些方面_最靠谱的购物平台_引流推广怎么做_seo网站关键词优化快速官网

Day105:代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析_php代码审计实战-CSDN博客

知识点:

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_id=1 union select 1,2,3,4,5,6,database()

(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. 看文件路径
  2. 看代码里面的变量(可控)
  3. 看变量前后的过滤

1、结合代码所在文件夹/文件名判断

要知道常见的目录的作用,通过代码所在的目录大致会知道代码所扮演的角色。一段SQL语句在HTML里怎么可能会有漏洞。

2、要有基本的开发知识辅助判断

.intval() 转为数字类型,就不会产生漏洞

3、看变量(用户可控的)是否有过滤

找到脆弱点进行分析

红框部分是:(1):验证是否有值   (2):过滤空格

getone() 函数应该是开发者自定义,看看它的实现,声明。

声明:函数的定义的定法,函数的逻辑;实现:函数在哪里被使用

可能函数的实现位置有多个,可以结合包含的文件进行判断

getone()函数逻辑:

  1. 调用query()函数,应该是开发者自定义的
  2. 接下来是原生的代码

进入到query()函数进行分析

可以看到没有过滤,可以判断存在SQL注入漏洞

还要再看看有没有数据输出:没有输出的话,就只能盲注了

开始测试漏洞

可以输出SQL语句辅助分析

构造Payload

数据可有7列

union select 1,2,3,4,5,6,database();

emlog-CNVD-1Day-常规注入审计分析

https://www.cnvd.org.cn/flaw/show/CNVD-2018-26200

审计流程:

comment.php->delCommentByIp($ip)->无过滤->构造触发

Poc:

/admin/comment.php?action=delbyip&ip=127.0.0.1%27and(extractvalue(1,concat(0x7e,(select%20user()),0x7e)))%20--+&token=11f3f9cb7e78e3f88e39ea5678939b7d

初步判断漏洞在这个文件里

初步判断漏洞在这个文件里

未对参数 ip 进行过滤

首先对cookie进行验证

然后会通过Cookie里的值验证是否是 admin 用户

通过 Get 方式接收参数 ip 值

然后查询数据并删除数据,最后重定向网页

总的来说,就是 admin 用户后台存在SQL注入漏洞,没有回显,需要盲注

构造payload并测试

/admin/comment.php?action=delbyip&ip=127.0.0.1%27and(extractvalue(1,concat(0x7e,(select%20user()),0x7e)))%20--+&token=b1f37413a25a13e17b5e29004c0287f7

网页重定向

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','','123@qq.com ' , '','','0','1687261845','1687261845');

/admin/user.php

select查询nickname条件数据,访问触发二次注入

输入数据库账号密码并连接

这个工具的意义在于可以监控数据库执行的SQL语句,从中分析SQL注入漏洞

通过CNVD的漏洞提示,登录 admin 账户,SQL注入漏洞是在后台中

使用正则表达式在项目中搜索

经验:一般情况下,"emlog_" 往往是拼接的方式,需要重新构造正则表达式

通过数据库监控的可能存在漏洞SQL语句,匹配到

这个SQL语句中,user 是登录的账号,带入数据进行查询。思路:二次注入,如果可以把SQL语句写入到 user 中,那么就可以SQL注入漏洞执行

对这个函数转到->声明或实例

思路:二次注入,如果可以把SQL语句写入到 user 中,那么就可以SQL注入漏洞执行

注意到

导入备份,执行SQL语句,建立一个新的用户,用户名是SQL语句

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com