攻防演练面试主要内容 – 作者:孤风maxq

Sql注入类型

联合注入

报错注入

布尔注入

延时注入

二次注入

堆叠注入

头部注入

宽字节注入

绕过方法

双写关键字,替换关键字,多参数混淆,垃圾内容,大小写,使用注释符,使用特殊字符,编码,

防御方法

过滤关键字,空格注释符等,

使用转义,

设置数据库权限,使其只能查询,不能更新和写入,

.限制查询长度

限制查询类型

Xss,csrf ssrf  xxe

Xss 跨站脚本攻击,利用带有恶意代码的链接,或是嵌入恶意代码的web站点获取用户信息

(1)窃取管理员帐号或Cookie。伪造登录修改信息。

(2)冒充用户身份进行各种操作。

(3)网站挂马。

(4)发送广告或者垃圾信息。

防御

使用http-only ,过滤掉关键字,使用htmlspecechar进行html实体化,使用相同编码

设置黑白名单

Csrf 跨站请求伪造 利用用户信息如cookie进行伪造请求,修改信息

构造蠕虫。

验证 HTTP Referer 字段 ,设置token,设置验证码登录 在 HTTP 头中自定义属性并验证

Ssrf 服务端请求伪造

由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。

端口扫描 内网Web 应用指纹识别 攻击内网Web 应用 读取本地文件

防御

限制协议,限制端口,过滤信息,设置host白名单,统一错误信息

XXE(外部实体注入)利用解析xml时允许引用外部实体,来构造恶意内容。file协议读取文件,利用http协议探测内网

危害 任意文件读取、系统命令执行、内网端口探测、攻击内网网站。

防御方法:禁用外部实体(PHP:可以将libxml_disable_entity_loader设置为TRUE来禁用外部实体)

验证逻辑漏洞

验证码回传

密码爆破

Cookie验证

订单金额任意修改

未进行登陆凭证验证

越权

找回密码存在设计缺陷

文件包含

Include

Require

Include_once

Require_once

文件上传

绕过方法

点,空格,大小写,双写,::$data,点空格点,.access,条件竞争,图片马,改后缀如php5,解析漏洞,改文件类型

1、空格

2、.

3、.空格.

4、大小写

5、双写

6、::$DATA

7、更改文件类型:Content-Type

8、更改文件后缀: 比如php5 ,需要apache能解析

9、解析漏洞+.htaccess

10、图片马+文件包含漏洞/解析漏洞

11、条件竞争

防御

设置白名单,限制文件类型

二次渲染

随机文件名和路径

设置目录执行权限

使用单独的文件服务器

应急响应

1.准备相关的工具,查后门等工具

2.初步判断事件类型,事件等级。

3.抑制范围,隔离使爱害面不继续扩大

4.查找原因,封堵攻击源。

5.业务恢复正常水平.

6.总结,报告,并修复、监控

具体做法

查用户

查历史命令

查端口

查进程

查服务

查自启项

查定时任务

查文件目录

查日志

使用工具扫描病毒、webshell 等

Tcp三次链接

第一次 客户端发送请求,syn=1 seq=x

第二次 服务端返回syn=1 ACK=1 ack=1+x seq=y

第三次 客户端返回ACk=1 seq=x+1 ack=y+1

Dnslog

命令执行

Sql盲注

Xss跨站(访问预设地址,留下记录)

Mysql语句

删除

删库

drop database 库名

删表

drop table  表名

删数据

delete from 表名 where 限制

增加

增加数据库

create database user_id

增加数据表

create table if not exists t4(

id auto_increatment

) charset =utf-8

增加数据

insert into 表名()value()

删除

修改

修改表名

alter table  表名 rename to 新表名

修改表列的定义及长度

alter table t3 modify column username varchar(60) not null;

alter table t3 change column username user varchar(100) not null;

修改数据

update  表名 set  列名=“”,  where 条件

查询

show databases

show tables

show create database 库名;

show variables like ‘%ssd%’

select 列名 from 表名

降序排序 DESC

格式:select 列名 from 表名 order by 列名1  DESC

用户操作

增加用户

create user ‘myuser’@’localhost’ identified by ‘mypassword’

增加权限

grant all privileges on 数据库名.* to ‘用户’@’localhost’ identified by ‘密码’

远程登录

grant all privilege on *.* to ‘root’@’%’ identified by ‘密码’

Linux 基本命令

查询

Cat

Tac

More

Less

Tail

Head

Find /etc -name passwd

Grep mysql /root/test.log  查询文本中的字

权限

Chmod -R 777 /etc

-R 递归

Chown 改用户  chown 用户 文件

Chgrp

Whoami

Uname -ar 查看内核版本

ps -aux:查看进程

Netstat -pultn  查看端口

防火墙

Service iptables status

Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。用户登录时抓包,重放后看到有rememberme就有可能存在漏洞

