admin管理员组

文章数量:1794759

靶机实战(1):Empire LupinOne

一、主机发现

启动虚拟机,直接就获得了主机的IP地址。

二、端口发现(服务、组件)

使用命令sudo nmap 10.58.81.112 -n -Pn -p- --reason -sV -sC -O,获得主机开放的端口、提供的服务、使用的组件、组件的版本。

开发的端口

提供的服务

使用的组件

组件的版本

22/tcp

ssh

OpenSSH

8.4p1

80/tcp

http

Apache

httpd 2.4.48

-

-

Linux

4.15 - 5.6

三、漏洞发现(获取权限)

### 22端口/ssh服务

#### 01、组件漏洞

使用命令searchsploit OpenSSH,未发现OpenSSH 8.4p1组件的Nday漏洞。

#### 02、弱口令漏洞

使用命令hydra -C /usr/share/seclists/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt 10.58.81.112 ssh,未发现弱口令漏洞。

换一个字典,使用命令hydra -C /usr/share/wordlists/legion/ssh-betterdefaultpasslist.txt 10.58.81.112 ssh,仍未发现弱口令漏洞。

### 80端口/http服务

#### 01、组件漏洞

使用命令searchsploit Apache,未发现Apache httpd 2.4.48组件的Nday漏洞。

使用命令searchsploit Apache | grep -i httpd,未发现Apache httpd 2.4.48组件的Nday漏洞。

#### 02、URL发现(目录、文件)

1、访问首页/,发现啥也没有,是静态页面,妥妥的CTF风格。

2.1、在端口发现(服务、组件)阶段,已经发现存在/robots.txt文件,且暴露了/~myfiles/目录。

.txt

访问,发现啥也没有。

2.2、使用命令dirb -r对网站目录和文件进行爆破,未发现新的目录和文件。

2.3、使用命令dirb / -r对/~myfiles/下的目录和文件进行爆破,未发现新的目录和文件。完了,game over了。

3.1、因为目录/~myfiles/前面有个~,是常规目录爆破字典里没有的,这可能是目标网站的特性,所以决定尝试爆破~前缀的目录。

使用命令wfuzz -c -z /usr/share/seclists/Discovery/Web-Content/common.txt –hc 404 ,还真发现了新的目录。

3.2、使用命令dirb http://10.58.81/112/~secret/ -r对/~secret/下的目录和文件进行爆破,发现有个文件/~secret/index.html。

访问文件/~secret/index.html,发现提示/~secret/目录下存在“我”的SSH私钥文件,看来目录爆破的强度是不够的,得用模糊测试。

同时还提示了“我”的名字是icex64,看来使用账号“icex64”和SSH私钥文件就能登录SSH服务了。

3.3、使用命令wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -z list,".txt"- --hc 403,404 ,通过无文件后缀和“.txt”文件后缀两种后缀,并未发现SSH私钥文件。

3.4、难道是文件后缀不对?还是文件名字典不行?又或者是文件名要加前缀?是加~前缀吗?既然是SSH私钥文件,那就试试加.前缀吧。

使用命令wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -z list,".txt"- --hc 403,404 /.FUZZFUZ2Z进行模式测试,发现SSH私钥文件/~secret/.mysecret.txt。

### 22端口/ssh服务

#### 03、私钥泄露

1、一般使用SSH账号和SSH私钥文件就能登录SSH服务了,但这个SSH私钥文件不知道被什么加密或编码了。如果是被加密就没辙了,没有解密算法和密钥。只能碰运气希望是被编码了,最终使用base58解码成功。

2.1、使用账号“icex64”和SSH私钥文件登录SSH服务,发现因为SSH私钥文件的文件权限是0644,可以被其它用户访问,不够安全,所以SSH服务就自动跳转成SSH密码登录了。使用命令chmod 0600 mysecret删除其它人访问SSH私钥文件的权限。

使用账号“icex64”和SSH私钥文件登录SSH服务,发现SSH私钥文件需要解密密钥。各位运维人员,你们看看这是人干的事吗。

2.2、使用命令/usr/share/john/ssh2john.py mysecret > mysecret.john将SSH私钥文件转成John需要的格式。

使用命令john mysecret.john --wordlist=/usr/share/wordlists/fasttrack.txt爆破SSH私钥文件的解密密钥,得到P@55w0rd!。各位运维人员,你们看看这才是人干的事。

3、使用账号“icex64”、SSH私钥文件、SSH私钥文件的解密密钥P@55w0rd!,最终成功登录SSH服务。

四、提升权限

#### 01、perm

使用命令find -perm 4000 2>/dev/null查看系统中的特权命令,未发现。

### 02、sudo

1、使用命令sudo -l查看当前用户的特权命令,发现可以免密使用arsene用户的身份执行/usr/bin/python3.9 /home/arsene/heist.py命令。

遗憾的是,arsene用户和icex64用户一样,都是普通用户,就算拿到arsened 的用户权限,也只是越权,还不是提权。

更遗憾的是,/usr/bin/python3.9和/home/arsene/heist.py命令都没有write权限,无法写入提权命令。

2、柳暗花明的是,/home/arsene/heist.py文件中import了webbrowser模块文件。如果有webbrowser.py文件的write权限,写入提权命令也是有效的。

幸运的是,有webbrowser文件的write权限,路径是/usr/lib/python3.9/webbrowser.py。

3、在GTFOBins搜索Python提权命令:

在/usr/lib/python3.9/webbrowser.py文件中写入提权命令。

4、免密使用arsene用户的身份执行/usr/bin/python3.9 /home/arsene/heist.py命令,获得arsene用户的权限,成功越权。

参考文章:

  1. Python提权文章,发布于2021-06-03:Linux Privilege Escalation: Python Library Hijacking[1]
  2. Python提权文章的中文翻译,发布于2021-06-09 :Linux提权:Python脚本利用劫持的三种方法[2]
  3. 该靶机网址,发布于2021-10-21:Empire: LupinOne[3]
  4. 猜测:靶机作者很有可能参考该Python提权文章,设计了该漏洞。

### 03、sudo

1、使用命令sudo -l查看当前用户的特权命令,发现可以免密使用root用户的身份执行/usr/bin/pip命令。

2、在GTFOBins搜索pip提权命令:

3、免密使用root用户的身份执行/usr/bin/pip命令,获得root用户的权限,成功提权。

参考资料

[1]

Linux Privilege Escalation: Python Library Hijacking: /

[2]

Linux提权:Python脚本利用劫持的三种方法:

[3]

Empire: LupinOne: ,750/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2023-12-08,如有侵权请联系 cloudcommunity@tencent 删除登录服务漏洞权限测试

本文标签: 靶机实战(1)Empire LupinOne