0x03 Web安全原理剖析

4.3 SQL注入

内容可以看我之前写的 sqli-labs注入, 链接是: http://limbus.top/categories/网络安全/SQL注入/

4.3.2 XFF注入攻击

请求头的X-Forwarfed-For注入。代表了客户端的真实IP。通过修改X-Forwarded-For的值可以伪造客户端IP。修改XFF和其他部位修改一样。

4.3.3 防止SQL注入

使用过滤语句,用正则匹配过滤

使用预编译语句,使用PDO预编译语句,需要注意的是,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。

4.4 XSS基础

内容可以看我之前写的 xss-labs注入, 链接是:http://limbus.top/categories/网络安全/XSS漏洞练习/

4.5 CSRF漏洞

4.5.1 介绍

CSRF( cross-site request forgery 跨站请求伪造) :攻击者利用目标用户的身份,以目标身份的名义执行某些非法操作。常用来制作蠕虫攻击,刷SEO流量等。

4.5.2 利用CSRF流量

以蠕虫攻击为例。

用BurpSuite 抓包,然后利用BP自带的CSRF POC 构造模块生成一段HTML代码,此代码是CSRF 漏洞的测试代码。将这段代码发布到一个网站上,诱导用户访问,当目标用户处于登录状态,并在同一浏览器访问了该网址后,目标用户就会自动发布一篇文章。

后台添加代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
session_start();
if (isset($_GET['login'])){
$con = mysqli_connect("localhost", "root", "123456", "test");
if (mysqli_connect_errno()){
echo "连接失败".mysqli_connect_error();
}
$username = addslashes($_GET['username']);
$password = $_GET['password'];
$result = mysqli_query($con, "select * from users where `username`='".$username."' and `password`='".md5($password)."'");
$row = mysqli_fetch_array($result);
if ($row){
$_SESSION['isadmin'] = 'admin';
exit("登录成功");
}else{
$_SESSION['isadmin'] = 'guest';
exit("登录失败");
}
}else{
$_SESSION['isadmin'] = 'guest';
}
if (isset($_POST['submit']) != 'admin'){
exit("请登录后台");
}
if (isset($_POST['submit'])){
if (isset($_POST['username'])){
$result1 = mysqli_query($con, "insert into user(`username`, `password`) VALUES ('".$_POST['username']."', '".md5($_POST['password'])."')");
exit($_POST['username']."添加成功");
}
}
?>

4.5.3 CSRF 修复建议

1、验证请求的referer的值。

2、在请求中放入攻击者不能为伪造的值,例如随机token等。

4.6 SSRF漏洞

4.6.1 介绍

SSRF(server-side request forgery,服务端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下攻击目标是外网无法访问的内部系统。SSRF的形成大多是由于服务端提供了从其他服务应用获取数据的功能且没有对目标地址做过滤与限制。

4.6.2 利用

例如: https://localhost:9999/ssrf.php?url=https://www.baidu.com

将百度的地址改为内网的地址 192.168.0.1:3306 ,探测内网主机是否存在mysql。

SSRF 修复建议

  1. 限制请求的端口只能为WEB端口,只允许HTTP和HTTPS的请求
  2. 限制不能访问内网的IP
  3. 屏蔽返回的详细信息

4.7 文件上传漏洞

可以看我之前写的文章:http://limbus.top/2023/05/15/Upload-Labs文件上传训练/Upload-Labs文件上传训练/

4.8 暴力破解

修复建议:设置用户和IP登录阈值,超过次数就锁定账号或IP。

4.9 命令执行

4.9.1 介绍

有些可以执行命令的函数,PHP中有system, exec, shell_exec, passthru, popen, proc_popen等函数

命令执行漏洞攻击

支持ping:

windows 系统管道符

1
2
3
4
|   直接执行后面的语句   ping 192.168.1.1 | whoami
|| 前面语句执行出错时执行 ping 4 | whoami
& 前面语句为假则直接执行后面语句,前面语句可真可假
&& 前面语句为假直接出错,不执行后面语句,只能为真 ping 127.0.0.1&&whoami

linux系统管道符

1
2
3
;   顺序执行
| 显示后面语句执行结果
|| & && 和windows 一样

修复建议

  1. 尽量不要使用命令执行函数
  2. 在执行时要做好过滤和检测
  3. 在使用动态函数之前,确保使用的函数是指定的函数之一
  4. 对PHP语言来说,不能完全控制的危险函数最好不要使用

4.10 逻辑漏洞挖掘

4.10.1 介绍

指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能。越权访问又有水平越权和垂直越权。

水平越权:相同级别权限的用户或同一角色中不同的用户之间,可以越权访问、修改或者删除其他用户信息的非法操作。

垂直越权:就是不同级别之间的用户或不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能。

4.11 XXE漏洞

4.11.1 介绍

XML外部实体注入(XML External ENtity),XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。DTD可以是内部声明也可以引用外部DTD,如下所示

内部声明DTD格式:<!DOCTYPE 根元素 [元素声明]>

外部DTD格式: <!DOCTYPE 根元素 SYSTEM"文件名">

在DTD中进行实体声明时,将使用ENTITY关键字来声明。实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体可在内部或外部进行声明。

内部声明实体格式: <!ENTITY 实体名称 "实体的值">

外部 实体格式: <!ENTITY 实体名称 SYSTEM “URL">

4.12 WAF

4.12.1介绍

分类:

1.软件型WAF:安装在服务器上的WAF,可以接触到服务器上的文件,直接检测服务器上是否存在webshell、是否有文件被创建等。

2.硬件型WAF:硬件形式部署到链路中,当串联到链路中时可以拦截流量,在旁路监听模式时只记录攻击不进行拦截。

3.云WAF:一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网站的请求报文优先经过WAF主机,经过WAF过滤后,再发送给实际服务器。

4.网站系统内置的WAF:网站系统中内置的过滤,直接镶嵌再代码中,相对来说自由度高,输入参数强制类型转换,输入参数合法性检测,关键函数执行,对输入的数据进行替换过滤后再继续执行。

4.12.2 WAF 判断

1
2
3
4
5
1.SQLMap 使用SQLMap 可以识别出WAF的种类,但如果安装的WAF没有特征,SQLMap只能识别出类型时Generic。
sqlmap.py -u "http://xxxx.com" --identify-waf --batch

2.手工判断
在网站后面添加select 等语句,触发防护

4.12.3 WAF绕过

1
2
3
4
5
6
7
8
9
1.大小写绕过
2.URL编码、二次编码
3.替换关键字,双写绕过
4.使用注释截断
5.多参数请求拆分 and a=union /*and b=*/select 1,2,3,4
6.HTTP参数污染,同一参数出现多次,不同的中间件解析为不同结果。Inject=union/*inject=*/select/*&inject=*/1&inject=2&inject=3&inject=4
7.用生僻函数代替常用函数,例如在报错注入中使用polygon()函数代替常用的updatexml()函数。SELECT polygon(select * from (select * from (select @@version)f)x);
8.寻找网站源站IP---云WAF
9.注入参数到cookies中,如果代码中使用了$_REQUEST获取参数,会依次从GET/POST/cookies中获取参数,如果WAF只检测了GET/POST,可以从cookies注入。

image-20230428064150743

0x04 Metasploit 技术

可以看我的这篇文章 Metasploit渗透测试指南

是 metasploit 攻防指南的读书笔记,要更全面一些。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023 Limbus
  • Visitors: | Views:

请我喝杯茶吧~

支付宝
微信