CSRF原理及体验
# CSRF 原理及体验
CSRF 的全称是 Cross-site request forgery ,即跨站请求伪造。
定义为:攻击者在一定的攻击条件下,利用被攻向服务器发起请求,服务器可以正常解析并返回正确结果。
被攻击者在【网站 A】处于登陆状态
必需要在【网站 A】同浏览器中打开黑客提供的链接
后台身份验证不严格(例如除 cookie 外无其他验证)
那么, CSRF 能做什么事情呢?
发邮件
发消息
财产操作比如转账,或者购买商品
修改密码
删除文章
# CSRF 防御
# CSRF 初体验
我们使用 Low 安全等级
在重置密码这里输入 123456 、 123456
照常理,理应在后台存储新密码成功后,我们下次登录是使用 123456 来登录
在此时我们新起一个虚拟主机,将此段代码弄成一个 html
<html> <!-- CSRF PoC - generated by Burp Suite Professional --> <head> <meta charset="UTF-8" ...
文件包含进阶(二)
# 文件包含进阶(二)
本篇讲述伪协议相关内容
# php 伪协议 php://
php:// — 访问各个输入 / 输出流(I/O streams)
# 说明
PHP 提供了一些杂项输入 / 输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
# php://stdin, php://stdout 和 php://stderr
php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。 数据流引用了复制的文件描述符,所以如果你打开 php://stdin 并在之后关了它, 仅是关闭了复制品,真正被引用的 STDIN 并不受影响。 推荐你简单使用常量 STDIN 、 STDOUT 和 STDERR 来代替手工打开这些封装器。
php://stdin 是只读的, php://stdout 和 php://stderr 是只写的。
# php://input
php://input 是个可以访问请求的原始数据的只 ...
文件包含进阶(一)
# 文件包含漏洞
# LFI-1
查看后台源码
<?php include("../common/header.php"); ?><!-- from https://pentesterlab.com/exercises/php_include_and_post_exploitation/course --><?php hint("will include the arg specified in the GET parameter \"page\""); ?><form action="/LFI-1/index.php" method="GET"> <input type="text" name="page"></form><?phpinclude($_GET["page"]);?>
请求 form 表单, GET 方式,请求 ...
XSS绕过进阶
# XSS 绕过进阶
讲述 XSS 绕过。
# DVWA-Medium
本章节使用 DVWA-Medium 安全难度
# XSS DOM
首先, GET 请求, default 可控,我们不妨尝试:
<script>alert()</script>
没有弹框, URL 被自动换回 default=English
尝试 img 标签
http://127.0.0.1/DVWA/vulnerabilities/xss_d/?default=<img>
img 标签没有被替换回去,能用
http://127.0.0.1/DVWA/vulnerabilities/xss_d/?default=<img src=1 onerror=alert()>
但没有弹框
我们只好查看源码:
发现这里已经变成了 option value 的值,也就是字符串,所以我们需要令其逃逸出来。
逃逸需要考虑两点:
需要在执行完增加 German 选项后执行【原因是如果在中间插入 img 标签会导致无用】
img 标签需要放在 option ...
XSS小实践与绕过
# XSS 实践尝试
来到 127.0.0.1/xss_vuln
# XSS 初体验
是 get 请求,那么我们看一下参数 test 是否可控
参数可控,那么我们可以写入
http://127.0.0.1/xss_vuln/level1.php?name=<script>alert()</script>
查看前台源码:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() { confirm("完成的不错!"); window.location.href="level2.php?keyword=test"; }</script><t ...
密码学基础
# 密码学基础
密码学有三大原则:扩散、混淆、雪崩效应
扩散 就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响.这样可以隐蔽明文的统计特性。
混淆 就是将密文与密钥之间的统计关系变得尽可能复杂,使得对手即使获取了关于密文的一些统计特性,也无法推测密钥。使用复杂的非线性代替变换可以达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。
雪崩效应(Avalanche effect) 指加密算法【尤其是块密码 (分组密码) 和加密散列函数】的一种理想属性。雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化。雪崩效应是指当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的剧变(如,输出中一半的二进制位发生反转)。在高品质的块密码中,无论密钥或明文的任何细微变化都应当引起密文的剧烈改变。
目前只有 RSA 算法不具有雪崩效应。
# 分组密码学原理与应用
# 原理
对称密钥密码体制又称分组密码体制、单密钥密码体制,是 加密密钥 和 解密密钥 相同 的密码体制。
加密算法 、 解密 ...
XSS介绍
# XSS 跨站脚本介绍
跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户(普通用户、第三方用户、网站拥有者)造成影响的 HTML+Js 代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
为了与层叠样式表(Cascading Style Sheets)的缩写 CSS 区分开,跨站脚本攻击通常简写为 XSS 。
# 反射型 XSS
发射型就是将应用程序的运行结果或错误返回到页面上显示。典型的反射型 XSS 是在搜索框里体现。
# 存储型 XSS
存储在服务器、数据库(后台)上,能稳定持久执行的跨站脚本。
# DOM 型 XSS
能够构成 HTML 的 DOM 树的一部分,或者能够影响 DOM 结构的跨站脚本。
# XSS 攻击方式与样例
# XSS 盗用用户信息
# XSS 盗取 Cookie
# XSS 钓鱼攻击
链接上含有攻击代码
# XSS 蠕虫攻击
XSS 蠕虫的破坏力和影响力都是巨大的。XSS 蠕虫主要发生在用户之间存在交互行为的页面中,当 Web 引用程 ...
特殊的文件上传漏洞(二)
# 特殊的文件上传漏洞(二)
本章节讲解特殊的文件上传漏洞(二)。
# 绕过图像二次渲染
Pass-16 为例
直接审计源码:
$is_upload = false;$msg = null;if (isset($_POST['submit'])){ // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径 $filename = $_FILES['upload_file']['name']; $filetype = $_FILES['upload_file']['type']; $tmpname = $_FILES['upload_file']['tmp_name']; $target_path=UPLOAD_PATH.'/'.basename($filename); // 获得上传文件的扩展名 $fileext= substr(strrchr($filename,&qu ...
特殊的文件上传漏洞(一)
# 特殊的文件上传漏洞(一)
我们来讲讲特殊的文件上传漏洞(一)。
# GET-00 截断绕过
Pass-11
抓包,看到在请求的 url 上出现了敏感的字符,save_path=…/upload/
出现这样的字样,我们首先需要想想,这个上传保存路径是否可控?
首先为了上传成功首先得把 backdoor.php 改成
filename="backdoor.jpg"
接下来我们猜想,save_path 可以指定某个路径存储,我们可以让它存在别的地方嘛?
save_path=../
上传成功
确实生成了
那也就是说,控制 save_path 是可行的,但想到如果 save_path 变成一个文件路径的话,应该会报错。果不其然
如果 能有这么一种方法 ,能让 save_path 直接成为最后保存的文件路径该多好,比如 save_path=../upload/11.php
虽然上传的是 backdoor.jpg,但存储的时候直接就成了 php 格式。有办法做到么?有!答案就是 GET-00 截断、
只需要修改:
save_path=../upload/11.php ...
后缀加特殊字符绕过
# 后缀加特殊字符绕过
本次讲解后缀加特殊字符绕过。
# 后缀加点绕过
常规看源码
$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp&qu ...