面试题——WEB相关(一)


前言

      本文涉及的有:Redis未授权访问漏洞如何入侵利用,SSRF漏洞原理、利用方式及修复方案?Java和PHP的SSRF区别,CORS原理和检测,XSS持久化如何实现,MySQL 提权有几种方式,简单说说。


一、Redis未授权访问漏洞如何入侵利用

1.redis漏洞产生原因

     1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网。
     2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。
     3)root 身份运行redis。

2.redis利用方法

     1)能够回连且权限够的话,写crontab利用计划任务执行命令反弹shell。
     2)开启22端口且权限够大的情况下,通过写公钥到服务器获得系统权限。
     3)知道物理路径且web目录有写权限写webshell。
     4)redis 4.x之后,主从复制getshell。

二、SSRF漏洞原理、利用方式及修复方案?Java和PHP的SSRF区别?

1.SSRF漏洞原理

     原理:利用一个可以发起内网的网络请求的服务,当作跳板来攻击其他服务。

2.SSRF漏洞点

     远程图片加载、图片或文章收藏功能、URL分享、通过URL在线翻译、转码等功能点处。

3.SSRF漏洞利用

     1)CURL支持协议。
     2)利用file协议读取文件。
     3)利用dict协议查看端口开放。
     4)利用gopher协议反弹shell。

4.SSRF漏洞利用绕过

     1)使用@:http://[email protected] = 10.10.10.10。
     2)IP地址转换成十进制、八进制:127.0.0.1 = 2130706433。
     3)使用短地址:http://10.10.116.11 = http://t.cn/RwbLKDx。
     4)端口绕过:ip后面加一个端口。
     5)xip.io:10.0.0.1.xip.io = 10.0.0.1。
     6)利用DNS解析
     7)利用句号(127。0。0。1)
     8)利用[::](http://[::]:80/)
     9)利用短地址(http://dwz.cn/11SMa)
     10)协议(Dict://、SFTP://、TFTP://、LDAP://、Gopher://)

5.SSRF漏洞修复方式

     1)过滤返回信息,验证远程服务器对请求的响应。
     2)统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
     3)限制请求的端口为http常用的端口,比如,80,443,8080,8090。
     4)黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
     5)禁用不需要的协议。仅允许http和https请求。
     6)使用正则对参数进行效验,防止畸形请求绕过黑名单。
     7)禁止30x跳转。

6.Java和PHP的SSRF区别

PHP支持的协议 Java支持的协议
file:// — Accessing local filesystem file
http:// — Accessing HTTP(s) URLs ftp
ftp:// — Accessing FTP(s) URLs gopher
php:// — Accessing various I/O streams http
zlib:// — Compression Streams https
data:// — Data (RFC 2397) jar
glob:// — Find pathnames matching pattern mailto
phar:// — PHP Archive ·netdoc
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — Audio streams
expect:// — Process Interaction Streams

三、CORS原理和检测

1.CORS漏洞原理

     CORS全称是"跨域资源共享"(Cross-origin resource sharing),Origin源未严格,从而造成跨域问题,允许浏览器向跨源服务器,发出XMLHttpRequest请求

2.CORS检测

     当Origin为*的时候,使用curl测试CORS。

	curl -HOrigin: https://evil.com” -I

四、XSS持久化如何实现

     XSS持久化依赖于储存型XSS漏洞,当发现有存储型XSS漏洞时,可以尝试插入一段JS代码用于窃取cookie,配合hook可以实现更多操作。比如开启BeEF工具利用其中hook.js实现控制目标主机,HOOK持续的时间为关闭测试页面为止。在此期间我们可以尝试获取浏览器的信息,利用浏览器内网扫描等操作。
在这里插入图片描述

五、MySQL 提权有几种方式,简单说说。

1.MySQL 提权的几种方式

     1)into oufile 写 shell。
     2)全局日志文件写 shell。
     3)UDF提权。
     4)MOF提权。
     5)启动项提权
     6)CVE-2016-6663

2.into oufile 写 shell

     1)前提条件:

  • 知道当前网站的绝对路径并且有写入权限
  • 数据库当前用户为root权限
  • load_file () 开启 即 secure_file_priv 无限制
  • PHP的magic_quotes_gpc为 off 状态,因为 magic_quotes_gpc:开启时,会对 ’
    单引号进行转义,使其变成“\”反斜杠,而写shell语句需要用到单引号。

     2)番外:

  • 在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
  • 在 MySQL 5.5 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件

3.全局日志文件写 shell

     1)前提条件:

  • Web 文件夹权限允许写入
  • Windows 系统下
  • 高权限运行 MySQL 或者 Apache

     2)番外:

  • MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell。
  • general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。
  • 可以尝试自定义日志文件,并向日志文件里面写入内容的话,那么就可以成功 getshell。

     使用以下相关命令查看。

	# 查看当前配置
	SHOW VARIABLES LIKE 'general%';
	# 更改日志文件位置
	set global general_log = "ON";
	set global general_log_file='/var/www/html/info.php';

4.UDF提权

     1)udf提权就是利用MySQL数据库的扩展功能,在MySQL中添加一个自定义函数,这个新添加的函数可以在SQL语句中调用,就像调用默认自带的函数一样方便。Linux环境下的UDF提权大概率仅限于靶场环境中,原因:在Linux严格的系统权限下,mysql用户或web用户无plugin目录的写入权限。
     2)利用过程:先找到动态链接库文件,在sqlmap 和 Metasploit 工具里面都自带了对应系统的动态链接库文件。sqlmap 中自带这些动态链接库为了防止被误杀都经过编码处理过,所以需要cloak.py 文件解码来使用,然后找到MySQL的插件目录,把动态链接库传入到插件目录下,利用MySQL命令创建一个自定义函数然后通过这个自定义函数就可以执行命令了。
     3)如果目标 MySQL 不允许外连,但是可以上传 PHP 脚本,这个时候可以使用 Navicat 自带的 tunnel 隧道脚本上传到目标网站上,然后在设置HTTP通道。

5.MOF提权

     基本上在 Windows Server 2003 的环境下才可以成功,太少见了。

6.启动项提权

     这种提权也常见于 Windows 环境下,当 Windows 的启动项可以被 MySQL 写入的时候可以使用 MySQL 将自定义脚本导入到启动项中,这个脚本会在用户登录、开机、关机的时候自动运行。

7.CVE-2016-6663提权

     CVE-2016-6663提权就是将低权限的 www-data 权限提升为 mysql 权限。

猜你喜欢

转载自blog.csdn.net/qq_44029310/article/details/126745645