精华内容
参与话题
问答
  • 代码审计

    千次阅读 多人点赞 2020-10-04 06:44:55
    定向功能分析法 1.程序初始安装 2.站点信息泄露 3.文件上传 4.文件管理 5.登录认证 6.数据库备份恢复 注册一个用户,用户名是个一句话木马,然后将数据库导出...8.验证码 ...或者找到cookie的生成规律,然后cookie登录 ......

    什么是代码审计

    代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能。

    代码审计的三种方法

    1.通读全文法

    通读全文:顾名思义,就是通过对整个程序的代码进行阅读,从而发现问题,这种方法是最全面的,但也是最麻烦的,最容易出错。
    如果是大型程序源码,代码量非常大,相当耗费时间,这种方法一般是企业对自己自身产品进行审计,当然,这种方法非常有用,通过阅读得到整个应用的业务逻辑,可以挖掘到更多具有价值的漏洞,对于小型程序源码,也可以使用这种方法进行审计。

    优点 了解程序架构与业务逻辑。挖掘更高质量漏洞
    缺点 耗费时间较长

    2.函数回溯法

    大多数的漏洞是因为函数的使用不当造成的,只要找到这些使用不当的函数,就可以快速的发现想要挖掘的漏洞。
    这种方法相对比较快速和高效,也可以使用工具进行审计,工具的原理是利用正则表达式,匹配一些危险的函数、敏感关键字,然后得到这些函数,就可以分析阅读上下文,追踪源头

    优点 可快速挖掘漏洞
    缺点 无法覆盖逻辑漏洞

    3.定向功能分析法

    该方法主要是根据程序的业务逻辑和业务功能进行审计的,首先大概浏览网站的页面,比如有上传功能,有浏览功能,可能猜测到这个程序有上传漏洞、XSS漏洞等,可以大概的推测它有哪些漏洞,然后再针对猜测的结果,进行定向分析。

    功能:
    输入、输出
    安全功能
    程序异常处理
    程序初始安装
    站点信息泄漏
    文件上传
    文件管理
    登陆认证
    数据库备份恢复
    找回密码
    验证码
    ……

    分析过程

    • 首先,不管是什么程序都要把握大局,浏览源码文件夹,了解它的大致结构

    • 其次,根据定向功能发对每一项功能进行审计,可以根据网站的架构使用不同的方法进行分析,三者结合起来效果最佳

    • 最后,可以将敏感函数回溯,发现漏洞的起源地

    工具

    seay

    主要代码审计方法

    1.通读全文法

    (1)网站结构
    浏览源码文件夹,了解该程序的大致目录
    (2)入口文件
    index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构,运行流程,包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑。
    (3)配置文件
    一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号、则可能存在双引号解析代码执行的问题。
    (4)过滤功能
    通过详读安全过滤文件等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

    2.函数回溯法

    跟踪用户输入数据和敏感函数参数回溯:

    1.跟踪用户的输入数据

    判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑
    可以是一个函数,或者是条小小的条件判断语句。

    2.敏感函数参数回溯

    根据敏感函数,逆向追踪参数传递的过程。这个方法是最高效,最常用的方法。大多数漏洞的产生是因为函数的使用不当导致的,只要找到这些函数,就能够快速挖掘想要的漏洞。

    搜索时要注意是否为整个单词,以及小写敏感这些设置

    密码硬编码、密码明文存储:    password 、pass、jdbc
    XSS:                      getParamter、<%=、param.
    SQL 注入:                  Select、Dao 、from 、delete 、update、insert
    任意文件下载:               download 、fileName 、filePath、write、getFile、getWriter
    任意文件删除:               Delete、deleteFile、fileName 、filePath
    文件上传:                  Upload、write、fileName 、filePath
    XML 注入:                 DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser
    反序列化漏洞:              serialize unserialize
    代码执行:                  eval、system、exec
    

    函数回溯发审计常用漏洞

    Xss 审计

    1.反射xss一般seay可以直接搜索str_replace关键字,也可以通过手工搜索来寻找

    2.存储型 XSS全局搜索数据库的插入语句(关键词:insert,save,update),然后找到该插入语句所属的方法名如 (insertUser()) , 然后全局搜索该方法在哪里被调用, 一层层的跟踪

    SQL 注入

    一般直接搜索 select、update、delete、insert 关键词就会有收获
    如果 sql 语句中有出现+append$()# 等字眼,如果没有配置 SQL 过滤文件,则判断存在 SQL 注入漏洞

    任意文件下载

    审计方法:全局搜索以下关键词 fileNamefilePathgetFilegetWriterdownload
    查看下载文件或路径是否可控

    文件上传

    文件上传可以搜索以下关键词:(需注意有没有配置文件上传白名单)
    uploadwritefileNamefilePath
    在查看时,主要判断是否有检查后缀名,同时要查看配置文件是否有设置白名单或者黑名单

    文件包含

    直接搜索includerequireinclude_oncerequire_once

    ssrf

    搜索函数跟踪请求file_get_contentsfsockopencurl_exec

    CSRF

    审计方法:通过查看配置文件有没有配置 csrf 全局过滤器,如果没有则重点看每个操作前有没有添加 token 的防护机制

    3.定向功能分析法

    1.程序初始安装

    找到install.php或者其他相关文件,看程序能不能重装

    2.站点信息泄露

    3.文件上传

    4.文件管理

    5.登录认证

    无密码登录,万能账号,万能密码登录

    6.数据库备份恢复

    注册一个用户,用户名是个一句话木马,然后将数据库导出备份,用户名

    7.找回密码

    8.验证码

    找到加密的密码,偏移量,生成同样的token。或者找到cookie的生成规律,然后cookie登录

    展开全文
  • 代码审计:企业级Web代码安全架构

    千次下载 热门讨论 2016-02-17 15:27:36
    代码审计是企业安全运营的重要步骤,也是安全从业者必备的基础技能。本书详细介绍代码审计的设计思路以及所需要的工具和方法,不仅用大量案例介绍了实用方法,而且剖析了各种代码安全问题的成因与预防方案。无论是...
  • 第8章介绍代码审计过程中的一些重要技巧。第三部分主要介绍PHP安全编程规范,从攻击者的角度来告诉你应该怎么写出更安全的代码,包括第9~12章,第9章介绍参数的安全过滤;第10章介绍PHP中常用的加密算法;第11章从...
  • Java代码审计

    2019-08-06 23:16:29
    该课程从代码审计与渗透测试优缺点对比讲起,讲解了为什么前端防护都是纸老虎、如何从后端防护来防止漏洞被利用。学好该课程对于渗透的朋友能更彻底的了解漏洞的原理、开发的朋友能写出没有漏洞的代码。课程当中会...
  • Seay PHP代码审计工具

    2012-10-14 11:50:16
    软件名: Seay PHP代码审计工具 软件版本: Version 2.0 作者: Seay 博客: http://www.cnseay.com/ 文档编写时间: 2012年10月13日 那为什么写PHP的呢?从目前主流的四大动态网页编程(ASP/ASPX/...
  • 本人目前就读重庆某软件学院软件测试专业,将于2013年1月底毕业,为了扎实基础,于是有时间就会找一些源码研究,有时候想走走捷径,提高下效率,于是开始找一些代码审计的工具,但是目前国内貌似没有发现专业的这类...
  • 2013年7月15日 Seay源代码审计系统2.0 1.增加mysql执行监控,可以监控自定义断点后执行的所有SQL语句,方便调试SQL注入 2.更换在线升级,安装好之后下次更新可以直接在线升级,无需重新安装 3.更换皮肤,去除图片...
  • python动态代码审计

    2018-08-30 11:01:40
    kcon议题《python 动态代码审计》,我已经将上面的所提到的技术广泛的用在我自己的工作之中,为我自己节省了大量的时间和精力。并且通过比较多实践,我把一些繁琐的过程和步骤做了简化,也填了大大小小的坑。...
  • 前言本小节我们就来总结一下在PHP代码审计中常用到的代码审计思路敏感函数回溯参数过程 根据敏感函数的来逆向追踪参数的传递过程,是目前使用的最多的一种方式,因为大多数漏洞是由于函数的使用不当造成的。...

    前言

    本小节我们就来总结一下在PHP代码审计中常用到的代码审计思路

    敏感函数回溯参数过程

             根据敏感函数的来逆向追踪参数的传递过程,是目前使用的最多的一种方式,因为大多数漏洞是由于函数的使用不当造成的。另外非函数使用不当的漏洞,如sql注入,也有一些特征,比如select、insert等,再结合from和where等关键字,我们就可以判读是否是一条SQL语句,通过对字符串的识别分析,就能判读这个sql语句里面的参数有没有使用单引号过滤,或者根据我们的经验来判断。就像是HTTP头里面的HTTP_CLIENT_IP和HTTP_X_FORWARDFOR等获取到的IP地址经常没有安全过滤就直接拼接到了SQL语句中,并且由于它们是在$_SERVERE变量中不受GPC的影响,那我们就可以去查找HTTP_CLIENT_IP和HTTP_X_FORWARDFOR关键字来快速寻找漏洞。

            这种方式的优点是只需要搜索相关敏感关键字,即可以快速第挖掘想要的漏洞,具有可定向挖掘和高效、高质量的优点。

            缺点是由于没有通读代码对程序的整体框架了解不够深入,在挖掘漏洞时定位利用点会花费一点时间,另外对逻辑漏洞挖掘覆盖不到。

    通读全文代码

            前面提到的根据敏感关键字来回溯传入的参数,是一种逆向追踪的思路,我们也提到了这种方式的优点与缺点,实际上在需要快速寻找漏洞的情况下用回溯参数的方式是非常有效的,当这种方式斌不适合运用在企业中做安全运营时的场景,在企业中做自身产品的代码审计时,我们需要了解整个应用的业务逻辑,才能挖掘到更多有价值的漏洞。

            通读全文代码也有一定的技巧,并不是随便找个文件逐个读完就可以了,这样你是很难真正读懂这套web程序的,也很难理解代码的业务逻辑。

    方法:

            首先我们要看程序的大体代码结构,如主目录有哪些文件,模块目录有哪些文件,插件目录有哪些文件,处理关注有哪些文件,还要注意文件的大小、创建时间。我们根据这些文件的命名就可以大致了解这个程序实现了哪些功能,核心文件时哪些。

    下图是discus的程序主目录:


    在看程序目录的时候我们要特别注意以下几个文件:

    (1)函数集文件,通常命名中包含functions或者common等关键字,这些文件里面是一些公共的函数,提供给其他文件统一调用,所以大多数文件都会在文件头部包含到其他文件。寻找这些文件一个非常好用的技巧就是打开index.php或者一些功能性文件,在头部一般都会找得到的。

    (2)配置文件,通常命名中包括config关键字,配置文件包括web程序运行必须的功能性配置选项以及数据库等配置信息。从这个文件中可以了解程序的小部分功能,另外看这个文件的时候注意观察配置文件中参数值是单引号还是双引号括起来,如果是双引号,则很可能会存在代码执行漏洞。

    (3)安全过滤文件,安全过滤文件对我们做代码审计至关重要,关系到我们挖掘到的可疑点能不能利用,通常命名中有filter、safe、check等关键字,这类文件主要是对参数进行过滤,比较常见的是针对sql注入和XSS过滤,还有文件路径、执行的系统命令参数、其他的则相对较少见。目前大多数引用独对在程序的入口循环对所有参数使用addslshes()函数进行过滤。

    (4)index文件,index是一个程序的入口文件,所以通常我们只要读一遍index文件就可以大致了解整个程序的架构、运行的流程、包含到的文件,其中核心的文件又有哪些。而不同目录的index文件也有不同的实现方式,建议最好先将几个核心目录的index文件都简单的读一遍。

        上面介绍我们应该注意的部分文件,可以帮助我们更有方向的去读全部的代码,实际上在我们真正做代码审计的时候经常会遇到各种框架,这时候就会被搞得晕头转向,所以在学习代码审计的前期建议不要去读开源框架或者使用开源框架的应用,先去chinaz\admin5之类的源码下载网站读一些小程序,并且一定要多找几套程序通读全文代码,这样我们才能总结经验,等总结了一定的经验,对PHP也比较熟悉了之后再去读那些框架(thinkphp、Yii、Zend Frameword)等开源框架,才能快速的挖掘出高质量的漏洞。

        通读代码的好处显而易见,可以更好的了解程序的架构以及业务逻辑,能够挖掘到更多、更高质量的逻辑漏洞,一般老手都会比较喜欢这种方式。而缺点就是花费的时间长,如果程序比较大,读起来也比较累。

    根据功能点定向审计

          在有了一定的代码审计经验之后,一定会知道哪些功能点通常会有哪些漏洞,在我们想要快速挖掘漏洞的时候就可以这样来做,首先安装好并且运行程序,到处点点,浏览一下,看一下程序有哪些功能,这些功能的程序文件分别是怎样的,是独立的模块还是以插件的形式存在,或者是写一个通用类里面,然后多处调用。在了解了这些功能的存在形式之后,可以先寻找经常会出现问题的功能点,简单黑盒测试一下,如果没有发现很普通、很常见的漏洞,再去读这个功能的代码,这样我们读起来就可以略过一些刚才黑盒过的测试点,提高审计速度。

         根据经验,下面简单的介绍几个功能点经常会出现的漏洞,如下:

    (1)文件上传功能:这里说的文件上传功能在很多功能点都会出现,比如像文章的编辑、资料编辑、头像上传、附件上传,这个功能最常见的漏洞就是任意文件上传了,后端程序没有严格限制上传文件的格式、导致可以直接上传或者存在绕过的情况,而除了文件上传功能之外,还经常发生SQL注入漏洞。因为一般程序员都不会注意到对文件名进行过滤,但是有需要把文件名保存到数据库中,所以就会存在sql注入漏洞。

    (2)文件管理功能。在文件管理功能中,如果程序将文件名或者文件路径直接在参数中传递,则很有可能会存在任意文件操作的漏洞,比如任意文件读取等等,利用的方式是在路径中使用../或者..\跳转目录。

    (3)登录认证功能。登录认证功能不是指一个登录过程,而是整个操作过程中的认证,目前的认证方式大多是基于Cookie和Session,不少程序会把当前登录的用户账号等认证信息放到Cookie中,或许是加密方式,是为了保持用户可以长时间登录,不会一退出浏览器或者Session超时就退出账户,进行操作的时候直接从Cookie中读取出当前用户信息,这里就存在一个算法可信的问题,如果这段Cookie信息没有加salt一类的东西,就可以导致任意用户登录漏洞,只要知道用户的部分信息,即可生成认证令牌,甚至有的程序会直接把用户明文放到Cookie中,操作的时候直接取这个用户名的数据,这也是常说的越权漏洞。

    (4)找回密码功能。找回密码虽然看起来不像任意文件上传这种可以危害到服务器安全的漏洞,但是如果可以重置管理员的密码,也是可以间接控制业务权限甚至拿到服务器权限的。而找回密码功能的漏洞很多利用场景,最常见的是验证码爆破,目前特别是APP应用中,请求后端验证码的时候大多是4位,并且没有限制验证码错误的次数和有效时间,于是就出现了爆破的漏洞。除此之外,还有验证码凭证的算法,这需要在代码中才能看到,所以我们做代码审计的时候可以看看这个算法是否可信。

    展开全文
  • 代码审计练习,从本地搭建环境到详细代码审计步骤再到漏洞验证一条龙。EasyTalk是国内首款多用户PHP+Mysql开源微博客系统,支持网页、手机等多种方式发表和接收信息,EasyTalk微博客系统是由兰州乐游网络科技有限...
  • 代码审计报告

    2018-05-08 10:02:05
    代码审计报告,安全行业要写报告的可以参考一下!报告框架!
  • CSRF是什么CSRF(Cross-Site-request-forgery),中文名:跨站请求伪造,也被称为:one click attack/session riding,缩写为CSRF、XSRFCSRF可以做什么你可以这样理解CSRF攻击:攻击者盗用了你的身份,以你的名义发出...

    CSRF是什么

    CSRF(Cross-Site-request-forgery),中文名:跨站请求伪造,也被称为:one click attack/session riding,缩写为CSRF、XSRF

    CSRF可以做什么

    你可以这样理解CSRF攻击:攻击者盗用了你的身份,以你的名义发出恶意请求。CSRF能够做的事情包括:以你的名义发送邮件、发消息、盗取你的账号、甚至购买商品等等。

    造成的问题主要是:个人隐私泄露以及财产安全。

    CSRF漏洞现状

    CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的Blog网站)、YouTube和Baidu等等而现在互联网上许多设备对此无防备,以至于安全业界CSRF为“沉睡的巨人”

    审计csrf

    敏感表单是否使用token验证

    防御策略

    • 验证HTTP Reference字段
    • 在请求地址中添加token验证
    • 在HTTP头中自定义属性并验证
    展开全文
  • XXE介绍现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook、paypal等等。 举个例子,我们扫一眼这些网站最近奖励的漏洞,充分证实了前面的说法。...

    XXE介绍

    现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook、paypal等等。 举个例子,我们扫一眼这些网站最近奖励的漏洞,充分证实了前面的说法。尽管XXE漏洞已经存在了很多年,但是它从来没有获得它应得的关注度。很多XML的解析器默认是含有XXE漏洞的,这意味着开发人员有责任确保这些程序不受此漏洞的影响。 

    0×01. 什么是XML外部实体?

    如果你了解XML,你可以把XML理解为一个用来定义数据的东东。因此,两个采用不同技术的系统可以通过XML进行通信和交换数据。 比如,下图就是一个用来描述一个职工的XML文档样本,其中的’name’,'salary’,'address’ 被称为XML的元素。

    有些XML文档包含system标识符定义的“实体”,这些XML文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’。


    在上面的代码中, XML外部实体 ‘entityex’ 被赋予的值为:file://etc/passwd。在解析XML文档的过程中,实体’entityex’的值会被替换为URI(file://etc/passwd)内容值(也就是passwd文件的内容)。 关键字’SYSTEM’会告诉XML解析器,’entityex’实体的值将从其后的URI中读取。因此,XML实体被使用的次数越多,越有帮助。

    0×02. 什么是XML外部实体攻击?

    有了XML实体,关键字’SYSTEM’会令XML解析器从URI中读取内容,并允许它在XML文档中被替换。因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现。 简单来说,攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件)。比如,下面的代码将获取系统上folder/file的内容并呈献给用户。

    0×03. 怎么甄别一个XML实体攻击漏洞?

    最直接的回答就是: 甄别那些接受XML作为输入内容的端点。 但是有时候,这些端点可能并不是那么明显(比如,一些仅使用JSON去访问服务的客户端)。在这种情况下,渗透测试人员就必须尝试不同的测试方式,比如修改HTTP的请求方法,修改Content-Type头部字段等等方法,然后看看应用程序的响应,看看程序是否解析了发送的内容,如果解析了,那么则可能有XXE攻击漏洞。

    0×04. 如何确认XXE漏洞?

    出于演示的目的,我们将用到一个Acunetix维护的demo站点,这个站点就是: http://testhtml5.vulnweb.com/。这个站点可用于测试Acunetix web扫描器的功能。 访问 http://testhtml5.vulnweb.com/ 站点,点击 ‘Login’下面的 ‘Forgot Password’ 链接。注意观察应用程序怎样使用XML传输数据,过程如下图所示:

    请求:

    响应:


    观察上面的请求与响应,我们可以看到,应用程序正在解析XML内容,接受特定的输入,然后将其呈现给用户。为了测试验证XML解析器确实正在解析和执行我们自定义的XML内容,我们发送如下的请求

    修改后的请求和响应:

    如上图所示,我们在上面的请求中定义了一个名为myentity、值为’testing’的实体。 响应报文清晰地展示了解析器已经解析了我们发送的XML实体,然后并将实体内容呈现出来了。 由此,我们可以确认,这个应用程序存在XXE漏洞。

    0×05. 如何进行XXE攻击?

    Code 1:

    1. To read files on same server:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <!DOCTYPE foo [ 
    
    <!ENTITY myentity SYSTEM "file:///location/anyfile" >]>
    
    <abc>&myentity;</abc>

    2. To crash the server / Cause denial of service:

    <?xml version="1.0"?>
    
    <!DOCTYPE lolz [
    
    
    <!ENTITY lol "lol">
    
    <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    
    ]>
    
    <lolz>&lol9;</lolz>

    上面样例代码1中的XXE漏洞攻击就是著名的’billion laughs’(https://en.wikipedia.org/wiki/Billion_laughs)攻击,该攻击通过创建一项递归的 XML 定义,在内存中生成十亿个”Ha!”字符串,从而导致 DDoS 攻击。

    原理为:构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,解析非常慢,造成了拒绝服务器攻击。除了这些,攻击者还可以读取服务器上的敏感数据,还能通过端口扫描,获取后端系统的开放端口。

    影响:

    此漏洞非常危险, 因为此漏洞会造成服务器上敏感数据的泄露,和潜在的服务器拒绝服务攻击。

    补救措施:

    上面讨论的主要问题就是XML解析器解析了用户发送的不可信数据。然而,要去校验DTD(document type definition)中SYSTEM标识符定义的数据,并不容易,也不大可能。大部分的XML解析器默认对于XXE攻击是脆弱的。因此,最好的解决办法就是配置XML处理器去使用本地静态的DTD,不允许XML中含有任何自己声明的DTD。

    比如下面的Java代码,通过设置相应的属性值为false,XML外部实体攻击就能够被阻止。因此,可将外部实体、参数实体和内联DTD 都被设置为false,从而避免基于XXE漏洞的攻击。 

    以下是代码的第二段


    import javax.xml.parsers.DocumentBuilderFactory;
    
    import javax.xml.parsers.ParserConfigurationException; // catching unsupported features
    
    ...
    
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    
    try {
    
    // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-general-entities
    
    
    // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-general-entities
    
    
    String FEATURE = "http://xml.org/sax/features/external-general-entities";
    
    
    dbf.setFeature(FEATURE, false);
    
    
    // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-parameter-entities
    
    
    // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities
    
    
    FEATURE = "http://xml.org/sax/features/external-parameter-entities";
    
    
    dbf.setFeature(FEATURE, false);
    
    
    // Xerces 2 only - http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl
    
    
    FEATURE = "http://apache.org/xml/features/disallow-doctype-decl";
    
    
    dbf.setFeature(FEATURE, true);
    
    
    // remaining parser logic
    
    ...
    
    catch (ParserConfigurationException e) {
    
    // This should catch a failed setFeature feature
    
    logger.info("ParserConfigurationException was thrown. The feature '" +
    
    FEATURE +
    
    "' is probably not supported by your XML processor.");
    
    ...
    
    }
    
    catch (SAXException e) {
    
    // On Apache, this should be thrown when disallowing DOCTYPE
    
    logger.warning("A DOCTYPE was passed into the XML document");
    
    ...
    
    }
    
    catch (IOException e) {
    
    // XXE that points to a file that doesn't exist
    
    
    logger.error("IOException occurred, XXE may still possible: " + e.getMessage());.. }
    展开全文
  • 时隔刚好一年之久,源代码审计系统再次更新,这次主要优化审计体验,优化了漏洞规则,算是小幅更新,原来使用者打开程序会提示自动更新。 1.优化原有规则,增加文件上传、任意URL跳转、XSS等漏洞检测。 2.增加全文...
  • XSS漏洞大致分为三种反射型XSS漏洞存储型XSS漏洞基于DOM的XSS漏洞反射型XSS漏洞它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行它的特点是非持久化,必须用户...
  • 无过滤把用户可控的一些变量带入到了数据库的各种操作当中,并且没有做好过滤注册用户的使用检测用户名...就把查询出来的内容显示到这里where之后: 盲注Insert注入把要出的数据插入到这column里面去Delete注入盲注...
  • PHP代码审计

    千次阅读 2016-02-19 09:54:19
    2.4 代码注入 5 2.5 SQL注入 6 2.6 XPath注入 6 2.7 HTTP响应拆分 6 2.8 文件管理 6 2.9 文件上传 7 2.10 变量覆盖 7 2.11 动态函数 7 会话安全 8 3.1 HTTPOnly设置 8 3.2 domain设置 8 3.3 path设置
  • 一个Java应用的代码审计工作应该从哪里入手,对于新手来说也许会不知所措,如果在不了解整个应用系统情况下(包括业务功能、框架使用等)盲目的直接去阅读项目中源代码,往往会迷失在代码中导致漏洞误报漏报情况,...
  • 代码审计利器-Seay源代码审计系统

    万次阅读 2019-05-31 22:58:05
    Seay压缩文件 解压Seay后进行安装 一路默认即可 下载安装.net相关组件即可正常使用 ...就会开始审计 进度显示在下方 我们可以点击生成报告,方便持续跟踪审计 在浏览器中查看,漏洞类型,文件路径,可疑函...
  • 但是同样会有很多弊端,通过逆向回溯的方式只能对通用漏洞进行快速审计,不能全面挖掘更有价值的漏洞,如果在时间允许的情况下,企业中安全运营对自身产品进行代码审计,就需要了解整个应用的业务逻辑,比如越权类...

空空如也

1 2 3 4 5 ... 20
收藏数 6,810
精华内容 2,724
关键字:

代码审计