反弹shell

写入文件

Fastjson

对于 fastjson版本 <= 1.2.24的情况,利用思路主要有2种

通过触发点JSON.parseObject()这个函数,将json中的类设置成com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl并通过特意构造达到命令执行

通过JNDI注入

利用com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl

TemplatesImpl类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数。

json = ‘{“@type”:”com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl”,”_bytecodes”:[“‘.base64_encode($bytes).'”],”_name”:”a.b”,”_tfactory”:{ },”_outputProperties”:{ },”_version”:”1.0″,”allowedProtocols”:”all”}’;

Php反序列化

Serialize,unserialize 序列化与反序列化。因为程序对输入数据处理不当导致的。

. 魔术方法

__construct: 在创建对象时候初始化对象,一般用于对变量赋初值。
__destruct: 和构造函数相反,当对象所在函数调用完毕后执行。
__toString:当对象被当做一个字符串使用时调用。
__sleep:序列化对象之前就调用此方法(其返回需要一个数组)
__wakeup:反序列化恢复对象之前调用该方法
__call:当调用对象中不存在的方法会自动调用该方法。
__get:在调用私有属性的时候会自动执行
__isset()在不可访问的属性上调用isset()或empty()触发
__unset()在不可访问的属性上使用unset()时触发

1.__construct()
类一执行就开始调用,其作用是拿来初始化一些值。
2.__desctruct()
类执行完毕以后调用,其最主要的作用是拿来做垃圾回收机制。
3.__get()
方法用于获取私有属性值。(在设置私有属性的时候将会自动调用)
4.__set()
在对象访问私有成员的时候自动被调用,达到了给你看,但是不能给你修改的效果!(在对象访问一个私有的成员的时候就会自动的调用该魔术方法
5.__isset()
方法用于检测私有属性值是否被设定。(当外部使用isset读类内部进行检测对象是否有具有某个私有成员的时候就会被自动调用!)
6.__unset()
方法用于删除私有属性。(在外部调用类内部的私有成员的时候就会自动的调用__unset魔术方法)
7.__toString()
在对象当做字符串的时候会被调用。
8.__sleep()
在对象被序列化的过程中自动调用。sleep要加数组  
9.___call() 当所调用的成员方法不存在(或者没有权限)该类时调用,用于对错误后做一些操作或者提示信息

10.__wakeup()函数 该魔术方法在反序列化的时候自动调用,为反序列化生成的对象做一些初始化操作

Typecho 反序列化

install.php安装文件unserialze中Cookie或者POST的数据中寻找到’__typecho_config’字段

中Tostring()和_Get()属性。Call_user_func回调函数。

Thinkphp5命令执行

strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签,并不能对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法

Mysql提权

udf提权,mof提权

Udf提权

  1. windows(win2000,xp,win2003);
  2. 有mysql某个账号增删改查权限,

3.有root账号密码导出udf(5.1以上要将udf.dll放到lib\plugin下才能自定义函数  查地址 select @@basedir show variables like ‘%plugins%’)如果目录不存在就在mysql安装目录创建lib\pulgin

语句 create function cmdshell returns string soname ‘udf.dll’;

Select cmdshell (‘net user arsch arsch/add’);添加用户

Mof提权

将我们特定的脚本命令导入到nullevt.mof 文件,因为nullevt文件每分钟都会执行

一次。

select load_file(“C:/php/APMServ5.2.6/www/htdocs/1.mof”) into dumpfile “c:/windows/system32/wbem/mof/nullevt.mof”

Iis安全加固

  1. 删除iis默认站点
  2. 禁用不必要的web站点
  3. 多个web时设置不同的账户
  4. 文件权限设置 有执行的不要有写入,有写入的不要有执行
  5. 只保留必须的应用扩展
  6. 修改iis日志,开启改文件地址,改文件访问权限(人)
  7. 防止信息泄露,如改报错,禁止发送错误
  8. 自定义banner信息,改http头等

溯源

Web源码

用d盾查杀一下后门

查看文件,可以以时间查看最近修改的文件

Web日志

Assces.log

Error.log

查其中的ip,

以文件名,或者时间进行筛选一下

系统日志

主要查log文件

  • who id 等查看一下用户信息

Lastlog 查一下用户登录时间

/var/log/cron 与定时任务相关的日志信息

/var/log/message 系统启动后的信息和错误日志

查一下cron 定时任务,message看一下

系统信息分析

查一下hstroy

查一下passwd

去init.d看一下开机自启项

查ssh主要是看公钥,注意redis

查看进程

看一下top,ps -aux 看以一下段口netstat -pulnt

内网

安全设备是防火墙 思科的 配置端口,设置进出的流量内容。

来源:freebuf.com 2021-03-09 15:40:24 by: 孤风maxq

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论