CTFHUB--技能树--SSRF全解(上篇)

首先声明这不是一篇完全讲SSRF原理的文章,我仅仅用我浅薄的知识介绍如何将CTFHUB技能树中与SSRF相关的题目解出,碰到一些有记录价值的题目我会顺便谈一下其中的部分原理。

附上一张图片,以便更好的理解SSRF。(网上找的)

前言

我简单谈一下在已知ssrf漏洞的条件下我们可以利用到的伪协议,

http://:探测内网主机存活、端口开放情况,可以通过访问其它网站确定存活,如百度

gopher://:发送GET或POST请求(需要配合http协议二次url编码上传);攻击内网应用,如FastCGI、Redis

dict://:泄露安装软件版本信息,查看端口,操作内网redis访问等

file://:读取本地文件,如/etc/passwd、/etc/hosts、web网站等等

其实本来还想讲一讲一些Bypass(绕过),但是后面的题目其实也都会遇到,我们在题目中碰到再一道一道的说,便于理解。一起来看看吧!

内网访问

打开GET给了一个url参数,我们用http协议盲测一下可不可以使用 

可以就说明内网主机应该是存活的

题目提示了flag在本地127.0.0.1中,我们直接访问即可

 flag出来了。

伪协议读取文件

这一题的考点主要是希望做题者能掌握file协议读取文件,当然题目的hint也是这么些的哈哈哈。

看提示已经猜到flag在网站目录下,流程不走了,我们直接读取

看看源码,

flag就出来了,简单吧?觉得没意思?别着急,后面会有有意思的。

端口扫描

这个题目主要是要会利用burp的爆破,思路很简单,来看看吧。

 本地端口开了一个在8000-9000,如果纯手注,运气不好要一千次,所以我们利用该dict协议探测端口加上burp爆破,当然也可以用http探测端口,无所谓。

  

 爆出了端口号为8593,我们用http协议访问一下,

POST请求

和上面几题不同,这个题要求 POST传数据,

hint留个印象,我们先用file协议看看源码,

同时,发现目录下还有一个flag.php文件

这个flag.php文件很关键,flag就藏在这里面, 通过代码审计我们需要一个key的值,因为它的全局变量读取的IP需要为127.0.0.1,所以在这里我们需要本地访问。key的值好解决,我们http一访问flag.php就会发现,

key值出了, 那怎么解决在本地的基础上POST传参呢?这里就要用到前面讲到的gopher协议传POST数据,将HTTP文件小改一下伪装成本地127.0.0.1即可。

伪装一下host,再加一个keyPOST传参即可。

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

key=050a8579908e458e32497b1e96b08a28

 需要对该数据进行二次url编码,第一次编码后的数据%0A替换%0D%0A,把替换后的数据进行第二次url编码,为什么要把%0A替换呢?这是因为CRLF回车换行相当于是tcp数据流中的一个断点,所以一次编码忽略了的LF我们要在编码后加上再进行一次编码。

一次编码(%0A已被%0D%0A替换):

POST%20%2Fflag.php%20HTTP%2F1.1%0D%0AHost%3A%20127.0.0.1%3A80%0D%0AContent-Length%3A%2036%0D%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0D%0A%0D%0Akey%3D050a8579908e458e32497b1e96b08a28

二次编码(对第一次替换后的编码再编一次):

POST%2520%252Fflag.php%2520HTTP%252F1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Length%253A%252036%250D%250AContent-Type%253A%2520application%252Fx-www-form-urlencoded%250D%250A%250D%250Akey%253D050a8579908e458e32497b1e96b08a28

最后打入gopher中得到如下,

上传文件

这个是在上一题gopherPOST数据的基础上升了一个档次,但解法其实也就八九不离十吧,都是利用http的请求包二次编码打入gopher而已。

这个题目有点子怪,可能需要稍微要了解一点点HTML标签的东西,因为等会我们要加个按钮。

老办法,能用file协议的话我们读读看源代码,

 还是和上一题的POST传参思路一样,关键点在于这个flag.php文件,它的需要在本地127.0.0.1环境下访问,以及我们需要利用POST/flag.php中上传一个文件,成功后会输出一个环境变量CTFHUB的值,这里面应该放的是flag。

先用http访问一下这个flag.php,看看能不能上传文件

有个文件选择,但是提交按钮到哪去了???所以这里我们要自己写一个提交按钮,前端的东西还是比较容易修改的,把如下标签插入html中即可

<input type="submit" name="errorr0">

 我们随便上传一个文件,抓一手提交文件的包

随便上传什么文件都可,因为代码审计中我们知道只要上传了文件它就会打印CTFHUB全局变量的值。所以上面是我传的文件,后面就和上一题的POST上传一样了,二次URL编码,URL第一次编码后要把%0A替换为%0D%0A,是什么原因上一题也解释了,不多说了,我们直接把二次编码过后的数据打入到gopher协议中。

 flag就出了。

后面几题是关键非常非常的有意思,而且它的绕过什么也很灵性,下篇文章讲。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CTFHub是一个CTF(Capture The Flag)比赛平台,提供了各种安全挑战和漏洞利用的题目。在引用\[1\]中提到了一些与SSRF(Server-Side Request Forgery)相关的内容,包括伪协议读取文件、端口扫描、POST请求上传文件、FastCGI、Redis协议、URL Bypass、数字IP Bypass、302跳转Bypass和DNS重绑定 Bypass。引用\[2\]中提到了CGI和FastCGI协议的运行原理,并介绍了使用Gopherus工具生成攻击FastCGI的payload。引用\[3\]中提到了一个使用Python脚本进行端口扫描的例子。 所以,CTFHub ssrf是指在CTFHub平台上与SSRF相关的内容和挑战。 #### 引用[.reference_title] - *1* [CTFHub—SSRF](https://blog.csdn.net/qq_45927819/article/details/123400074)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [CTFHUB--SSRF详解](https://blog.csdn.net/qq_49422880/article/details/117166929)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CTFHub技能笔记之SSRF:内网访问、伪协议读取文件、端口扫描](https://blog.csdn.net/weixin_48799157/article/details/123886077)[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^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

errorr0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值