# SQL 注入
# 分类
SQL 注入根据不同的标准,有不同的分类,从数据类型分类的话,SQL 注入分为数字型和字符型。
根据注入手法分类,可以分为:
可联合查询注入 ----- 联合查询
使用 order by 1
order by 2
.......
判断数据库有多少列数
再使用 [?id=3 union select 1,2,3,....]
报错型注入 ------ 报错查询
# 布尔型注入 ------ 布尔盲注
思路:布尔逻辑注入的思路是闭合 sql 语句,构造 or 和 and 逻辑语句,注释多余的代码。
原始语句:
select fir ,las from user where user_id='' |
SQL 注入语句解析:
select fir ,las from user where user_id=' ' or 1=1 ---' |
说明:
第一个 ' 用于闭合前面的条件
or 1=1 为真的条件
-- 注释后面的所有语句。
# 基于时间延迟注入 ------ 延时注入
# 可多语句查询注入 ----- 堆叠查询
union 语句用于联合前面的 select 查询语句,合并查询更多的信息
一般通过错误和布尔注入确定注入点,便开始通过 union 语句获取有效信息。
猜测数据列数
'union select 1 --' | |
'union select 1,2 --' | |
'union select 1,2,3 --' |
.........
sql 注入语句的解析:
select fir ,las from user where user_id='' union select 1,2 --'' |
获取当前数据库及用户信息
'union select version().database() --' |
'union select table_name,1 formINFORMATION_SCHEMA.tables --' // 查看所有库表名 |
根据注入点分类
get 数据
post 数据
http 数据
cookie 数据
# XSS 漏洞
XSS 漏洞的验证
我们可以利用一段简单的代码,验证和检测漏洞的存在,这样的代码叫做 PoC (Proof of Concept)
PoC 漏洞的验证与检测
EXP 漏洞的完整利用工具
shellcode 利用漏洞时,所执行的代码
payload 攻击载荷
sqlmap 攻击代码的模板
msf shellcode 类似,功能是建立与目前的连接
验证 XSS 漏洞存在的 PoC 如下
<script>alert(/xss/)</script>
<script>confirm('xss')</script>
<script>prompt('xss')</script>
XSS 的分类
XSS 漏洞大概分为三种:反射型 XSS,存储型 XSS,DOM 型 XSS。
反射型 XSS
反射型 XSS 是非持久性,参数型的跨站脚本。反射型 XSS 的 JS 代码在 web 应用的参数中,如搜索框的反射型 XSS。
存储型 XSS
存储型 XSS 是持久性跨站脚本。持久性体现在 XSS 代码不是在某个参数中,而是写进数据库或者文件等可以永久保存数据的介质中。
存储型 XSS 通常发生在留言板等地方。我们在留言板位置留言将恶意代码写进数据库中。
DOM XSS
DOM XSS 比较特殊。owasp 关于 DOM 型的 XSS 的定义是基于 DOM 的 XSS 是一种 XSS 攻击,其中攻击的 payload 由于修改受害者浏览器页面的 DOM 树而执行。其特殊的地方就是 payload 在浏览器本地修改 DOM 树而执行,并不会上传到服务器上。
XSS 的构造
利用 [<>] 构造 HTML 标签和 < script > 标签。
在测试页面提交参数
伪协议
也可以使用 JavaScript:伪协议的方式构造 XSS
[javascript:alert()]
XSS 防御
使用 XSS Filter
XSS Filter 的作用是过滤用户提交的有害信息,从而达到防范 XSS 攻击的效果。
@输入过滤
输入验证
数据消毒
防御 DOM-XSS
避免客户端文档重写,重定向或者其他敏感操作。
# 绕 waf
绕 WAF 可以从两个大的层面来考虑。一是通过 HTTP 协议层面,二是通过 WAF 对数据包的正则匹配层面。
发现主机连接最有用最通用的 Linux 命令。你可以使用”netstat -g” 查询该主机订阅的所有多播组(网络)
netstat -nap | grep port 将会显示使用该端口的应用程序的进程 id
netstat -a or netstat –all 将会显示包括 TCP 和 UDP 的所有连接
netstat –tcp or netstat –t 将会显示 TCP 连接
netstat –udp or netstat –u 将会显示 UDP 连接
netstat -g 将会显示该主机订阅的所有多播网络。
一、iptables 防火墙
1、基本操作
# 查看防火墙状态
service iptables status
# 停止防火墙
service iptables stop
# 启动防火墙
service iptables start
# 重启防火墙
service iptables restart
2、开启 80 端口
vim /etc/sysconfig/iptables
# 加入如下代码
- A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
保存退出后重启防火墙