首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web安全需要会写代码吗?

Web安全需要会写代码吗?

作者头像
糖果
发布2021-07-19 11:38:28
8450
发布2021-07-19 11:38:28
举报
Web安全中的Web漏洞,多数是因程序接收了“错误”的输入数据,造成了非预期的程序运行出错。这个输入数据是程序的设计者,实现代码时未预料到的数据,造成Web程序出现“漏洞”。

Web漏洞程序,是万千有Bug的Web程序中的一种。

黑盒测试

Web程序漏洞的存在,是建立在Web程序运行的基础之上的。测试人员可以通过尝试给Web程序提供的不同的输入数据, 尝试让Web程序出错,这本质上,相当于对Web程序,进行基于特定数据输入的功能性黑盒测试,故意针对Web程序,提供可能会造成出错的输入数据,让Web程序产生,所谓的“漏洞”现象,并可以复现漏洞,并且利用程序的出错,获得程序所在计算机的更大的用户权限、或者达到其他的目的。

白盒测试

寻找Web程序漏洞的手段,一种是设计异常输入的测试用例,进行黑盒测试, 给出异常程序输入、判断异常输出。除黑盒测试之外。还可以通过Web程序的代码审计,白盒方式对源码进行静态分析检查,针对设计逻辑、代码书写规范等角度,分析源代码可能出现的漏洞问题。

代码审计

一旦我们发现代码有问题,我们可以针对代码的这个安全问题点, 设计让程序出错的各种测试用例,设计用例对应的输入数据,执行这些测试,暴露复现Web程序的漏洞。

Web安全中,最老生常谈漏洞种类:XSS注入漏洞。

此漏洞程序的设计实现者,考虑了用户提供的正常的输入数据,没有更多的过滤不怀好意的用户,对程序提供进行XSS注入数据。

我们平时使用的攻击靶机程序,是人为故意写出各种漏洞的Web程序的集合。我们也来写一个漏洞,用Python代码快速的写出有安全隐患的Web程序,写一段具有XSS漏洞功能Web代码,如下。

class Foo(tornado.web.RequestHandler):
    def get(self):
        a_value = self.get_argument("a_key", "") or "/abc/efg"
        device_type = self.get_argument("device_type", "") or "Andriod"
        if device_type == "Andriod":
            self.write('<iframe src="%s" width="0", height="0"></iframe>' % a_value)
        else:
            self.write("""
            <script type="text/javascript">
            </script>
            """ % a_value)

以上这段代码,核心的逻辑是取得用户输入的参数a_key对应的值a_value,问题出现在a_key的值在正常情况下应该是一个URL,但是如果用户提交的a_key的值,不是正常的URL,附加了另外的字符内容,self.write语句在执行的时候,告诉浏览器去回显执行,这段含有JavaScript注入代码字符串组装成的代码,就会执行用户提供的URL以外的JavaScript子句。Web程序在设计时,又没有判断过滤URL的合法性,造成为了XSS的注入。

<img src="a" onerror ="alert("XSS")">

从自动化检测的角度,可以针对一个Web请求的URL对应每个Parameters参数,注入JavaScript或SQL子句。这是自动化的Web扫描器可以做的。

从软件测试角度来说,Web渗透测试,就是针对有漏洞的Web程序进行的测试,有漏洞的Web程序,本质还是Web程序。Web程序在现实世界由很多种语言实现,Python、PHP、JAVA、JavaScript等等语言实现。从白盒设计、代码审计的角度,能读懂Web代码、实现Web代码、更便于发现和理解Web程序的漏洞。

对于Web安全,只懂代码还是不够的,还需要了解Web体系的架构,Web防火墙、防火墙的绕过攻击与防御等方面的相关知识.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 糖果的实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档