22.4.2 OWASP Top 10

2025-06-23 10:34:09 更新

国际开放Web应用安全项目组(OWASP)推出的前10个Web应用漏洞排名

(一)OWASP


漏洞

说明

1

注入漏洞

如SQL注入漏洞、NoSQL注入漏洞、OS注入漏洞和LDAP注入漏洞

2

遭受破坏的认证

Web应用程序存在不限制身份验证尝试、Web会话令牌泄露、Web应用会话超时设置不正确、Web应用口令复杂性不高和允许使用历史口令等

3

敏感数据暴露漏洞

许多Web应用程序和API都无法正确保护敏感数据,例如,财务数据、医疗数据和PII数据

4

XML外部实体引用漏洞(XXE)

利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击

5

受损害的访问控制漏洞

访问其他用户账户、查看敏感文件、修改其他用户数据、更改访问权限等

6

安全配置错误

如目录列表在服务器端未被禁用;应用程序服务器附带了未从产品服务器中删除的具有已知安全漏洞的应用程序样例

7

跨站脚本漏洞(XSS)

当应用程序新网页中包含不受信任的、未经恰当验证或转义数据时,或使用可创建HTML或JavaScript的浏览器API更新现有网页时,就会出现XSS缺陷。

攻击者能够在受害者浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点

8

非安全反序列化漏洞

非安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,也可以用来执行攻击,包括重播攻击、注入攻击和特权升级攻击

9

使用含有已知漏洞的组件

组件(库、框架和其他软件模块)拥有和应用程序相同权限。含有已知漏洞的组件被利用,会造成严重数据丢失或服务器接管。会破坏应用程序防御,造成各种攻击并产生严重影响。

10

非充分的日志记录和监控

不充分日志记录和监控,以及事件响应缺失或无效集成,使攻击者能够进一步攻击系统,保持攻击活动连续性或转向更多系统,以及篡改、提取或销毁数据

(二)注入漏洞

(1)SQL注入

<?php if(isset($_GET['Submit'])){

$id = $_GET['id'];

$getid = "SELECT first_name,last_name FROM users WHERE user_id = '$id"";

$result = mysql_query($getid) or die('<pre>'.mysql_error().'</pre>');

$num = mysql_numrows(result);

$i = 0;

while ($i < $num){

$first = mysql_result($result,$i,"first_name");

$last = mysql_result($result,$i,"last_name");

echo "<pre>";

echo "ID:".$id.'<br>First name:'.$first."<br>Surname:".$last;

echo "</pre>";

$i++;

}

}

?>

(2)NoSQL注入

$m = new Mongo();

$db = $m->cmsdb;

$collection = $db->user;

$js = "function() {

return this.username == ' $username’& this.password == '$password ' ;) ";

$obj = $collection->findOne(array ('$where'=> $js));

if (isset($obj["uid"])){

$logged_in=1;

}else{

$logged_in=0;

}

(3)OS注入漏洞

int main(int argc,char*argv){

char cmd[CMD_MAX] = "/usr/bin/cat";

strcat(cmd,argv[1]);

system(cmd);

}

(4)LDAP注入漏洞

(!(department=Bejing sales)) # 授权查询北京销售部门

(!(department=Shenzhen sales)(department=*)) # 提交参数替换为深圳销售部门

(三)XXE漏洞

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE foo [

<!ELEMENT foo ANY >

<!ENTITY xxe SYSTEM "file:///etc/passwd">]>

<foo>&xxe;</foo>

攻击者将上面实体更改为以下内容来探测服务器的专用网络

<!ENTITY xxe SYSTEM"https://192.168.X.Y/private" >]>