1 PHP代码注入

1.1 原理成因

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

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

1.2 相关函数

1.2.1 eval()

eval()会将字符串当作 php 代码执行。

<?php @eval($_POST['shell']);?>

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

所以,只要我们能通过post 方法,以 shell为变量名,值为执行代码就可以直接通过post 来操作对方的网站,菜刀也是通过这样的方法,不过他传入的代码比较复杂。

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

1.2.2 assert()

eval()一致。

1.2.3 preg_replace()

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

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命令执行。

print ipconfig ;

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

命令执行漏洞(| || & && 称为 管道符

Web渗透07_脚本代码注入和OS命令注入( 恐怖级别 )的更多相关文章

  1. 跟bWAPP学WEB安全(PHP代码)--OS命令注入

    背景 这是温故知新的一个系列,也是重新拾起WEB安全的一个系列,同时希望能稍微有点对初学者的帮助.第一篇先来讲讲OS命令注入 bWAPP里面有两个页面也就是两个漏洞,来验证OS命令注入.一个是有回显的 ...

  2. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  3. OS命令注入

    SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...

  4. Burp学院-OS命令注入

    1.OS command injection, simple case. 最简单的命令执行,[|] 两个只要有一个为True就执行 2.Blind OS command injection with ...

  5. 关于OS命令注入的闭合问题

    1.在Windows下 windows下非常好办,只需要&肯定可以执行: C:\Users\xxx\Desktop>aaaa | 127.0.0.1 'aaaa' 不是内部或外部命令,也 ...

  6. WEB安全番外第五篇--关于使用通配符进行OS命令注入绕WAF

    一.通配符简介: 一般来讲,通配符包含*和?,都是英文符号,*用来匹配任意个任意字符,?用来匹配一个任意字符. 举个例子使用通配符查看文件,可以很名下看到打卡的文件是/etc/resolv.conf: ...

  7. OS命令注入中的空格

    1.bash 空格可以替换为%20.%09(tab).%2b(+) in url.{IFS} 2.Win shell 空格可以替换为%20.%09(tab).%0b.%0c.%2b(+) in url

  8. WEB安全第一篇--对服务器的致命一击:代码与命令注入

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  9. Web渗透三字经

    网络上曾流传一段Web渗透三字经,如下: 用搜索 找注入 没注入 就旁注 没旁注 用0day 没0day 扫目录 找后台 爆账户 传小马 放大马 拿权限 挂页面 放暗链 清数据 清日志 留后门 然后我 ...

  10. 安全测试5_服务端的安全漏洞(SQL注入、命令注入、文件操作类)

    前面大致讲解了下客户端的安全漏洞,现在来讲解下服务端的安全漏洞. 1.SQL注入(SQL Injection),是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库 ...

随机推荐

  1. 【转载】 解决VSCode运行或调试python文件无反应的问题

    ---------------- 版权声明:本文为CSDN博主「姜行者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn. ...

  2. 英特尔Movidius神经计算棒的介绍

    手上有一款英特尔Movidius神经计算棒,本打算疫情结束返回学校,突然得到非官方的通知告诉我只能等到9月份返校了,于是就想起这个被闲置的计算棒了,手上的是1代的计算棒,不过1代的和二代的使用起来方法 ...

  3. 多线程之interrupt与优雅停止一个线程

    1.背景 在实际开发中,我们可能会遇到终止某个线程的场景, 比如不断扫描数据库的发货订单时,这时候需停止扫描, 当然我们不能把程序关了,我们只希望停止扫描数据库这一个线程, 那么应该怎么办了? 这就可 ...

  4. vue之element图标库使用与第三方阿里云图标库使用

    1.背景 2.element图标库使用 假设要做一个如下效果 代码如下: <!-- 输入框--> <el-form label-width="0px" class ...

  5. 生态兼容性进一步提升!白鲸开源 WhaleStudio 与火山引擎ByteHouse完成产品互认

    数据作为新型生产要素,已快速融入生产.分配.流通.消费和社会服务管理等各环节,深刻改变着生产方式.生活方式和治理方式.越来越多企业也在尝试充分利用数据要素,开辟全新发展路径,进一步实现业务价值提升. ...

  6. 【原创】VSCode 快捷键汇总(已整理成一张 A4 纸大小,方便打印)

    由于经常记不住 VSCode 的快捷键,每次查找不方便,于是乎做了一份 VSCode 快捷键汇总,已整理成一张 A4 纸大小,方便打印,这样查找就直观多了~ 直接保存图片,横向打印即可.

  7. RabbitMQ接口封装

    1.引用 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client< ...

  8. android 访问域名接口报错

    1. 移动端访问https域名及接口,显示 java.net.UnknownHostException: Unable to resolve host "xxx" : No add ...

  9. SPSS25.0中文破解版安装教程及使用教程

    目录 第一步,下载链接: 下载并解压,管理员身份运行SPSS 25 64bit.exe: 第二步,安装过程一路默认,安装路径可以改变,然后等待安装完成即可: 第三步,安装完成后,立即启动SPPS; 第 ...

  10. VC 单文档FormView视图增加打印预览

    1修改my.rc文件二处 3 TEXTINCLUDE BEGIN "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO ...