联盟成员专家解读 | 从白盒角度看web漏洞

admin 2023年3月12日20:50:48评论17 views字数 5002阅读16分40秒阅读模式

   简介:

白盒测试顾名思义是检查源代码中的安全缺陷,检查程序源代码中是否存在安全隐患。主要是通过自动化工具以及人工审查的方式对程序源代码逐条进行检查和分析,并对这些源代码缺陷所引发的安全漏洞提供代码修订措施和建议。

本次从白盒角度看web安全漏洞,让大家更能清晰的去认识漏洞是如何产生的,深挖漏洞的原理

1、任意文件删除漏洞:
漏洞原理:
任意文件删除漏洞是指文件删除功能的文件参数没有经过校验或者校验不严格,攻击者可以操纵这个变量配合目录穿越达到删除任意文件的目的。
审计技巧:
1.重点关注unlink和@unlink函数,@unlink()和unlink功能是一样的,唯一不同的是@可以屏蔽错误信息的输出。
2.路径变量是否进行了限制,防止目录穿越,比如”../”。
审计案例:
Lead Management System进行举例,漏洞出现的点分别在pengleadmanage_website.php文件中的第36行、52行、68行。
manage_website.php文件删除是采用@unlink()函数进行操作。 
联盟成员专家解读 | 从白盒角度看web漏洞
@unlink函数唯一的变量参数是POST请求中传递过来的"old_login_image",所以只要确认“old_login_image”可控并且无过滤或者过滤不全就代表可实现任意文件删除。对$_POST['old_login_image']进行追溯,发现manage_website.php第13行使用了extract()函数对POST传递过来的数组进行了全局变量覆盖,且之后未做任何处理,导致可任意文件删除。
联盟成员专家解读 | 从白盒角度看web漏洞
assets目录下创建了一个1.txt文件,分析源码可知,代码会先判断请求包中是否存在"btn_web",接着对$FILES"website_image"判断是否存在,如果存在就执行下一步语句,继续if判断,然后执行@unlink()文件删除操作,路径参数$POST['old_login_image']可控。分析之后那我们就可以知道构造怎样的一个数据包了。
抓取一个POST数据包,$FILES文件上传的数据包格式稍加修改,改请求的数据如下:
联盟成员专家解读 | 从白盒角度看web漏洞
发包前:
联盟成员专家解读 | 从白盒角度看web漏洞
 发包后:
联盟成员专家解读 | 从白盒角度看web漏洞 
成功删除assets目录下的1.txt。

2、未授权漏洞

漏洞原理:
未授权访问是系统对用户权限限制不全,或者无限制,可以让任意用户或者限制访问用户,可以访问到内部敏感信息,导致的信息泄露,以及系统功能的执行。
审计技巧:
1.分析本系统的权限校验技术和逻辑,特别是对于登录验证控制的API,寻找遗漏点。
2.尽量追踪到后端,逐层走读代码判断是否进行授权访问。
审计案例:
造成未授权漏洞的原因有很多,有对权限的认证不全面,还有的仅仅是开发人员的小小疏忽。
1.Lead Management System系统中的check.php就是因为开发人员的一个小小的疏忽才导致了未授权访问的产生。漏洞路径地址如图所示:
联盟成员专家解读 | 从白盒角度看web漏洞
如上图所示if语句判断了SESSION中的userId如果不存在,就跳转到login.php登录页面,但没有终结程序,程序依旧会往下运行,所以一些文件上传、文件删除的操作即使没有PHPSESSINO依旧可以完成。

POST /manage_website.php HTTP/1.1

Host: penglead

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4750.0 Safari/537.36

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

Referer: http://penglead/login.php

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

Cookie: XDEBUG_SESSION=liangwei

Connection: close

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryes1zjoPrRjALQZzv

Content-Length: 370


------WebKitFormBoundaryes1zjoPrRjALQZzv

Content-Disposition: form-data; name="btn_web"


123

------WebKitFormBoundaryes1zjoPrRjALQZzv

Content-Disposition: form-data; name="login_image";filename="123"


123

------WebKitFormBoundaryes1zjoPrRjALQZzv

Content-Disposition: form-data; name="old_login_image"


../../1.txt

------WebKitFormBoundaryes1zjoPrRjALQZzv--






此处删除了Cookie中的PHPSESSID依旧能够达到删除文件的目的。

2.未授权漏洞产生的原因归咎于用户权限认证不严或者缺少权限认证的模块。在对Mayuri K. Online Tours & Travels management system v1.0系统进行全局审计的时候,发现系统好像没有做过任何鉴权操作,怀疑不需要登录就可以访问任何页面和接口,按照之前开发的思路,一般管理员页面都会有个侧边导航,会有权限控制的操作。代码中找到navbar.php文件 。
联盟成员专家解读 | 从白盒角度看web漏洞
发现可能是通过$_SESSION['login_type']进行权限控制,但是全局搜索下来只有这一个地方,明显就有问题,上面的文件上传也验证了这一点,没授权就可以进行文件上传,include 的文件中并未做任何权限管理。
联盟成员专家解读 | 从白盒角度看web漏洞
之后构造访问users页面,查看系统中存在的用户 。
联盟成员专家解读 | 从白盒角度看web漏洞
接着就可以通过修改或添加管理员进入后台系统。

3、重定向漏洞

