首页
社区
课程
招聘
[原创]浅谈Bypass disable_function
发表于: 2019-10-31 17:38 1574

[原创]浅谈Bypass disable_function

2019-10-31 17:38
1574

    2. LD_PRELOAD替换后

这种绕过行为实施起来很简单,并且不受PHP与Linux版本的限制,但是也很容易防御,只要禁用相关的函数(putenv)或者限制对环境变量的传递就可以了,但是要注意对现有业务是否造成影响。其实对于这个问题,早在08年就有人向PHP官方反馈过,只不过PHP给出的回复是你最好禁用putenv函数: 816K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1N6h3N6K6i4K6u0W2M7r3S2H3i4K6u0W2L8X3g2@1i4K6u0r3j5Y4g2Y4i4K6u0W2M7r3S2H3i4K6y4r3K9h3c8Q4x3@1b7@1y4U0M7@1x3b7`.`. ,所以我们有理由相信在后续的PHP版本中也不会对这个问题有什么针对性的解决方案。



要更改的话打开php.ini,找到对应的行修改即可,这里修改如下:
    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高
  • dl()
    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:高

    危险等级:中

    危险等级:中

    危险等级:中

    危险等级:中

    危险等级:中

    1.主程序

    // myverifypasswd.c
    #include <stdio.h>
    #include <string.h>
    #include "mystrcmp.h"
 
    void main(int argc,char **argv) {
        char passwd[] = "password";
        if (argc < 2) {
            printf("usage: %s <password>\n",argv[0]);
            return;
        }
        if (!mystrcmp(passwd,argv[1])) {
            printf("Correct Password!\n");
            return;
        }
        printf("Invalid Password!\n");
    }

     2.调用库      
	#include <stdio.h>
	int mystrcmp(const char *s1,const char *s2);

    3.生成动态链接库原始C文件
        // mystrcmp.c
	#include <stdio.h>
	#include <string.h>
	#include "mystrcmp.h"

	int mystrcmp(const char *s1,const char *s2)
	{
		return strcmp(s1,s2);
	}

	#include <stdio.h>
	int mystrcmp(const char *s1,const char *s2);

    3.生成动态链接库原始C文件
        // mystrcmp.c
	#include <stdio.h>
	#include <string.h>
	#include "mystrcmp.h"

	int mystrcmp(const char *s1,const char *s2)
	{
		return strcmp(s1,s2);
	}

        // mystrcmp.c
	#include <stdio.h>
	#include <string.h>
	#include "mystrcmp.h"

	int mystrcmp(const char *s1,const char *s2)
	{
		return strcmp(s1,s2);
	}

四、程序编译与试验



演示流程图


编译、设置

gcc mystrcmp.c -fPIC -shared -o libmystrcmp.so      
gcc myverifypasswd.c -L. -lmystrcmp -o myverifypasswd      
export LD_LIBRARY_PATH=/home/n6/桌面/LD_PRELOAD      #指定动态链接库所在目录位置
ldd myverifypasswd      #显示、确认依赖关系
./myverifypasswd      

gcc mystrcmp.c -fPIC -shared -o libmystrcmp.so      
gcc myverifypasswd.c -L. -lmystrcmp -o myverifypasswd      
export LD_LIBRARY_PATH=/home/n6/桌面/LD_PRELOAD      #指定动态链接库所在目录位置
ldd myverifypasswd      #显示、确认依赖关系
./myverifypasswd      

gcc mystrcmp.c -fPIC -shared -o libmystrcmp.so      
gcc myverifypasswd.c -L. -lmystrcmp -o myverifypasswd      
export LD_LIBRARY_PATH=/home/n6/桌面/LD_PRELOAD      #指定动态链接库所在目录位置
ldd myverifypasswd      #显示、确认依赖关系
./myverifypasswd      

五、替换库代码  



	// myhack.c
	#include <stdio.h>
	#include <string.h>
 
	int mystrcmp(const char *s1, const char *s2)
	{
    	printf("hack function invoked. s1=<%s> s2=<%s>\n", s1, s2);
    	// always return 0, which means s1 equals to s2--总是相等
    	return 0;
	}

六、替换并测试运行


替换流程图

替换流程图

七、实际应用测试



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 3083
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
补充一下b52K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4u0S2K9e0c8G2N6X3g2J5i4K6u0W2j5$3&6Q4x3V1j5J5x3o6p5&6i4K6u0r3x3o6y4Q4x3V1j5J5z5g2)9J5c8U0m8o6g2p5k6Q4x3X3b7J5x3o6p5&6i4K6u0V1g2$3q4D9L8r3u0J5k6h3q4C8k6i4u0Q4x3X3c8q4j5i4y4&6i4K6u0V1g2%4u0A6N6r3g2g2M7q4)9J5c8R3`.`.
2019-11-1 09:59
0
雪    币: 5372
活跃值: (140)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
Rai4over 补充一下f86K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4u0S2K9e0c8G2N6X3g2J5i4K6u0W2j5$3&6Q4x3V1j5J5x3o6p5&6i4K6u0r3x3o6y4Q4x3V1j5J5z5g2)9J5c8U0m8o6g2p5k6Q4x3X3b7J5x3o6p5&6i4K6u0V1g2$3q4D9L8r3u0J5k6h3q4C8k6i4u0Q4x3X3c8q4j5i4y4&6i4K6u0V1g2%4u0A6N6r3g2g2M7q4)9J5c8R3`.`.
Dear Dalao, please daidai wo
2019-11-1 10:18
0
雪    币: 8606
活跃值: (4973)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
github上面的bypass disable_function,基本都是需要putenv,putenv+那些执行命令的函数都disable后,再执行命令就难了
2019-11-5 21:47
0
雪    币: 5372
活跃值: (140)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
残废小菜比 github上面的bypass disable_function,基本都是需要putenv,putenv+那些执行命令的函数都disable后,再执行命令就难了
GitHub上原理分析到位了?也有不用putenv,利用_attribute_属性,等我之后的相关系列文章
2019-11-7 16:01
0
雪    币: 42927
活跃值: (65707)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
6
666,感谢分享!期待相关系列文章!
2019-11-7 16:19
0
游客
登录 | 注册 方可回帖
返回