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提权
- windows(win2000,xp,win2003);
- 有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安全加固
- 删除iis默认站点
- 禁用不必要的web站点
- 多个web时设置不同的账户
- 文件权限设置 有执行的不要有写入,有写入的不要有执行
- 只保留必须的应用扩展
- 修改iis日志,开启改文件地址,改文件访问权限(人)
- 防止信息泄露,如改报错,禁止发送错误
- 自定义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
请登录后发表评论
注册