Web渗透07_脚本代码注入和OS命令注入( 恐怖级别 )

1 PHP代码注入

1.1 原理成因

网站对用户的输入过滤出现问题,同时网站的脚本编写用到一些危险函数 eval(),assert()。若是被攻击者发现漏洞,直接可能形成攻击者彻底控制整个web甚至是服务器。至关于web后门的存在。php

若是服务器没有正确的配置,web用户的权限相对较高,那就不可描述天马行空了。linux

1.2 相关函数

1.2.1 eval()

eval()会将字符串看成 php 代码执行。web

<?php @eval($_POST['shell']);?>正则表达式

用post方法接收变量shell,把变量shell里面的字符串当作php代码来执行。** 变量shell也称为密码,经常使用蚁剑菜刀等工具进行后门链接。**shell

因此,只要咱们能经过post 方法,以 shell为变量名,值为执行代码就能够直接经过post 来操做对方的网站,菜刀也是经过这样的方法,不过他传入的代码比较复杂。windows

shell=phpinfo(); shell=${phpinfo();}数组

1.2.2 assert()

eval()一致。服务器

1.2.3 preg_replace()

preg_replace 函数执行一个正则表达式的搜索和替换。session

preg_replace 函数执行一个正则表达式的搜索和替换。函数

语法
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。
参数说明:

  • $pattern: 要搜索的模式,能够是字符串或一个字符串数组。

  • $replacement: 用于替换的字符串或字符串数组。

  • $subject: 要搜索替换的目标字符串或字符串数组。

  • $limit: 可选,对于每一个模式用于每一个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

  • $count: 可选,为替换执行的次数。

preg_replace("\/[(.*)\]/e", '\\1', $code); 这里的$code会被执行

1.2.4 call_user_func()

call_user_func(callable $callback, mixed $parameter = ?, mixed $... = ?): mixed

第一个参数是用户的函数,从第二个起就是这个函数的参数。

<?php
function barber($type)
{
    echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

1.2.5 $a($b) 可变函数 动态函数

$a做为一个变量存储可变的函数名称。传来的信息便可成为执行函数。

<?php
$a = 'eval' ;
$a( "phpinfo();") ; == eval("phpinfo();")
?>

1.3 漏洞利用

  • 直接获取shell: <?php @eval($_POST['shell']);?>

  • 获取当前文件路径: __FILE__返回当前文件的绝对路径 print(__FILE__)

  • 读文件: file_get_contents()读取已知路径且具备读写权限的文件。
    C:\windows\system32\drivers\etc\hosts # Windows的 host文件地址

  • 写文件: file_put_contents()写已知路径且具备读写权限的文件
    先提交这段代码file_put_contents($_POST[1],$_POST[2]),再传入参数1=shell.php&2=<?php phpinfo();?>
    建立shell.php 而且写入了一句话。

除了获取shell其余都不是那么重要,工具里都已经写好了,直接经过工具一连,什么都有了。

1.4 防护方法

尽可能不要用eval等函数。严格的用户过滤。经过配置文件disable_functions禁止某些函数的使用。

1.5 漏洞实例 SEAcms 6.26

存在 php代码注入漏洞

漏洞点:?searchtype=5&tid=&area=phpinfo()

2 OS命令注入 Command Injection

脚本语言开发网站功能十分迅速,可是,若是咱们须要用到一些其余语言编写的程序呢,把结果返回给用户。那就会用系统的一些命令去执行其余语言编写的程序。只要涉及到了这些,那么极可能就会存在用户输入没有过滤而致使命令执行漏洞

2.1 漏洞危害

几乎你的命令窗口能干什么,这个漏洞就能干什么....

2.2 相关函数

2.2.1 system()

system($str)能够将字符串做为系统命令执行,并有结果显示。

2.2.2 exec()

exec($str) 函数能将字符串做为 OS命令执行,须要输出结果。

print exec($str);

2.2.3 shell_exec()

shell_exec($str) 函数能将字符串做为 OS命令执行,须要输出结果。

print shell_exec($str);

2.2.4 passthru()

passthru($str) 函数能将字符串做为 OS命令执行,不须要输出结果。

2.2.5 popen()

popen($str)函数能将字符串做为 OS命令执行,没有结果显示,而是返回一个文件指针,咱们能够将结果写入一个文件中,再查看便可。

popen("ipconfig >> 1.txt");

2.2.6 `` 反引号

反引号函数能将字符串做为 OS命令执行。

2.2.3 漏洞利用

基本就是一些 系统命令的利用。这里再也不详述。

windows linux mac 各类系统命令。

DVWA

一个本地渗透测试的平台。包含

  • CSRF
  • Command Injection
  • Insecure CAPTO
  • WEEK session ID
  • File inclusion
  • File Upload
  • SQL injection
  • XSS
  • JavaScript

漏洞的测试。

知识点:

windows 或 linux 下: command1 && command2 先执行 command1,若是为真,再执行 command2 command1 | command2 只执行 command2 command1 & command2 先执行 command2 后执行 command1 command1 || command2 先执行 command1,若是为假,再执行 command2 命令执行漏洞(| || & && 称为 管道符

相关文章
相关标签/搜索