参考:https://cloud.tencent.com/developer/article/1561355
http://t.csdn.cn/moXj6
原理
SSRF(Server-Side Request Forgery,服务器端请求伪造)
形成的原因:大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。即以存在 SSRF 漏洞的服务器为跳板取得其他应用服务器的信息。
phpstudy
ssrf(curl)
php 中支持 libcurl 库允许和各种的服务器使用各种类型的协议进行连接和通讯。
libcurl 目前支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。libcurl 同时也支持 HTTPS 认证、HTTP POST、HTTP PUT、 FTP 上传 (这个也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies 和用户名 + 密码的认证。
-
一些终于的函数
函数名 含义 curl_close() 关闭一个 curl 会话 curl_copy_handle() 复制一个 curl 句柄和它的所有选项 curl_errno() 返回最后一次错误号 curl_error() 返回一个保护当前会话最近一次错误的字符串。 curl_escape() 返回转义字符串,对给定的字符串进行 URL 编码。 curl_exec() 执行一个 cURL 会话。 curl_file_create() 创建一个 CURLFile 对象。 curl_getinfo() 获取一个 cURL 连接资源句柄的信息。 curl_init() 初始化一个 cURL 会话。 curl_multi_add_handle() 向 curl 批处理会话中添加单独的 curl 句柄。 curl_multi_close() 关闭一组 cURL 句柄。 curl_multi_exec() 运行当前 cURL 句柄的子连接。 curl_multi_getcontent() 如果设置了 CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流。 curl_multi_info_read() 获取当前解析的 cURL 的相关传输信息。 curl_multi_init() 返回一个新 cURL 批处理句柄。 curl_multi_remove_handle() 移除 curl 批处理句柄资源中的某个句柄资源。 curl_multi_select() 等待所有 cURL 批处理中的活动连接。 curl_multi_setopt() 设置一个批处理 cURL 传输选项。 curl_multi_strerror() 返回描述错误码的字符串文本。 curl_pause() 暂停及恢复连接。 curl_reset() 重置 libcurl 的会话句柄的所有选项。 curl_setopt_array() 为 cURL 传输会话批量设置选项。 curl_setopt() 设置一个 cURL 传输选项。 curl_share_close() 关闭 cURL 共享句柄。 curl_share_init() 初始化 cURL 共享句柄。 curl_share_setopt() 设置一个共享句柄的 cURL 传输选项。 curl_strerror() 返回错误代码的字符串描述。 curl_unescape() 解码 URL 编码后的字符串。 curl_version() 获取 cURL 版本信息。 -
利用
根据多种支持协议进行利用
- file 协议
读取本地文件,利用 FILE 协议读取本地文件
1 | file:///路径 |
- http/https 协议
看到还有博主探测内网主机端口,没太懂,等我学习学习