代码审计及安全测试方法有什么?老男孩网络安全培训
老男孩IT教育
常见问题
2020年12月9日 14:11
网络安全学习中,源代码审计是较为重要的一项。那么源代码审计有哪些分类?审计方法有什么?代码安全测试方法有哪些?看老男孩教育网络安全培训怎么说。
网络安全学习中,源代码审计是较为重要的一项。那么源代码审计有哪些分类?审计方法有什么?代码安全测试方法有哪些?看老男孩教育网络安全培训怎么说。
源代码审计分为白盒、黑盒、灰盒
白盒:拥有源代码进行审计
黑盒:不知道源代码的情况下进行渗透审计
灰盒:介于黑盒与白盒之间
审计方法总结
主要代码审计方法是跟踪用户输入数据和敏感函数参数回溯:
跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑
可以是一个函数,或者是条小小的条件判断语句。
敏感函数参数回溯,根据敏感函数,逆向追踪参数传递的过程。这个方法是最高效,最常用
的方法。大多数漏洞的产生是因为函数的使用不当导致的,只要找到这些函数,就能够快速挖掘想要的漏洞。
代码安全测试方法
代码审核采用人工审核和静态分析工具辅助的方式进行。
人工审核:既能解决内部问题也能解决外部问题。这也是目前最有效率的解决方案,并且在理论上手工代码审核是非常有效的,但人工审核的效率不高,所以我们会采用自动化分析工具辅助人工的方式来提高审核效率。
静态分析工具:通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。
1,fortify
2,seay源代码审计
人工代码审计的通用思路
1、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
2、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
3、继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。
漏洞产生的原因
1、变量控制不严(一切输入都是有害)。
2、变量到达有利用价值的函数(一切进入函数的变量是有害的),漏洞的利用效果取决于最终函数的功能。
以下是基于关键词审计技巧总结:
在搜索时要注意是否为整个单词,以及小写敏感这些设置
php审计
命令执行漏洞
system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_open()
代码执行漏洞
eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map()
xss:常用的输出函数列表如下:
print、print_r、echo、printf、sprintf、die、var_dump、var_export,
文件读取函数列表如下:
file_get_contents()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()
sql注入关键字:
select、insert、update、、POST、$REQUEST、
上传漏洞关键字:
$_FILES 、move_uploaded_file
执行漏洞关键字:
shell_exec、exec、passthru
system、popen
包含漏洞关键字:
include、include_once、require、require_once
变量覆盖关键字: $$
跨站漏洞关键字:
echo、print、print_r、var_dump、var_exprot,insert
java审计
密码硬编码、密码明文存储:
password 、pass、jdbc
XSS:
getParamter、<%=、param.
任意文件下载:
download 、fileName 、filePath、write、getFile、getWriter
任意文件删除:
Delete、deleteFile、fileName 、filePath
文件上传:
Upload、write、fileName 、filePath
命令注入:
getRuntime、exec、cmd、shell
缓冲区溢出:
strcpy,strcat,scanf,memcpy,memmove,memeccpy, Getc(),fgetc(),getchar;read,printf
XML 注入:
DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser
SAXReader 、XMLReader
SAXSource 、TransformerFactory 、SAXTransformerFactory 、
SchemaFactory
反序列化漏洞:
ObjectInputStream.readObject
、ObjectInputStream.readUnshared、XMLDecoder.readObject
Yaml.load 、 XStream.fromXML 、 ObjectMapper.readValue 、
JSON.parseObject
url 跳转:
sendRedirect、setHeader、forward
不安全组件暴露:
activity 、 Broadcast Receiver 、 Content Provider 、 Service 、
inter-filter
日志记录敏感信息:
log log.info logger.info
代码执行:
eval、system、exec
工具局限性:
工具本身存在一定量的误报或者漏报。
扫描结果需要大量人工确定甄别。
如用多种语言开发的软件,则需单独分析。
使用工具缺乏规范化的编码规范。
不能自动收集常见的代码安全问题。
以上便是源代码审计相关的学习内容分享。更多网络安全学习,推荐关注老男孩教育网络安全培训课程。老男孩网络安全课程,全程面授教学,理论与实战相结合,定期考试检测学习成果,查漏补缺,帮助学员高效学习掌握网络安全技能。点击链接查看网络安全视频:https://www.oldboyedu.com/video_library.html