这是一篇基于靶场的实战文章,主要学习的点有:
1、nmap基本使用
2、tornado框架
3、dig命令使用
4、xxe漏洞利用
5、SSTI漏洞利用
6、Linux提权手法
靶机地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova
首先,该靶场使用nmap进行端口探测,包括了服务版本探测等等
这里分析,靶场开启了53端口,dns的开放,用于域名解析,同时80和9999端口开放运行了web服务,开启的事tornado框架,事一个python的web框架,它可以用于搭建与i个高性能的web应用程序
我们正常通过80端口访问,是一个主界面,查看了页面的源代码
重点查看注释的这一部分
这里有一个提示,是用get参数page_no进行查看页面
这里加上page_no=1
页面确实有变化,那么就可以使用burp进行爆破,最后发现21参数页面返回信息有所不同
翻译过来就是
这里提示我们他创建了很多子域,并且给出了我们一个域名将域名添加到本地hosts文件下进行访问(在一台服务器上运行多个web服务有三种方法:1、不同web服务使用不同的IP。2、不同web服务使用同一个IP的不同端口。3、对于同一个IP同一个端口可以给不同的web服务设置不同的域名,域名不同,访问的端口不同),这里显然是第三种,
所以我们需要在host文件中添加上它的这个子域名,我们需要对他单独解析
这里在使用之后,访问域名没有什么特别的,提示我们需要dig
这里使用dig命令,(dig命令是一个用于查询DNS域名解析信息的工具。它可以用于查询域名服务器、获取IP地址、验证DNS记录等)
使用dig尝试对目标域进行axfr查询
这里成功查到信息,其中显示了一些其他的域名,将这些域名加入本地hosts文件中挨个访问。最终在hackerkid.blackhat.local域名下找到了一个注册界面,无论怎么尝试都显示邮箱错误
但是这里值得注意的就是将邮箱信息反馈给了我们,也就是说他其实是接收了我们传递过去的值,那么我们使用burp进行抓包看看
这里我们看到注册信息是通过xml进行传输的,可以尝试利用xxe漏洞
这里尝试读取文件,成功
在文档中发现saket用户存在bash环境,尝试读取一些文件,(由于服务端是php环境,所以对于某些读不出开文件时,可以使用php封装器对文件进行编码在读取),这里读取到bashrc文件里面的内容
解码后发先里面包含了一个用户名和密码。
网站除了开放了80端口以外,还开放了9999端口提供web服务,查看9999端口的web服务,发现在运行一套后台程序,需要用户名和密码进行登陆,这里使用得到的用户名和密码在进行登陆,经过尝试,发现saket用户名,密码是得到的密码。
登录进入后台之后,会有一段提示
这里猜测,需要使用name的一个参数
但是经过测试这里name的参数会显示在固定位置,不会发生变化,这里可以尝试利用ssti模板注入
这里对于ssti直接进行利用,具体分析文章另作总结
验证方式也很简单,直接使用{{2*2}}进行验证,如果返回是4,就证明存在该漏洞
那么尝试反弹shell,可以利用
但是这里没有成功,可能需要对语句进行编码,进行url编码,除了英文外的所有字符都需要
成功反弹
最后就是关于提权的内容了
本次提权很特殊,suid,自动任务,内核漏洞均无法完成提权,这里需要使用capabilities权限配置不当进行提权,capabilities是将linux的root权限进行细分,使用getcap命令查看文件的capabilities权限
但是直接执行getcap命令并不能执行,需要我们指定路径
这条语句是从根目录开始递归查找具有capabilities权限的文件,其中只有第一个权限可以尝试用来提权cap_sys_ptrace+ep提权相关
提权思路就是找到靶机上面以root权限运行的进程,利用脚本注入到进程里面实现提权,首先查看系统正在运行的root进程 ps -U root
这里可以发现有apache进行运行,这个相对来说比较稳定,可以进行注入
下载进程注入脚本,python进程注入脚本
脚本会默认主机开启5600端口,所以直接进行nc监听