面试准备

writeup

Posted by mr_king on November 26, 2020

面试

[TOC]

sql server

SQL服务器角色

sysadmin 可以在 SQL Server 中执行任何活动。

serveradmin 可以设置服务器范围的配置选项,关闭服务器。

setupadmin 可以管理链接服务器和启动过程。

securityadmin 可以管理登录和CREATE、DATABASE权限,还可以读取错误日志和更改密码。

processadmin 可以管理在 SQL Server 中运行的进程。

dbcreator 可以创建、更改和除去数据库。

diskadmin 可以管理磁盘文件。

bulkadmin 可以执行 BULK INSERT 语句。

数据库角色

db_owner 数据库中有全部权限。

db_accessadmin 可以添加或删除用户 ID。

db_securityadmin 可以管理全部权限、对象所有权、角色和角色成员资格。

db_ddladmin 可以发出ALL DDL,但不能发出GRANT、REVOKE或DENY语句。

db_backupoperator 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。

db_datareader 可以选择数据库内任何用户表中的所有数据。

db_datawriter 可以更改数据库内任何用户表中的所有数据。

db_denydatareader 不能选择数据库内任何用户表中的任何数据。

db_denydatawriter 不能更改数据库内任何用户表中的任何数据。

一般使用sa(登录名)或Windows administration(Windows 集成验证登陆方式)登陆,这种登录名具有最高的服务器角色,可对服务器进行任何操作,登录名具有的用户名是dbo(系统级),具有对所有用户创建的数据库中的数据进行一切操作权限。

用户 db_owner、sysadmin、public、serveradmin 、secadmin、sa

Mysql

库名 information_schema.schemata

表名 information_schenma.tables

表字段名 information_schenam.columns

版本 version()或者 @@version

当前数据库 database()

报错注入常用函数

floor

