TryHackMe-Jurassic Park

在线靶机:Jurassic Park

靶机难度:中等

本文涉及:

  • SQL注入
  • sudo-scp提权

信息收集

nmap扫描,显示目标开放了两个端口。

  • 22 ssh
  • 80 http

nmap

接着扫描一下网站路径
dirb

尝试访问delete,但是没看懂表达什么意思。
没看懂..

robots也是一无所获。
robots

从首页进来后会发现一个商店界面,这恐龙还蛮帅的。不过我没看过侏罗纪这电影。
Dinosaur

随便点击一个购买页面进去后,很显然的,我们发现了一个是get传值可能存在sql注入漏洞的页面。
sql_in

sql注入

?id=3 and 1=2发现页面返回了一个空页面,确认存在注入。

而且好像是不用闭合的。但是我在判断闭合的时候发现如果输入了'的话,会触发WAF导致'被过滤。

sql

所以这还是有WAF的?

sd

这个还是简单的,用联合注入就好,判断列数后,判断显示位之后就正常查询information就好了。
select1

但是有个问题,当查询username后,会触发WAF。所以判断username'是关键词。

这里我已经查询出密码字段了,但是没有帐号。
password

最后在网页中也实在找不到了什么线索了,重新回到sql注入页面中,重新注入,看有没有遗漏了什么。最后在items表中查询id后发现还有两个id是不在商店页面显示的。

items-id

找到了一个用户名,但是我们还不确定是不是不过可以先记着。同时我们也知道了WAF的关键词。
username

因为服务器只开启了sshhttp端口,而且我也扫不出后台。只好用这密码和上面那个用户名去登录试试。

login-ssh

运气不错,还是登录成功了。进来之后我们就能立马找到第一个flag了。

第一个flag。flag1

用find命令找到第二个flag-flagTwoflag-two

第三个flag藏在.bash_history找了半天

最后一个flag需要我们提权。flag5

可以看到虽然有一个test.sh直接告诉了我们flag5在哪里,但是我们是无法成功执行这个脚本命令的,因为普通用户没有权限去查看root的家目录。

提权

但是我们还有scp啊。

It runs in privileged context and may be used to access the file system, escalate or maintain access with elevated privileges if enabled on sudo.

利用方式如下

scpshell
1
2
3
4
TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
sudo scp -S $TF x y:

现在我们已经获得root权限了。
root

TF=$(mktemp) #在tmp目录下生成一个临时文件,并把路径赋给变量TF。所以$TF是一个文件。

echo 'sh 0<&2 1>&2' > $TF #将sh 0<&2 1>&2内容添加到TF文件中,从标准错误输出中读取输入写入到键盘输入中,然后又将标准输出的输出写入到标准错误输出中。所以最后是变成了标准输出的输入重定向到了键盘输入中了?

chmod +x "$TF" #给予可执行权限

sudo scp -S $TF x y: #指定加密传输时使用$TF这个脚本程序,后面的x代表一个本地文件,y代表远端Ip。这里后面的x,y代表的是什么都无所谓了。因为会先执行$TF这个脚本文件。所以你写aaa还是bbb都无伤大雅,但是冒号一定要带上。
aaa

所以我们也可以改写成python反弹shell到攻击机上。
python

总结

这好像是我在TryHackMe上面完成的第一个高难度的靶机?其实实际上做起来感觉也不是很难。。

所以我在这一个靶机上学会了:

  • scp sudo提权