小众漏洞合集【更新】

知识面决定攻击面!

XPath注入

参考文章:

XPath注入详解

前提

了解XPath语法,可以在这里——W3C 学习 XPath 语法

概念

XPath注入攻击,是指利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知 识的情况下,通过XPath查询得到一个XML文档的完整内容。Xpath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。

示例
//users/user[loginID/text()=’abc’ and password/text()=’test123’] 。

这是一个XPath查询语句,获取loginID为abc的所有user数据,用户需要提交正确的loginID和password才能返回结果。如果黑客在 loginID 字段中输入:' or 1=1 并在 password 中输入:' or 1=1   就能绕过校验,成功获取所有user数据

//users/user[LoginID/text()=''or 1=1 and password/text()=''or 1=1]
有回显的注入:
$xpath = "//users/user[username/text()='".$_POST["username"]."' and password/text()='".$_POST["password"]."']";
当构造
Username: ' or '1' = '1
Password: ' or '1' = '1

那么整个 XPath 查询语句就变成了这个样子
$xpath = "//users/user[username/text()='' or '1' = '1' and password/text()='' or '1' = '1']";
类似于SQL注入

盲注:
Username:1' or substring(username(/*[position()=1]),1,1)='r' or '1'='1

CRLF注入

参考文章

CRLF注入
CRLF注入(响应截断)挖掘技巧及实战案例全汇总

前提

CRLF指的是CR回车LF换行。CR、LF的URL编码分别为:%0d、%0a

原理

在 HTTP 规范中,行应该使用 CRLF 来结束。首部与主体由**两个 CRLF **分隔,浏览器根据这两个 CRLF 来获取HTTP内容并显示。
就比如下面访问百度的返回包:

由此可见,浏览器处理返回包的时候,区分响应头数据部分的标识就是响应包中第一个空行(两个CRLF)出现的位置
因此,当服务器对客户端传输的数据过滤不严并且会将数据放在返回包里传输给客户端的时候,攻击者一旦向请求行或首部中的字段注入恶意的 CRLF ,就能注入一些首部字段或报文主体,并在响应中输出

利用

最常见的两种情况是使用输入参数 创建 Cookie302 跳转location 处。
记得之前有一次在挖洞的时候,Cookie字段中,会存储一个 url=http://xxx.com,但是当时也没接触过 CRLF 注入,所以也就没测

寻找这一类漏洞,主要观察请求包中那些数据会出现在响应包中
比如 发起一个 GET 请求: www.xx.com?url=http://aa.com,并且在响应包中会返回一个响应头 Location: http://aa.com,那么就可以进一步测试是否存在 CRLF 注入

构造:www.xx.com?url=http://aa.com%0d%0aCrlf:Ture
查看是否响应里会出现:

Location: http://aa.com
Crlf:Ture

若存在,则可以用来造成 XSS :www.xx.com?url=http://aa.com%0d%0aX-XSS-Protection:0%0d%0a%0d%0a<svg/onload=alert(!)>

当然很多网站都会做过滤,可以尝试以下url多次编码或者十六进制编码绕过一下,绕不过也就没办法了
之前测试某丰网站的时候,有任意 URL 跳转,提交的时候说不收,然后就试了一下有没有 CRLF 注入,结果毛都没有,直接给我过滤了,出现%0d%0a直接给我替换成空,要是后面接了其他字符,他返回包的 Location 都给你删了,太难了,新手到底该怎样挖洞?

DNS 域传送漏洞

参考文章

DNS域传送漏洞

原因

DNS服务器分为:主服务器、备份服务器和缓存服务器。在主备服务器之间同步数据库,需要使用 DNS 域传送 。域传送是指后备服务器从主服务器拷贝数据,并用得到的数据更新自身数据库。
若DNS服务器配置不当,可能导致匿名用户获取某个域的所有记录。造成整个网络的拓扑结构泄露给潜在的攻击者,包括一些安全性较低的内部主机,如测试服务器。凭借这份网络蓝图,攻击者可以节省很少的扫描时间。

检测方法
Windows
  • nslookup 基本用法
  1. 通过 DNS 服务器查询域名的 IP 地址
    nslookup cnblogs.com 114.114.114.114 # 也可以不指定 DNS 服务器,使用默认的即可

  2. 反向查询一个 IP 地址对应的域名(好像只能通过 IP 查到 DNS 服务器的域名)
    nslookup -type=ptr 8.8.8.8

  3. 查询某域名使用的 DNS 服务器名称
    nslookup -type=ns cnblogs.com

  4. 检测是否存在 DNS 域传送漏洞

nslookup -type=ns 域名     # 查询域名使用的 DNS 服务器,当然也可以不使用该步骤,直接使用默认的 DNS 服务器即可
nslookup
server DNS服务器域名       # 设置 DNS 服务器为刚刚查询到的
ls 要检测的域名                   # 查询 DNS 服务器下对应域下的所有域名


当出现大量数据时即表示存在 DNS 域传送漏洞,上面的例子为不存在

Linux
  • dig 基本用法
  1. 通过域名查 IP
    dig 域名

  2. 查询某域名使用的 DNS 服务器名称
    dig ns 域名

  3. 检测是否存在 DNS 域传送漏洞
    dig axfr @DNS服务器 域名 # 使用 axfr 参数,能得到域传送数据,从而检测 DNS 域传送漏洞
    当结果中存在 XFR size 字符串,即代表该服务器存在该漏洞
    以下结果表示 cnblog 不存在 DNS 域传送漏洞:

.git 泄露

原因

当前大量开发人员使用 git 进行版本控制迭代
在运行 git init 初始化代码库的时候,会在当前目录下面产生一个.git隐藏文件夹,用来记录代码的变更记录等
在发布代码的时候,如果 /.git/ 这个目录没有删除,这就引起了 git 泄露漏洞,攻击者可以利用其恢复源代码

原理

执行 git init 命令可以得到如下一个隐藏文件夹:

其中该文件夹的子文件夹分别对应着:

  • hooks,存放一些 shell 脚本,可以设置特定的 git 命令后触发相应脚本
  • info,包含仓库的一些信息
  • objects,存放所有 git 对象的地方
  • refs,该目录一般包含了三个子文件夹--heads、remotes、tags,heads 中的文件标识了项目中各个分支指向的当前 commit

子文件:

  • index,暂存区,它是一个二进制文件,也就是通过 git add 追踪的文件
  • config,Git仓库的配置文件
  • HEAD,这个文件包含了一个档期分支 branch 应用 , 通过这个文件 Git 可以得到下一次 commit 的 parent
利用工具

GitHack

  • 解析 ./git/index 文件 , 找到工程中所有的文件名和文件 sha1
  • 然后去 .git/objects 文件夹下载对应的文件
  • 通过 zlib 解压文件 , 按照原始的目录结构写入到源代码
.svn 泄露

同理与 .git 泄露
利用工具:svnexploit

posted @ 2020-08-12 15:31  1ndex-  阅读(567)  评论(0编辑  收藏  举报