SSRF漏洞
1.我理解的定义:
攻击者将伪造的服务器请求发给一个用户,用户接受后,攻击者利用该安全漏洞获得该用户的相关信息
2.原理:
3.场景:
(1)分享
(2)转码
(3)翻译
(4)图片加载、下载
(5)图片、文章收藏
(6)未公开的API
4.UPL关键字:
share、wap、url、link、srcsource、target
3g、display、sourceURL、u、imageURL、domain
5.常见端口:
http 80、https 443、telnet 23、ftp 21、ssh 22smtp 25
weblogic 7001、tomcat 8080、jboss 8080、Oracle 1521、sqlserver 1443
6.SSRF可以遵守的协议:
ftp、dict、gopher、file、ladp、ssh、smb、http、https
7.file读取敏感文件
我理解的:攻击者利用任意文件读取漏洞,读取敏感文件。
网上查的:敏感文件包括日志文件,配置文件,网站源代码文件,系统文件等。
SQL注入
网上查的定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。(额。。。。差不多理解了)
1.如何判断是否存在sql注入点
登录框 、查询、订单处理等地方、获取http头功能点
2.注入点查看及常见注入类型及利用方式
(1)报错注入
会出现
MySQL
查询语句报错信息
(2)盲注
看不到报错信息
盲注一般用到的一些函数:
if()
、
ascii()
、
substr()
、
length()
,
exists()
、
concat()
等
(3)bool
盲注
前输入信息为真
and
数字
=
数字
# 1' and 1=1# 1' and 1=2#
多改变值进行测
试 。根据报错返回的东西来确定页面字节长度条件成立或条件不成立
(4)时间盲注
真
=and sleep(5) --+
延迟五秒反应
注:字符型双单引号会把单个单引号产生的报错取消,但字符型仍会报错
也有可能出现单引号过滤,进行转换等可以试试
"`)
等
3.猜解字段
a') order by 1#
从
1
开始猜解到报错 通过双写
'
来猜解闭合
4.查询语句
除了查看数据库 还有会使用到的其他函数
:
1、user()查当前的用户为:user() > select user();
2、 Version();当前 mysql 的版本union select 1,2,version()
3、 Database();当前网站使用的数据库
union select 1,2,database()
4、 User();当前 MySQL 的用户
union select 1,2,user()
5、 system_user(); 系统用户名
6、session_user();连接数据库的用户名
7、current_user;当前用户名
8、load_file();读取本地文件
9、@@datadir:读取数据库路径
10、@@basedir:mysql安装路径
9、length(str) : 返回给定字符串的长度,如 length(“string”)=6
10、substr(string,start,length) : 对于给定字符串string,从start位开始截取,
截取length长度 ,如 substr(“chinese”,3,2)=“in”
substr()、stbstring()、mid() 三个函数的用法、功能均一致
11、concat(username):将查询到的username连在一起,默认用逗号分隔
concat(str1,’’,str2):将字符串str1和str2的数据查询到一起,中间用连接
12、group_concat(username) :将username数据查询在一起,用逗号连接
Columns 表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库
名、表名、字段名为 table_schema、table_name、columns_name
# sqlmap基本语法
**扫描语法**
1、-u 指定目标url2、-m url_list.txt # 使用一个包含多个url的文件进行扫描。
3、-r request.txt # Post提交方式,使用HTTP请求文件,该文件可从BurpSuit中导
出。 (
BurpSuit抓包 > 将请求复制到txt中即可)
4、-p "username,id" # 指定要扫描的参数
5、 - proxy="http: / 127.0.0.1:8087/" # 使用代理去扫描目标
6、 - force-ssl # 使用HTTPS连接进行扫描
7、 - delay="3" # 每次http请求之间的延迟时间,默认无延迟
8、 - timeout="10" # 请求超时时间,浮点数,默认为30秒
9、 - level
```
2:检测cookie中是否含有注入
```
```
3:检测user-agent、referer是否含有注入
```
```
5:检测host是否含有注入
```
10、 - risk 默认1,最高4,等级高容易造成数据被篡改风险
11、 - threads=7 #提高并发线程,默认为1,建议不要超过10,否则影响站点可用性
12、 - dbms="Mysql" # 指定数据库类型,还可以加上版本 Mysql
13、 - os="Windows" # 指定操作系统,还可以是Linux
**查询语法**
1. - users # 查询所有的数据库账号
2. - dbs # 查询所有数据库
3. - schema # 查询源数据库(包含定义数据的数据)如何判断是否存在sql注入点
和数据库有交互的地方
登录框
可以尝试万能密码(如何都能登录成功)
4. -a # 查询当前user、当前数据库、主机名、当前user是否是最大权限管理员、数据库账
号等
5. -D dvwa# 指定数据库
命令:sqlmap -u http: / 172.23.188.13:8083/show.php?id=3 -D dvwa
tables
-T 是查看某个数据表
columns 查看的表中的所有字段
命令:sqlmap -u http: / 172.23.188.13:8083/show.php?id=3 -D dvwa -T
users - columns
dump 查看所有字段的内容
6. - current-user # 查询当前数据库用户
7. - current-db # 查询当前数据库
8. - hostname # 查看服务器的主机名
9. - columns # 查看所有的字段
10. - tables # 查看所有的表
5.waf绕过和sqlmap使用
CSRF漏洞
1.定义:通过伪装成受信任用户请求受信任的网站来跨站请求伪造攻击
2.被攻击的条件:
(1)登录受信任网站A,并在本地生成Cookie
(2)在A没有推出登录的情况下,访问危险网站B
3.看图后,我理解为黑客介入用户及其信任网站之间,伪造出该网站的链接并发给用户,诱导用户访问该链接、泄露甚至修改登录账号和密码等信息
4.CSRF漏洞如何防范
1、验证 HTTP Referer 字段;
2、增加 token并验证
3、在 HTTP 头中自定义属性并验证。
XXE漏洞
1.定义:如果
Web
应用的脚本代码没有限制
XML
引入外部实体,从而导致用户可以插入一个外部实
体,并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
2.XML介绍
XML
指可扩展标记语言,被设计为传输和存储数据,
xml
文档包括
xml
声明、
DTD
文档类型
定义(可选)、文档元素、其焦点是数据的内容,其把数据从
HMTL
分离,是独立于软件和
硬件的信息传输工具。
XML
主要两个用途:
(1).配置文件:层级分明 结构清晰
(2).
在不同的系统之间交换数据
3.DTD
DTD
,
即文档类型定义,可定义合法的
XML
文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD
可被成行地声明于
XML
文档中,也可作为一个外部引用。控制XML
的格式规范。
DTD
作用:
(1)通过
DTD
,每一个
XML
文件均可以携带一个自身相关的描述
(2)验证数据
(3)交换数据
4.XXE的危害
(1).
文件读取(2)
.
内网端口扫描(3)
.
命令执行
5.带外测试:
(1).
是不是
payload
写错了
(2).
是不是存在这个漏洞
(3).
有存在但是无回显
(4).
是否存在这个文件
如果:关闭了回显但是带外测试成功。
6.远程文件窃取:
(1).
读本地服务器上的文件
(2).
远程加载了恶意
DTD
文件
(3).
攻击者的服务器 开启 接收内容并写出文件