background image
任意代码执行存在哪些漏洞?
0x00 什么是任意代码执行
当应用在调用一些能将字符串转化成代码的函数(如 PHP 重的 eval)时,没有考虑用户是
否能控制这个字符串,将造成代码注入漏洞。狭义的代码注入通常指将可执行代码注入到当
前页面中,如 PHP 的 eval 函数,可以将字符串代表的代码作为 PHP 代码执行,当用户能够
控制这段字符串时,将产生代码注入漏洞(也称命令执行)。广义上的代码注入,可以覆盖
大半安全漏洞的分类。
0x01 为什么存在任意代码执行
几种常用函数语言,都有将字符串转化成代码去执行的相关函数。
PHP ===> eval( ),assert( )
Python ===> exec( )
Asp ===>
<%=CreateObject("wscript.shell").exec("cmd.exe /c
ipconfig").StdOut.ReadAll()%>
0x02 为什么使用执行代码函数
应用有时候会考虑灵活性、简洁性,在代码中调用 eval 之类的函数去处理。
1
2
3
4
5
function
string2array(%data){
if
(
$data
==
''
)
return array
();
@eavl(
"\$array = $data"
);
return
$array
;