0x00:漏洞原理
SSRF(Server-Side Request Forgery)也属于应用层上的一个漏洞类型,用一个最简单的例子来理解这个漏洞:比如一个添加图文的功能,填入标题内容和封面图然后提交在网站前台显示,对于这个功能的图片它除了可以让你上传以外,还支持填入远程图片地址,如果你填入了远程的图片地址,则该网站会加载远程图过来进行显示,而如果程序写法不严谨或者过滤不严格,则加载图片地址的这个功能可能就可以包含进行一些恶意的脚本文件,或者你输入内网的 ip 或者一些系统的文件都会被解析执行,这个我们一般叫它 SSRF 即服务端请求伪造。
而一般我们是无法请求到系统上的文件的,内网的 ip 我们也是无法访问的,有了 SSRF 后,我们提交的加载连接是有服务器进行加载解析,实际上相当于我们以存在 SSRF 这个服务器为跳板进行的一些加载操作,我们在附一张图加深理解。
我们知道了 SSRF 的原理后,自然就能想到其危害点有哪些,比如说可以 1,加载外部的恶意木马文件执行,或者 2,加载内部的敏感文件程序自身的敏感文件,3,来访问内网进行内网端口的扫描、获取内网设备信息、枚举内网服务等。
0x01:漏洞危害
了解了漏洞的形成原因和原理后,我们通过简单的示例来进行一些危害的验证,这里我直接拿一个别人写的程序做下演示,或者也可以下载个 bwapp 练习也行,代码很简单,只有两个文件,一个是提交内容的 html 页面,另外一个是接受提交内容并加载的 php 文件,首先 html 文件内容如下:
<html>
<head>
<style> div.main { margin-left:auto; margin-right:auto; width:50%; } body { background-color: #f5f5f0; }</style>
<title>
Awesome Script!
</title>
</head>
<body>
<div class="main">
<h1>Welcome to the Awesome Script</h1>
<p>Here you will be able to load any page you want. You won't have to worry about revealing your IP anymore! We use the cURL library in order to perform the HTTP requests. Have fun!</p>
<br>
<form method="GET" action="curl.php">
<input type="text" value="Website to load..." name="