漏洞原理:
也叫URL跳转漏洞,指服务端对传入的url变量未进行严格限制,导致诱导用户跳转到恶意的网站。
审计技巧:
主要关注可诱导用户进行url跳转的关键函数,比如:header("Location: " . $url);
审计案例:
Lead Management System系统editOrder.php文件中第7行只判断了$_POST是否存在,而第60行使用了header函数进行了url跳转,而url变量是从request请求传递过来的,于是我们就只需要构造POST数据包,修改请求头中的Referer数值便可。
联盟成员专家解读 | 从白盒角度看web漏洞
联盟成员专家解读 | 从白盒角度看web漏洞

POST /php_action/editOrder.php HTTP/1.1

Host: penglead

Content-Length: 306

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

Origin: http://penglead

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

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4750.0 Safari/537.36

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

Referer: http://www.baidu.com

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

Cookie: XDEBUG_SESSION=liangwei; PHPSESSID=96j52ihp3gavto0ho256d3qa6u

Connection: close


orderDate=2022-10-13





成功跳转至www.baidu.com界面。 

4、反射型XSS

漏洞原理:
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
审计技巧:
主要注意三个方面,参数必须传递到后端、参数必须可控、参数必须被浏览器解析。
审计案例:
Lead Management System系统中editbrand.php第40行存在反射型XSS,如图所示
联盟成员专家解读 | 从白盒角度看web漏洞
php_action/editBrand.php?id=<?php echo $_GET['id'];?>  其中id参数是可控的,我们只要将标签闭合就可以实现XSS注入
POC构造:

http://penglead/editbrand.php?id=%22%3E%3Cscript%3Ealert(123456)%3C/script%3E%3C%22





结果如图所示:
联盟成员专家解读 | 从白盒角度看web漏洞
其中这类的反射型漏洞在Lead Management System系统中存在很多,感兴趣的可以试着去挖掘。

5、文件上传漏洞

漏洞原理:
大部分文件上传漏洞的产生是因为Web应用程序未对文件的格式和进行严格过滤,导致用户可上传jsp、php等webshell代码文件,从而被利用。
审计技巧:
文件上传可以搜索move_uploaded_file函数,判断是否有检查后缀和文件大小。
审计案例:
Mayuri K. Online Tours & Travels management system v1.0系统中全局搜索move_uploaded_file函数,项目中只有两处使用了文件上传的功能,且在一个文件中(下图),随机找一处进行分析。
联盟成员专家解读 | 从白盒角度看web漏洞
分析save_settings函数,104-108 行是将post输入的参数进行变量赋值,漏洞点在第 109-114 行,代码未对参数做任何检验和过滤,很大可能存在任意文件上传漏洞。
联盟成员专家解读 | 从白盒角度看web漏洞
接下来分析如何利用该漏洞: 粗略看下文件内容,发现该文件是个封装好的函数调用类(如下图)
联盟成员专家解读 | 从白盒角度看web漏洞
因此需要找到引用过该文件的入口,全局搜索下该文件名,发现只有一个ajax.php文件进行了调用。 
联盟成员专家解读 | 从白盒角度看web漏洞
联盟成员专家解读 | 从白盒角度看web漏洞
全局搜索ajax.php?action=save_settings搜索调用的页面,观察下是否需要认证。看来是不用了,页面顶部只有数据库连接的操作,没有对权限进行限制,那被利用的可能性就非常大了。
联盟成员专家解读 | 从白盒角度看web漏洞
联盟成员专家解读 | 从白盒角度看web漏洞
通过以上分析构造请求数据包进行攻击,因为ajax.phpadmin包内部,所以构造的接口要从/admin开始。 
联盟成员专家解读 | 从白盒角度看web漏洞
成功对数据进行上传,上传之后的文件名是时间戳_上传文件名(通过代码可知,文件路径也是),可以写个脚本进行爆破文件,爆破成功的结果就是页面会显示相应内容,这里就不进行描述了。 

联盟成员专家解读 | 从白盒角度看web漏洞

总结:

很多web漏洞是开发人员对前端传入过来的参数没有进行严格的限制,可能开发者也没有想到这么写会有漏洞产生。虽然通过代码审计的方式能更全面的发现系统存在的安全问题,但同时考验安全从业人员通读代码的能力,另一个层面来讲,代码能力也成为了衡量安全从业人员实力的一个标准,路漫漫其修远兮吾将上下而求索。

仅供参考学习,不构成相对法律属性、关系、效力的确认和保证,如有错漏敬请见谅。

不当之处,欢迎批评指正。


联盟成员单位介绍


 浙江东安检测技术有限公司成立于2009年,致力于网络安全等级保护测评、商用密码应用安全性评估、数据安全评估、代码审计、渗透测试、涉密系统咨询、安全咨询等业务,是国内网络安全领域最专业的第三方测评机构之一,先后为G20(杭州)峰会、厦门金砖会议、世界互联网大会(乌镇)、亚运会等提供技术服务。



联盟成员专家解读 | 从白盒角度看web漏洞

原文始发于微信公众号(杭州数据安全联盟):联盟成员专家解读 | 从白盒角度看web漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月12日20:50:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   联盟成员专家解读 | 从白盒角度看web漏洞http://cn-sec.com/archives/1599370.html

发表评论

匿名网友 填写信息