?id=1 OR (SELECT 8627 FROM(SELECT COUNT(*),CONCAT(0x70307e,(SELECT user()),0x7e7030,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)

ExtractValue(有长度限制,最长32位)

?id=1 and extractvalue(1, concat(0x7e, (select @@version),0x7e))

UpdateXml(有长度限制,最长32位)

?id=1 and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

NAME_CONST(适用于低版本,不太好用)

?id=261 and 1=(select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)

Error based Double Query Injection

?id=1 or 1 group by concat_ws(0x7e,version(),floor(rand(0)*2)) having min(0) or 1

exp(5.5.5以上)

id=1 and (select exp(~(select * from(select user())x)))

polygon

mysql> select * from users where username=""and polygon (password);
ERROR 1367 (22007): Illegal non geometric '`security`.`users`.`password`' value found during parsing

时间盲注常用函数

sleep()

benchmark()

order by后注入

报错注入

1 and extractvalue(1, concat(0x7e, (select @@version),0x7e))

bool盲注

order by IF((bool),1,(select 1 union select 2))

延时盲注

不推荐,因为每条数据都会执行延时,能用其他方法就不使用延时。
order by IF(1,sleep(3),0);

两条数据延时了6秒

redis

通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数 据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT) 等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。 Redis的优点 性能极高 – Redis能支持超过 100K+ 每秒的读写频率。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis的缺点 是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 总结: Redis受限于特定的场景,专注于特定的领域之下,速度相当之快,目前还未找到能替代使用产品。

Redis 客户端的基本语法为:

$ redis-cli

如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

语法

$ redis-cli -h host -p port -a password

有时候会有中文乱码

要在 redis-cli 后面加上 –raw

redis-cli --raw

java命令执行

  • Runtime().exec() T(java.lang.Runtime).getRuntime().exec(“calc”)
  • Proccess.builder() new java.lang.ProcessBuilder(new java.lang.String(new byte[]{99,97,108,99})).start()

  • java.lang.ProcessImpl
  • javax.script.ScriptEngineManager

本地文件包含

1.包含上传文件getshell

2.包含日志文件getshell

3.包含/tmp文件(需爆破文件名)

4.利用PHP伪协议getshell

php伪协议

file://  访问本地文件系统
http://  访问 HTTP(s) 网址
ftp://  访问 FTP(s) URLs
php://  访问各个输入/输出流I/O streams
zlib://  压缩流
data://  数据RFC 2397
glob://  查找匹配的文件路径模式
phar://  PHP 归档
ssh2://  Secure Shell 2
rar://  RAR
ogg://  音频流
expect://  处理交互式的流

敏感

allow_url_fopen :off/on
allow_url_include:off/on

策略 与 CSP

所谓同源是指:域名、协议、端口相同。

内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。

domain、path、expires过期时间、size 浏览器对cookies数量的限制、httponly则这个Cookie无法被JavaScript读取、secure 属性用来指定Cookie只能在加密协议HTTPS下发送到服务器

CDN

CDN的关键技术主要有内容存储和分发技术

​ CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术

  • 多地ping

  • nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN

  • dns 历史记录
  • securitytrails 平台
  • 网站探针等
  • 服务器主动连接我们(ssrf xss 邮件)
  • web应用debug报错(laravel tp )
  • 敏感信息泄漏

源码泄露

  • git源码泄露
  • svn源码泄露
  • hg源码泄漏
  • CVS泄露
  • Bazaar/bzr泄露
  • 网站备份压缩文件
  • WEB-INF/web.xml 泄露
  • DS_Store 文件泄露
  • SWP 文件泄露
  • GitHub源码泄漏
  • index.php~
  • .index.php.swp

状态码

200

201 created

301 永久移动

302 暂时重定向 搜索引擎会抓取新的内容而保留旧的地址

400

401 未授权

403

404

405 method not allowed

500 服务器内部错误

502 错误网关

503 服务器不可用

主动扫描 与 被动扫描

漏洞扫描器有被动或主动两种形式,不管哪种设备都有其弊端和好处。被动扫描器通过嗅探不同网络系统之间传输的数据通信来扫描设备,查找任何异常的通信。这样做的好处是对网络的运营没有影响,因而必要的话可以全天候工作,但可能会遗漏网络中某些系统(特别是不常联机的设备)中的漏洞。  

主动的扫描器探测系统的方式与黑客的探测方式如出一辙,通过向客户的网络系统发送通信,进而查找有响应的设备中的漏洞。其工作方式更加积极主动,在某些方面比起被动扫描器更加彻底,但是却有可能引起服务中断或服务器崩溃

中间件漏洞

IIS中间件漏洞

1.IIS 6.0 解析漏洞

1.利用特殊符号“;”

这个6.0版本的IIS在处理特殊符号“;”会出现逻辑错误,比如文件名为 1.asp;.jpg ,但是会被当做asp文件执行

(1)上传一个名为ss.asp;.jpg的图片,内容为asp的代码

(2)访问上传的文件

2.文件夹命名为xxx.asp

访问xxx.asp这个文件夹下的一个含有asp代码的图片

发现asp代码被正常解析了,因为IIS6.0如果有一个目录以“xxx.asp”这种格式命名,那么该目录下的所有类型文件都会被当做asp文件来解析

IIS 7.5 解析漏洞

1、漏洞原理及利用

当服务器开启了”cgi.fix_pathinfo”功能,就会对路径进行修剪。

例如:上传一个内容为的文件,后缀为jpg,正常情况下这个文件无法被php解析

但是如果我们在访问这个文件的时候在后缀后面+/.php,服务器发现后缀是.php,便交给php处理

php发现这个路径无法访问,就会进行修剪,会去掉/.php,最终会用php去解析test.jpg文件

Apache

Apache换行解析漏洞

0x0a(换行)

1.0x0a

.php

Apache多后缀解析漏洞

影响版本:使用module模式与php结合的所有版本 apache存在未知扩展名解析漏洞,使用fastcig模式与php结合的所有版本apache不存在此漏洞。

nginx-目录遍历漏洞

我们首先需要将nginx的配置文件nginx.conf中autoindex off;改为on

目录穿越

漏洞简介: Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞 配置不当: 在如下配置中设置目录别名时/test配置为/home/的别名,那么当我们访问/test../时,nginx实际处理的路径时/home/../,从而实现了穿越目录

修复方法:Nginx配置文件中的/test改为/test/(闭合)

Tomcat

远程代码执行

漏洞简介及成因

Tomcat启用了 HTTP PUT 请求方法,可通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,造成任意代码执行

后台弱口令war包部署

漏洞简介及成因

Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。

SSRF(服务端请求伪造)

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞

goper协议:流量转发

file协议:读文件

dict协议: