web安全-8-SSRF与XXE漏洞

笔记是根据马士兵教育2024HVV专题编写,作为学习记录来分享,如有错误的地方请指正,谢谢

免责声明
本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

1、SSRF介绍

SSRF(Server-Side Request Forgery ,服务器端请求伪造)是一种由攻击者构造形成由服务器发起请求的一个安全漏洞。

简单来说就是攻击者通过服务器对内网的机子发起的攻击

2、SSRF漏洞原理

正常访问流程是下面这样

http://website.thm/stock?url=http://api.website.thm/api/stock/item?id=123

在这里插入图片描述
但是对于后面url部分没有进行限制,导致我们可以更换成我们想要的url,这就是SSRF漏洞

3、SSRF漏洞挖掘

3.1、网页中可以直接看到的内容

只要网页读取或读取了其他地址的内容,那么就有可能出现SSRF漏洞的出现,通常在下面这几种业务情况:

  1. 分享
  2. 转码
  3. 在线翻译
  4. 图片加载、下载
  5. 图片、文章收藏
  6. 未公开的API

3.2、抓包进一步发现

我们通过抓包,注意URL中的关键字

  1. share
  2. wap
  3. url
  4. link
  5. src
  6. source
  7. target
  8. u
  9. 3g
  10. dispaly
  11. sourceURL
  12. imageURL
  13. domain

像以下图片几种情况都有可能出现SSRF漏洞,可以使用…/api去尝试,看有没有目录的一个穿越
在这里插入图片描述

3.3、pikachu中举例

原网站中就有通过url去跳转访问文件
在这里插入图片描述
我们直接修改后面的url
在这里插入图片描述

4、SSRF漏洞利用

主要挖掘以下内容

  1. 服务探测
  2. 协议
  3. 访问敏感数据
  4. 内网探测

4.1、抓包后对url进行地址探测

在这里插入图片描述

4.2、探测地址

后面爆破为1到254
在这里插入图片描述

4.3、探测出内外资产

响应出,内网有多少的资产,167这个就是存活的
在这里插入图片描述


基础知识

内网探测:
C类:192.168.0.0-192.168.255.255
B类:172.16.0.0-172.31.255.255
A类:10.0.0.0-10.255.255.255

常见端口:
http: 80、https: 443、telnet:23、ftp:21、ssh:22、smtp:25、weblogic:7001
tomcat:8080、jboss:8080、oralce:1521、sqlserver:1443

SSRF可以试试那些协议:
ftp、dict、gopher、file、ladp、ssh、smb、http、https


4.4、开始服务探测

标记端口位,用端口去判断出是什么服务
在这里插入图片描述
开始爆破
在这里插入图片描述

4.5、根据返回判断协议是否有

在这里插入图片描述

4.6、读取敏感文件(很重要的一步)

在这里插入图片描述


知识点(file协议敏感文件读取)

file协议敏感文件读取
winodws下:
C:\Windows\system.ini
C:\windows\system32\drivers\etc\hosts
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息

Linux下:
/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts
//ssh会把每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.cnf //mysql 配置文件
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/redhat-release 系统版本
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/var/lib/mlocate/mlocate.db //全文件路径
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/porc/self/cmdline //当前进程的cmdline参数
/proc/sched_debug 配置文件可以看到当前运行的进程并可以获得对应进程的pid
/proc/pid/cmdline 则可以看到对应pid进程的完整命令行。
/proc/net/fib_trie 内网IP
/proc/self/environ 环境变量
/proc/self/loginuid 当前用户


5、XXE介绍

XML外部实体注入
XML External Entity Injection

5.1、XXE定义

如果Web应用的脚本代码没有限制XML引入外部实体,从而导致用户可以插入一个外部实体,并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

5.2、XML介绍

XML 指可扩展标记语言,被设计为传输和存储数据,xml文档包括xml声明、DTD文档类型定义(可选)、文档元素、其焦点是数据的内容,其把数据从HMTL分离,是独立于软件和硬件的信息传输工具。

5.3、XML主要两个用途

  1. 配置文件:层次分明,结构清晰
  2. 在不同的系统之间交换数据
