hvv蓝初面试常见漏洞问题(上)

这篇具有很好参考价值的文章主要介绍了hvv蓝初面试常见漏洞问题(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.SQL注入

漏洞成因:

  1. 可控变量
  2. 变量会带入数据库查询
  3. 变量不存在过滤或者变量过滤不严格

注入流程

  1. 判断是否有注入点
  2. order by 判断字段数量
  3. union select 报错查看注入点
  4. 使用函数查看数据库相关信息

注入分类:

  • 注入类型:报错、联合、盲注(布尔,时间)、堆叠
  • 注入提交方式:get,post,cookie,文件头

堆叠注入判断

"id=1"正常
试试"id=1a",假设报错,说明数据没有被强转
在试试"id=1;"假设没有报错,说明";"没有被代入查询,而是当做了sql语句的结束符
那可能存在堆叠

sql注入写shell条件

知道web服务器的绝对路径
数据库具有root权限
secure_file_priv函数没有具体值

为null时,表示不允许导出导入,无法提权
为/tmp/时,限制导入导出只能在/tmp目录下,无法提权
没有具体值,不限制导入导出

提高盲注速率

  1. 提高sqlmap线程数:--threads
  2. 使用python盲注脚本
  3. 若盲注主机为window,且dns服务器配置有问题,可以使用dnslog注入

如何突破注入时字符被转义

  1. 宽字节注入
  2. hex编码绕过

盲注:

判断是否存在盲注

  1. 查看返回数据包字节长度大小判断
  2. 借助sleep函数判断

布尔盲注--逻辑判断

常用函数:regexp,like,ascii,left,ord,mid,substr
substr()函数是截取字符串的函数
regexp从左至右进行匹配,如果匹配成功则返回1,匹配失败则返回0
like函数:匹配字符串,与regexp相似

时间盲注--延时判断

常用函数:if,sleep
if(expr1,expr2,expr3);表达式
如果expr1判断为真,则返回expr2值,否则expr3的值
sleep被禁用可以使用benchmark()函数

宽字节注入

产生原因:

数据库使用了宽字符集(如GBK)但web没有考虑,例如在web层0x3f27是两个字符(?')当php中开启addslash时,会对0x27转义,因此变成0x3f5c27,数据进入数据库,由于0x3f5c是其他字符,所以转义字符就会被带走,从而单引号实现逃逸

根本原因:

客户端和连接层使用字符集不同,转换函数使用不当(iconv等)

解决方案:

统一使用字符集,对数据进行正确转义,如 mysql_real_escape_string+mysql_set_charset 的使用

报错注入:

定义:

报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。

常用函数:

  1. updatexml:利用插入不符合函数格式的语句并拼接查询语句从而通过函数报错达到我们查询内容的目的;
  2. extractvalue:利用插入不符合函数格式的语句并拼接查询语句从而通过函数报错达到我们查询内容的目的;

以~,#开头的内容不是xml格式的语法,就会报错,但是会显示无法识别的内容是什么

  1. floor:是一个取整函数,原理:group by在向统计表插入数据时,由于rand()多次计算导致插入统计表时主键重复,从而报错

mysql的网站注入5.0以上和5.0以下有什么区别?

  1. mysql5.0以下没有information_schema库,不能获取列表名,只能暴力跑表名
  2. mysql5.0以下是多用户单操作
  3. mysql5.0以上是多用户多操作

udf提权

原理:

获取webshell是一个低权限用户,然后UDF提权就是利用MySql允许扩展自定义函数的特性,将webshell的权限变成和mysql运行权限一致

利用

利用root高权限,创建一个可以调用cmd的udf.dll动态链接库,导出文件后可以直接命令框使用cmd
sqlmap udf 提权:--udf-inject

MOF提权

原理:

mof的作用是每隔五秒监控一次进程的创建和死亡,因此可以在mof中写入恶意代码,进行提权
利用条件:

  1. 操作系统版本低于 win2008
  2. 可以通过mysql导出文件%SystemRoot%\System32\Wbem\MOF 文件夹下的MOF文件中,即需要mysql root权限以及secure_file_priv的值为空或者是%SystemRoot%\System32\Wbem\MOF路径

过程

将mof上传至任意可读可写目录下
然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

mof编译方法:

  1. 将MOF文件执行为命令行参数及Mofcomp.exe文件
  2. 使用IMofCompiler接口和$CompileFile方法
  3. 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹下的MOF文件中

MSsql提权

利用xp_cmdshell提权

原理:

xp_cmdshell允许在数据库服务器上执行操作系统级别的命令。当具有足够权限的用户在 SQL Server 中执行 xp_cmdshell 时,它会调用操作系统的命令解释器(例如,Windows 上的 cmd.exe)并执行指定的命令。通常用于执行一些与操作系统相关的任务,例如运行外部程序、执行文件操作、管理文件系统等。

提权过程

xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止。如果用户拥有管理员 sa 权限则可以用 sp_configure 重新开启它。

EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;//若为零则为关闭
RECONFIGURE;

调用xp_cmdshell执行系统权限
EXEC master.dbo.xp_cmdshell '命令'

利用sp_oacreate提权

原理

当xp_cmdshell被删除时,可以利用sp_oacreate(奥普瑞特)提权,他是用于在sql中创建和实例化com对象的存储过程中,利用创建的com对象中存在的漏洞或特权操作,就能获取更高权限
默认也是关闭状态

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;//若为零则为关闭
RECONFIGURE WITH OVERRIDE;

sp_oacreate执行命令是无回显的,使用dnslog平台进行判断

sql注入绕waf

  1. 注入空白字符:攻击者可以在注入语句中使用空格、Tab键、换行符等空白字符,从而绕过WAF的检测。
  2. URL编码:攻击者可以使用URL编码技术,将语句中的特殊字符进行编码,从而绕过WAF的检测。例如,将单引号编码为%27,将双引号编码为%22等。
  3. Unicode编码:攻击者可以使用Unicode编码技术,将注入语句中的特殊字符进行编码,从而绕过WAF的检测。例如,将单引号编码为%u0027,将双引号编码为%u0022等。
  4. 拆分注入:攻击者可以将注入语句拆分为多个短语或子句,从而绕过WAF的检测。例如,将SELECT关键字分成两个部分,使用空白字符分隔,如SEL ECT等。
  5. 盲注:攻击者可以使用盲注技术,通过检查应用程序的响应来获取有关注入结果的信息,从而绕过WAF的检测。盲注技术可以分为布尔盲注和时间盲注两种。

sql预编译

原理:将sql语句中的值用占位符替代,可以视为将sql语句模板化或者说参数化。一次编译、多次运行,省去了解析优化等过程。

sql注入防范:

  1. 参数化查询:使用参数化的SQL查询,而不是动态拼接SQL查询字符串。这可以防止攻击者注入恶意代码,因为参数值会被视为数据而不是代码。
  2. 数据校验:对于输入数据,应该对其进行校验和过滤。例如,对于数字字段,应该只接受数字输入;对于字符串字段,应该过滤掉特殊字符和SQL关键字。
  3. 最小权限原则:应该使用最小权限原则来限制应用程序的访问权限。这样,即使攻击者成功地注入恶意代码,他们也只能访问应用程序有权访问的数据。
  4. 数据加密:对于敏感数据,应该使用数据加密来保护其安全性。这可以防止攻击者通过窃取数据库中的数据来获取敏感信息。
  5. 定期更新:应该定期更新数据库软件和应用程序代码,以修复已知的安全漏洞并增强系统的安全性。

2.文件包含

造成原理

文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击者会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。

php相应函数

  1. include():找不到包含文件就产生告警,继续运行
  2. require():找不到包含文件就停止运行
  3. include_once():与include类似,但只会包含一次
  4. require_once():与require类似,但只会包含一次

php伪协议

  1. file:// 用于访问本地文件系统
  2. php://filter 读取文件源码
    常用于读取文件源码,使用文件包含函数包含文件时,文件中的代码会被执行,如果想要读取文件源码,可以使用base64对文件内容进行编码,编码后的文件内容不会被执行,而是展示在页面中,我们将页面中的内容使用base64解码,就可以获取文件的源码了
  3. php://input 任意代码执行
    php://input 可以访问请求的原始数据,配合文件包含漏洞可以将post请求体中的内容当做文件内容执行,从而实现任意代码执行
  4. data://text/plain 任意代码执行
    协议格式: data:资源类型;编码,内容
    data://协议通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行
  5. zip:// 配合文件上传开启后门
    zip://协议用来读取压缩包中的文件,可以配合文件上传开启后门,获取webshell将shell.txt压缩成zip,再将后缀名改为jpg上传至服务器,再通过zip伪协议访问压缩包里的文件,从而链接木马

文件包含分类

  1. 本地包含:仅能够对服务器本地的文件进行包含,主要可以用与读取本地敏感信息
  2. 远程包含:能够通过url地址对远程的文件进行包含

系统的敏感信息

Linux

/etc/passwd:包含本地用户的账户信息。
/etc/group:包含用户组的信息。
/etc/shadow:保存本地用户密码哈希值的文件。
/etc/sudoers:保存 sudo 命令权限的文件。
/proc/net/tcp:包含当前正在运行的 TCP 连接信息。
/var/log/auth.log:包含系统中用户认证和授权的日志信息。
应用程序配置文件:攻击者可能会尝试读取应用程序的配置文件,以获取数据库连接字符串等信息。

Windows

C:\Windows\system32\config\SAM:包含本地账户的哈希密码值。
C:\Windows\system32\config\SYSTEM:包含系统的配置信息。
C:\inetpub\wwwroot\web.config:包含 IIS 网站的配置信息。
C:\Program Files (x86)\MySQL\MySQL Server 5.7\my.ini:包含 MySQL 数据库的配置信息。

3.文件上传

漏洞成因

  1. 没有对上传的文件进行足够的验证和过滤。没有对上传的文件类型、大小、名称和内容进行严格的验证和过滤,从而允许攻击者上传任意类型、任意大小和任意内容的文件
  2. 没有对上传文件的保存路径和文件名进行控制。将上传的文件保存在与Web根目录相同的目录下,或者将上传的文件名保存为原始的文件名,从而允许攻击者通过上传包含恶意代码的脚本文件或具有危险文件名的文件来执行攻击。
  3. 没有对上传文件的访问权限进行限制。允许上传的文件在上传后具有完全的访问权限,从而允许攻击者通过访问上传的文件来获取或修改敏感数据。

绕过方法:

  1. 禁用js绕过
  2. 修改文件类型绕过
  3. 大小写,双写绕过
  4. 文件头绕过
  5. 二次渲染绕过
  6. 条件竞争绕过
  7. 00截断绕过:条件:php版本要小于5.3,魔术引号关闭(白)
  8. 配合解析漏洞绕过(白)
  9. 配合文件包含漏洞(白)

文件上传相关日志

  1. 文件上传日志:Web 服务器或应用服务器上的访问日志中可能包含上传文件的信息,例如上传时间、上传文件名称、上传文件大小等。
  2. 访问控制日志:如果应用程序实现了文件上传的访问控制机制,记录访问控制的日志可能包含了上传文件的信息,例如上传人员、上传时间、上传 IP 地址等。
  3. 安全审计日志:如果使用了安全审计工具,可以记录文件上传操作的详细信息,例如上传文件的路径、上传文件的内容等。

防护方法

  1. 文件类型和大小限制:在服务器端对上传的文件进行检查,确保上传的文件类型、大小和数量符合预期。可以使用白名单方式进行限制,只允许上传特定类型的文件。
  2. 检查文件内容:在服务器端对上传的文件进行检查,确保它们不包含恶意代码或病毒等危险内容。可以使用杀毒软件或安全扫描工具来帮助检查上传的文件。
  3. 重命名文件:将上传的文件保存在一个新的随机生成的文件名下,而不是使用用户提供的文件名。这样可以避免攻击者通过伪造文件名来欺骗用户。
  4. 存储位置:将上传的文件保存在与网站主目录分离的位置上,以避免攻击者上传Webshell等恶意脚本,并能够防止攻击者直接访问上传的文件。
  5. WAF防护产品

4.XSS

原理:

攻击者通过注入恶意脚本代码,将攻击者的代码注入到网站的页面中,当用户访问被攻击的页面时,就会执行这些恶意代码,从而导致攻击者获取用户的敏感信息

分类

  1. 反射型XSS:恶意脚本被注入到URL参数中,经后端程序处理后直接输出(使用短网址)
  2. 存储型XSS:恶意脚本被注入到数据库中,经后端程序处理后保存
  3. dom型XSS:攻击者通过修改页面的DOM节点,从而实现攻击的目的(不经过服务器,前端代码的利用)

xss利用

  1. 窃取用户cookie,从而获取用户信息
  2. 网页挂马:通过xss插入恶意js脚本(例如键盘记录功能)用户访问页面就同时执行恶意js
  3. 强制弹出广告页面
    dom树标签
    hvv蓝初面试常见漏洞问题(上)

绕过方法

  1. 大小写绕过
  2. 双写绕过
  3. 关键字绕过
  4. 转换编码

xss常出现的地方

  1. 富文本编辑器
  2. 站点内用户之间私信
  3. 个人资料编辑
  4. 客服对话窗口
  5. 订单流程

防御:

  1. 输入过滤
    a. 输入是否仅仅包含合法的字符
    b. 输入字符串是否超过最大长度限制
    c. 输入如果为数字,数字是否在指定的范围
    d. 输入是否符合特殊的格式要求,如E-mail地址、IP地址等
  2. 输出转码:将HTML实体化编码
  3. 黑白名单
  4. 设置http-only(限制cookie劫持)php版本大于5.2

5.csrf

跨站请求伪造:利用用户在已登录的情况下访问恶意网站时,绕过同源策略,以用户身份执行未经授权的操作
同源:协议,ip,端口一致
同源策略浏览器在执行脚本前,会判断脚本是否与打开的网页是同源的,判断协议、域名、端口是否都相同,相同则表示同源。其中一项不相同就表示跨域访问

原理:

攻击者通过跨站请求(利用url短网站诱导点击),利用尚未失效的身份认证信息,以合法的用户身份进非法操作,简单来说盗用你的身份信息,向第三方网站发送恶意请求,包括利用你的身份发邮件,发短信,交易转账等。

类型

  1. GET类型的CSRF:通过构造一个包含受害网站的请求参数的URL,然后将这个URL发送给用户进行访问,当用户在浏览器中点击该链接时,浏览器会自动发出带有参数的GET请求
  2. POST类型的CSRF:构造一个包含受害网站的请求参数的表单,然后将这个表单发送给用户进行填写,当用户在浏览器中提交表单时,浏览器会自动发出带有参数的POST请求

挖掘

  1. 抓取正常请求数据包,查看是否存在referer字段或者token
  2. 如果有referer字段,删除再提交,若提交有效,则存在referer字段
  3. 使用相对应的检测工具,例如:CSRFTester

防御

  1. 验证HTTP Referer字段
  2. 在请求地址中添加token并验证
  3. 在HTTP头中加入自定义属性并验证
  4. 增加二次验证机制

与xss的区别

  1. CSRF需要用户先登录网站A,获取cookie; XSS不需要登录
  2. CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。
  3. XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求

hvv蓝初面试常见漏洞问题(下)文章来源地址https://www.toymoban.com/news/detail-460218.html

到了这里,关于hvv蓝初面试常见漏洞问题(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT真能取代程序员吗,看看它怎么解释SQL注入漏洞的问题

    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注\\\"慕课网\\\"! 作者:Beerus|慕课网讲师 背景 本周在《Web安全渗透测试》课程的QQ群中,有同学提问了一个关于网上一个关于SQL注入漏洞讲解案例的问题,如图: 很明显,这是个错误案例。 如果是一个没

    2023年04月27日
    浏览(42)
  • SQL_SQL_常见面试问题

    问题描述 :用户浏览日志(date, user_id, video_id), 统计 2020.03.29 观看不同视频个数的前5名 user_id。 思路 :主要注意预计算,避免直接去重 解决方案 : Hive_HQL_Hive优化_复杂SQL_观看不同视频个数的前5名_sql观看视频数最多的前五名用户_高达一号的博客-CSDN博客 问题描述 : 如何对

    2024年02月16日
    浏览(48)
  • SQL注入(1)--判断是否存在SQL注入漏洞

    不论是学习后端开发/数据库/网络安全,SQL注入安全隐患反复被提起 到底什么是SQL? 维基百科的定义: (1)什么是SQL? SQL是用来操控数据库的语言 (2)举一个例子,现在我们要查询电影“长津湖”的票房数据: 先想象一下开发人员是如何书写代码从数据库中拿到数据的:

    2024年02月05日
    浏览(45)
  • SQL注入之WHERE 子句中的 SQL 注入漏洞

    ● 实验室要求 此实验室在产品类别筛选器中包含 SQL 注入漏洞。当用户选择类别时,应用程序将执行如下所示的 SQL 查询: 若要解决实验室问题,请执行 SQL 注入攻击,使应用程序显示任何类别(已发布和未发布)中所有产品的详细信息。 ● 必要知识点 一个没有安全概念的

    2024年02月14日
    浏览(43)
  • 【SQL注入漏洞-06】HTTP头部注入靶场实战

    常见的sql注入一般是 通过请求参数或者表单进行注入 ,HTTP头部注入是 通过HTTP协议头部字段值进行注入 。 产生HTTP头部注入的条件: 能够对请求头消息进行修改 修改的请求头信息能够带入数据库进行查询 数据库没有对输入的请求信息做过滤 User-Agent :是Http协议中的一部分

    2024年02月02日
    浏览(58)
  • SQL 注入漏洞攻击

    假设你用自己的用户名和密码登录了一个付费网站,网站服务器就会查询一下你是不是 VIP 用户,而用户数据都是放在数据库中的,服务器通常都会向数据库进行查询,要向数据库进行增删改查操作,就需要用到 SQL 语言。 但是,作为 SQL 的注入攻击者,我们并不知道网站的密

    2024年02月09日
    浏览(51)
  • SQL注入漏洞详解

            结构化查询语言(Structured Query Language,简称SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库。SQL注入漏洞主要形成的原因是Web应用程序对用户的输入没有做严格的判断,导致用户可用将非法的

    2023年04月20日
    浏览(33)
  • 漏洞原理 SQL 注入

    OWASP漏洞原理启航(第一课)-CSDN博客 OWASP漏洞原理<最基础的数据库 第二课>-CSDN博客 小皮面板(phpstudy

    2024年02月20日
    浏览(41)
  • GeoServer 存在 sql 注入漏洞

    GeoServer 是一个允许用户共享和编辑地理空间数据的开源软件服务器,支持 OGC Filter expression 和 OGC Common Query Language 语言,使用 PostGIS Datastore 作为数据库。PostGIS是PostgreSQL数据库的扩展程序,增加了数据库对地理对象的支持。 GeoServer 的受影响版本的 PropertyIsLike、FeatureId、DWit

    2024年02月09日
    浏览(41)
  • DVWA之SQL注入漏洞

    1、先确定正常和不正常的回显 回显,就是显示正在执行的批处理命令及执行的结果等。 输入1时,有回显,是正常的 数据库语句: select * from table where id =1 输入5时,有回显,是正常的 数据库语句: select * from table where id =5 输入6时,没有回显 数据库语句: select * from table

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包