<?xml version="1.0" encoding="ISO-8859-1"?> //第一行为xml的声明,定义了xml的版本和使用的编码
<note>     //文档的根元素,下面四行为根元素下的四个子元素
  <to>大黄</to>
  <from>大壮</from>
  <heading>村头集合</heading>
  <body>有妹子!</body>
</note>
"阳光,开朗,大男孩"
<person name="阳光" character="开朗" result="大男孩">

<person>
     <name value="阳光" />
     <character value="开朗">
     <result value="大男孩">
</person>

json
{
    “name”:"阳光",
     "chatacter":"开朗""result": "大男孩"
}

6、DTD介绍

DTD全称The document type definition,即是文档类型定义,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。控制XML的格式规范。

6.1、DTD的作用

  1. 通过DTD,每一个XML文件均可以携带一个自身相关的描述
  2. 验证数据
  3. 交换数据

内部实体声明:

<!ENTITY 实体名称"实体的值">

外部的实体声明:

<!ENTITY 实体名称SYSTEM "URI">

7、抓取XML的特征

在这里插入图片描述

8、XXE危害

1.文件读取
2.内网端口扫描
3.命令执行

8.1、文件读取

在这里插入图片描述
修改内容
在这里插入图片描述

这时候读取到了
在这里插入图片描述
windows中system.in的文件

8.1.1、这时候进行一个带外的测试

就是看一下它能不能出网
通过dnslog.cn网站获取一个subdomain,然后写入xml中。看有没有访问成功
在这里插入图片描述
修改xml

在这里插入图片描述
发送后,在dnslog上有显示访问,说明成功了
在这里插入图片描述


为什么要做带外测试?
因为有时候,没有回显。
这时候我们不好判断
1、是不是payload的问题
2、是不是存在这个漏洞
3、是不是服务端做了防御,不给回显
4、是不是不存在这个文件

如果关闭了回显,但是带外测试成功了,我们怎么利用呢
可以远程窃取
流程是:
1、读本地服务器上的文件
2、远程加载了恶意DTD文件
3、攻击者的服务器开启接收内容并写出文件

这个DTD内容就是读取文件,发送到这个攻击者的服务器中

这个DTD文件也是在攻击者服务器上
在这里插入图片描述
这时候在burpsuite中修改,这时候就可以远程窃取到文件
在这里插入图片描述

web安全这一模块就过完了,里面涉及到一些漏洞没有详细写的,在后面其他的专栏中会补上。接下来就是要讲关于蓝队与红队之间的事了

  • 22
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用中提到了SSRF(Server-Side Request Forgery:服务器端请求伪造)的概述和形成原因。SSRF的形成往往是由于服务端提供了从其他服务器获取数据的功能,但没有对目标地址进行严格过滤与限制,导致攻击者可以传入任意地址来让后端服务器对其发起请求,并返回目标地址的数据。在PHP中,如果使用file_get_contents()、fsockopen()、curl_exec()等函数时使用不当,就会导致SSRF漏洞的产生。为了防止SSRF漏洞,需要对目标地址进行过滤和限制。中提到了一些攻击方式,如攻击运行在内网的系统或应用程序,获取内网系统的弱口令进行内网漫游,并对有漏洞的内网Web应用实施攻击获取Webshell。中提到了通过SSRF漏洞可以获取目标服务器的banner信息,并进一步进行扫描和探测,获取更多的内网资源,从而进行更进一步的攻击。SSRF的问题在于,前端传入的URL被后台使用curl_exec()进行请求,然后将请求的结果返回给前端。除了HTTP/HTTPS协议,curl还支持其他一些协议,如FTP、FTPS、GOPHER、TELNET、DICT、FILE以及LDAP等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SSRF漏洞原理和实验](https://blog.csdn.net/gl620321/article/details/90737148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SSRF漏洞分析与实践笔记](https://blog.csdn.net/lm19770429/article/details/108574028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [10-3ssrf漏洞原理和案例实验演示](https://blog.csdn.net/m0_53008479/article/details/125693390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值